トップ 最新 追記

日々の流転


2007-02-17 [長年日記]

λ. anarchy golf

激しく今更だが、anarchy golf に少し手を出してみる。 与えられたお題のプログラムを如何に短く書くかを競うだけなのだが、これがなかなか楽しい。5行でテトリスを書いたりしている人の気持ちが少し分かった気がする。

しかし、みんなコード短すぎ。ちょっと頭がおかしいんじゃないかと思う(褒め言葉)。例えば、eを100桁表示する問題 だと、今のところ私は以下のような素朴なプログラムしか思いついてなくて、これで66バイトなのだが、Haskellでのトップが42バイトで、全体のトップはRubyの32バイト。 むー、手も足もでないかも。

import Ratio
main=print$round$sum$[10^100%x|x<-1:scanl1(*)[1..99]]

【追記】 1:scanl1(*)[1..99] よりも scanl(*)1[1..99] と書くべきだった。 その方が美しいし、2文字短い。

本日のツッコミ(全5件) [ツッコミを入れる]

ψ [1..100]>>=pen [ずるいですが(36は後出しのつじつまあわせ) main=print$36+sum(scanl(div)(10^100..]

ψ さかい [ああ、なるほど。これは酷い(笑 整数で計算したときの誤差はもっと大きいと思い込んでたけど、考えてみればこの程度だよな..]

ψ mao [整数で計算しても main=print$foldr1(\x y->10^100+div y x)[1..90] だと..]

ψ [1..100]>>=pen [大変なことに気づきました。e表示問題の sample output は実は101桁です!(笑)]

ψ さかい [反応が遅くなりました。 >maoさん なるほどー。 そんな手もありましたか。 >[1..100]>>=penさん..]