λx. x K S K @はてな

このブログ内に記載された文章およびコードの著作権は,すべて Keisuke Nakano に帰属します.

回文 Hello, World!

行コメントの文法がある言語では,回文で Hello, world! を書くのはさほど難しくない. たとえば,こちらにもあるように Ruby なら

puts"Hello, world!"#"!dlrow ,olleH"stup
と書けるし,Haskell なら
main=putStrLn"Hello, world!"--"!dlrow ,olleH"nLrtStup=niam
と書けばよい. しかし,範囲コメントの文法しかサポートしていない Objective Caml の場合は多少技巧が必要なので, パズルとして考えてみるのは面白いかも.
"00x\"^",print_endline"\x48ello, world!","!dlrow ,olle84x\"enildne_tnirp,"^"\x00"
引用符の直後の H\x48 にすることにより, 逆から読んだときに引用符がエスケープされて enildne_tnirp が無視されるというカラクリ. その後に必要な引用符の整合性も同様の方法で解決できる.

[追記](警告が鬱陶しいので,セミコロン ';' をカンマ ',' に修正.)
[更に追記]「続きを読む」記法(知らなかった…)で書き換えました.