Code Zip

http://www.codechef.com/CDGF2013/

ずっと勝てないなあと思ってたけど、なんかうっかり勝ちました。なんかややこしい書き方してあるけど、実はすごく簡単な問題、ってのばっかりで、ゴルフの問題としてはかなり残念感がある問題セットではありました。

BINGCD

最右の 1 が立ってる bit の位置を探す問題。なんで 1B 負けてるのかわからない。謎です。

eval [*$<]*'p$_&-$_ if$_=2*'
eval [*$<]*'p _&=-_ if _=2*'

Perl だと 26B になりますが、精度的に WA になるというクソゲー

<>;print$_*2&-$_*2,$/for<>

FCTRIZE

brainfuck or whitespace or intercal 限定問題。最初は解埋め込みで BF とか WS とかで適当に解いておいて、マジメに縮めてくる人いたらマジメにやるかなぁとか思ってたけど、なんか一番マジメにやる運命になった。

http://shinh.skr.jp/dat_dir/enc_fctrize3.rb

GCD のループから出る時にゴミが残るようにしておいて、そのゴミをうまいこと使ってる点と、

 int i, j;
 for (i = 2; i <= 1000; ) {
   for (j = 1; j <= i; j++) {
   }
   i = j;  // ココ
 }

の上記のココみたいな感じで i++ をはぶいてるのが最後の方にやった変更で、これで意外なくらい縮みました。

MTRANS

言語依存で Python 超有利問題。こういうのは別に面白くないんだけどなあ…

exec'raw_input();print zip(*input());'*input()

PRQUIN

いつも通りの変形 Quine

#define q(x)b=#x;x
q(v;main(i){for(scanf("%d",&v);v%++i;);v=!printf(i-v?"#define q(x)b=#x;x\nq(%s)":"YES",b);})

TOTAREA

色々書いてあるけど x**2*17/6 を計算するだけの問題。何故か最初の行で指定する入力数以上の入力があるらしく、一行目読み飛ばしではダメ。

printf"%f
",<>**2*17/6for 1..<>

Perl6 でも書いてみたけど 1B 長い。

printf("%f
",get**2*17/6)for^get

Bash でも書いてみたけど 1B 長く、そして何故か WA 喰らうので謎。これが WA じゃなければ、これをゴルフすればもうちょい短くなる気がするんだけどな。

dc -e'6k?[?d*17*6/pr1-d0<L]dsLx'

ちなみに入出力が常識的なものだったら 9B くらい縮んで楽勝だったんですがね…

sed '1!a6kd*17*6/p'|dc
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h