ToDo:
ゴルフでアルゴリズムが綺麗な問題、 を聞かれてぱっと答えられなかったのだけど、
http://golf.shinh.org/p.rb?Sierpinski+Fractal#Perl
なんかはコードは綺麗だよな。 だけどまぁアルゴリズムってわけでもない。 そして説明がめんどくさい。
まぁ delete words が例としてはわかりやすいかなぁと思った。 この問題、普通に解けと言われても サックリ実装したいシーンなら 僕は transpose 4 回すると思う。
http://golf.shinh.org/p.rb?delete+words
ただそんなにインパクト無いんだよな。
こうどうしても main 再帰とかの小手先の方が インパクトが。
(00:35)
yyYY として、
YY%40 と YY0 を見れば yyYY%40 と yyYY%1000 は評価できる。
あとはYY0かつyy%40なら yyYY%400==0 と。
つまり
(YY0&&yy%40)||(YY!=0&&YY%4==0)
となる。 なんかちょっと綺麗だな。
(01:37)
とか言ってたっけ。 これ公開されてたんだね。
http://video.google.com/googleplayer.swf?docId=9214177555401838409&hl=en
むこうで聞いたテックトークの中でもトップ3には入るので 暇な人はお勧めなかんじだった。
via http://www.sodan.org/~penny/blosxom.cgi/2007/07/30#java-puzzler6
(13:02)
http://d.hatena.ne.jp/odz/20070809/1186679264
言い訳としてはそもそもまともな教育受けてないから 末尾再帰にかかわらず用語とか適当にしか把握しとらんのだよなー。
こないだも ICFPC2006 の ADVIS とか理攻めで 解けるらしいとか聞いてそういうもんだなぁとか。
どう思ってたかというと、 GCC が最後かけ算があるくらいなら 最適化するとは知ってたので、 関数型は末尾再帰で書けば問題ありません! とかを見てたぶん GCC が最適化できるくらいの ヤツはなんか理論化されてて最適化できるんだろー、 そしてそれを末尾再帰というのだろーと 勝手に思ってた。
むしろなんか今さっき OCaml で fact 書いたら 最適化されてないのを見て愕然としたレベル。 こんなの
let rec fact n = if n = 1 then 1 else n * fact (n - 1);; print_int (fact 5);;
カンスウガタとかたいしたことないなぁとか。
それはそうと、末尾再帰って話を始めて知ったのは ocaml.jp だったと思う。 その時 ocaml.jp 眺めながら OCaml という言語のすごさに感心しつつ 末尾再帰とかいうのが なんなのかもよくわからんかったし なんで最適化されるかとかもわからんかったので、 こんな難しそうなことがわかる これ書いた人はものすごいとんでもない人なんだろうなぁ とか思ったことを思い出した。
で、そいうやんごとなき人々と話せたりできてる 今ってのは幸せなのかな。 そんな気もそうでもない気も。
(15:15)
前 | 2007年 8月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。