Slide 15
Slide 15 text
デコードする
b = Marshal.load(b.unpack("m")[0])
Quine 部分
e = "eval $s = %w" << 39 << ($s*3) # 39: シングルクォート のASCIIコード
構造データから AA を復元してコードで置き換え
o = ""
j = -1
0.upto(20 * 198 - 1) { |i| # 20, 198: それぞれAAの 縦・横の長さ
o << ((n[i] == 1) ? e[j += 1] : 32) # 32: スペース のASCIIコード
o << ((i % 198 == (198 - 1)) ? 10 : "") # 10: \n のASCIIコード
}
o[-17, 6] = "" << 39 << ".join" # 最後の6文字を '.join に置き換え