回文 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
が無視されるというカラクリ.
その後に必要な引用符の整合性も同様の方法で解決できる.
[追記](警告が鬱陶しいので,セミコロン ';
' をカンマ ',
' に修正.)[更に追記]「続きを読む」記法(知らなかった…)で書き換えました.