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++ をはぶいてるのが最後の方にやった変更で、これで意外なくらい縮みました。
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