Soroban Fixed 他
Soroban Fixedが公開になった。
C
nai さんに、137B で追いつかれたとき、確か stats が一致していたので、136Bも似たコードかと思っていたら、結構違っていてびっくり。
私が、144B から 137B まで縮めるきっかけになったのは、行カウンターを 0 や 1 から開始していたのを、9 からカウントダウンするように変えたこと。こうすると、1 行目、4 行目、10 行目のはじき方が、
i%9%6 // 9..0 カウントダウン i%3|i==6 // 0..9 カウントアップ
と簡潔になり、調子が良い。てっきり他の人も、9 からのカウントダウンかと思っていたのだが、そうしている人はいなかった。なお、他の要素もあって一概には言えないが、暗黙の 0 初期化からカウントアップするループと明示的な初期化からカウントダウンするループは以下の通りコストは同等だ。
i=9;main(){for(;i--;);} i;main(){for(;i++<9;);}
さて、トップnai さんの解。まず、gets() の位置がうまいな。こうすると、p の初期化が一箇所にできる。そして、行カウントを 1 から step 2 で行うことで、
line : 0 1 2 3 4 5 6 7 8 9 i : 1 3 5 7 9 11 13 15 17 19 133%i : 0 1 3 0 7 1 3 13 14 0
か。よくこんな式思いつくな。すごい。
そして、極めつけは、
--*p%5
あらら、インプットを破壊してる。すごい。こうすることで、どの行も、剰余が 2 かどうかで判断できるのか。とはいえ、133%i が true のケースはそんなにコストを稼いではいないみたいだな。っていうか、いちばん稼いでいるのは、
k++%4*7-i
か?私の解にこれを応用すると、133B が出来ちゃった。
追記
さらに縮まり、131B。っていうか、だれも、strlen()なんか使っていなかった。
さらに追記
nai さんによる 130B。また、やってしまった。for 文の初期化の場所に、式が、"スポッ" と入ると、なんか、短い気がしてしまうんだよなぁ。
Triangle@C
inaniwa さんが圧倒的な差をつけて 92B トップ。見ると、要素要素は私の解と似てるんだけどな。for 文一重化は私は出来ず断念したのに対し、見事に実現されている。さすが。
その他
Sokoban は、3番目のビットを落とすだけ。ちょっと、単純すぎたか。sudoku は逆に難しすぎ。手に負えなかった。
さらに、今、アクティブな問題のなかでも、Totient、Puyo Puyo、Hangul resyllabificationは、ちょっと、お手上げだ。