2009年7月25日
golf.shinh.orgの出題ミスの件
TAKESAKOさんの指摘にもあるように出題ミスみたいです。私も間違いに気づいて、強引に解答した感じ。で、正しい動きをするコードをどっかに載っけたかったのでここに書く。現状165B。
$c[0]=[];for$i(1..300){print"$i: ".(join" ",@{$c[$i]=(sort{o(@$a)<=>o(@$b)}map[sort{$b<=>$a}$_,@{$c[$i-$_**2]}],1..sqrt$i)[0]})."
"}sub o{$u=$#_*301;$u+=$_ for@_;$u}
ある数字に対する解答配列のサブセットが、必ず別の数字の解答配列になっているのでそれを利用して解いています。
でも、この問題だけど、63の時に解が二つ存在するみたいです。そうなる組み合わせがあるんじゃないかとは思っていたんだけど。その辺すぎゃーん氏のエントリに書かれています。
golf.shinh.orgは知ってはいたんだけど、@sugyan氏のTwitterを追いかけていて面白そうだったので、ちょっとはまっている。Twitterやってて最近では一番良かったことかも。次の問題もアップされたので解いてみようと思う。
ちなみに、ラングトンの蟻はどう書く.orgに投稿したんだけど、他の人の書いたコードを見られてかなり勉強になった。なでしこのコードとかもあって面白かった。