10. Quine-relay
• A Ruby code
• that generates Rust code
• that generates Scala code
• …
• that generates REXX code
• that generates the original Ruby code
128 languages
involved
in total
11. Quine-relay
• A Ruby code
• that generates Rust code
• that generates Scala code
• …
• that generates REXX code
• that generates the original Ruby code
128 languages
involved
in total
26. プログラムのアスキーアート化
• 好きなプログラムを書く
– 空白は使わない
– 改行も使わない
– ¥ も使わない
• おまじないで囲む
p 42 p(42)
p(1)
p(2)
p(1);p(2)
puts("¥¥") puts(92.chr)
eval(%w( puts("Hello,world!") ).join)
この範囲を自由に整形可能
eval(%w( p u
t s ( " H
e l l o ,
w o r l d
! " ) ).join)
57. 放射線耐性 Quine の解説
• 文字列 x と y が一致したとき
どちらも破壊されていない 好きな方を eval すればよい
• 文字列 x と y が異なるとき
長い方は破壊されていない 長い方を eval すればよい
57
x = ”…プログラム…”
y = ”…プログラム…”
eval x if x == y
eval [x, y].max_by {|s| s.size }
次の疑問 :
文字列の外が破壊されたら?
たとえば、ここのダブルクォートが消えたら?