hello, world × 3
CodeIQ で出題されていた、'hello, world' を異なる3種のプログラミング言語で出力する問題。
複数のプログラムで共通して使われる文字の種類が少ないほど高評価というもの(大文字と小文字は異なる文字と考える)。
挑戦者求む!hello, world × 3 by @Nabetani
hello, world × 3 出題
最初の解答にたどり着くまで相当悩んで結局丸1日かかった。
使ったのは Ruby, Perl6, Fortran。
Fortran とか自分くらいしか使ってなさそう。
Perl ではなくて Perl6 にしたのは、配列の要素が $array[$index] ではなくて @array[$index] と書けるから。Perl6 が使えなかったら途中で投げてたかもしれない。
Fortran で write(*,*)文字列 とやると頭に空白がつくことに気がつかなくて、最初に提出した解答は間違っていた。
以下は再提出したもの。
これで重複した文字はないはず。
$><<"g".next+"ello"+"+".next+"\x1f".next+"woq".next+"ld"
Perl6
読みづらいから改行を入れた。提出したものは改行なしで1行で書いている。
隙間が開いてるところは空白ではなくてタブ。
my @c; @c[5]=chr 655-555; @c[6]=chr 656-555; @c[7]=chr 659-555; @c[8]=chr 665-557; @c[9]=chr 666-555; @c[55]=chr 669-555; @c[56]=chr 675-556; @c[57]=chr 87-55; @c[58]=chr 99-55; say @c[7]~@c[6]~@c[8]~@c[8]~@c[9]~@c[58]~@c[57]~@c[56]~@c[9]~@c[55]~@c[8]~@c[5];
Fortran
ACHAR(44)//ACHAR(32) のところは単に ', ' と書けた。
PROGRAM HELLO WRITE(*,'(A)')ACHAR(3432/33)//ACHAR(303/3)//ACHAR(324/3)//ACHAR(324/3)& //ACHAR(333/3)//ACHAR(44)//ACHAR(32)//ACHAR(24040/202)& //ACHAR(333/3)//ACHAR(342/3)//ACHAR(324/3)//ACHAR(300/3) END
(追記)
出題者の方による解説と最高評価を獲得した解答がアップされた。
CodeIQ に出した「hello, world × 3」の解説・解題
解答者67人のうち、最高評価は16人、うち人類が15人だったらしい。
何をやってるのか分からないコードが多いが、眺めてるだけでも楽しい。
自分の解答はこの中では最も素朴な部類だろう。