後の祭り

結局NPとTESTGEN以外は提出することが出来ました。
問題もソースコードも公開されているので興味がある人(主に参加した人)は見るといいよ。

環境

今回はずっとUbuntuでやってました。
あとRubyをよく使った気がする。
Emacsが末尾に余計な改行付けるのでそれを取ったりペンギンの出力コード生成したり。

KEY

Cのキーワードが使えない(ペナルティが大きすぎる)→forループが使えない→ループを再帰で書き直す、という問題。
セミコロンにペナルティあるからwhileよりforの方が不利になるとか最初は思ったんですけどね。
一問目だからかもしれないけど通すのは簡単。ゴルフ的にもよくある問題だし。

SHORTEN

TopCoderの誰かの解答を清書する問題。違うか。
軽く読んでみたけど怪しい定数とかどんどんカオス化するスコアボード見てやるのやめました。
点数配分とかちゃんとやってないのでよく知らない。
ちゃんと読めば面白い問題だったら泣ける。

INPOUT

文字列スワップ問題。
一部の文字は変換しないといけないので、index(strchrと同じ)を使った。
[id:letter:20060726#1153927005]でも似たようなことやってるな。
最後ギリギリで記録更新。

CODEHASH

自分自身のハッシュを出力するコードを作る問題。
一位の人と二位のkikさんは頭がおかしいと思う(いい意味で)。
この二人のソース見れただけでも参加した甲斐あった。
ほんとどうやってコード生成できるんだろう・・・謎すぎる

CLASS

空白とスラッシュ使わずにクラスの定義できますか?という問題。
スラッシュ使えればブロックコメントで瞬殺なんだけど、さてどうしたものか。
括弧で適当に囲ってみても駄目だし。
フォーラムでtypedef使うというヒントがあったけどググっても分からず、
"c lexer"で検索して出て来たページの"\f"をスペースの代わりにすることで切り抜けた。
答えが分かった今でもtypedefが使える理由が分かってなかったり。C++とか知らんし。
他にもプリプロセッサマクロ使ってる人がいたりしてそれはそれで面白い。

PENGUIN

圧縮データ展開のゴルフ問題。
適当な(1ビット余らせてる)ランレングス圧縮で終わってしまった。
展開コードにゆとりがあるので他の圧縮法も試してみたかったかも。

PRINT

回文Quine問題(じゃないけどスコアの関係で回文の方が得)。
あなごるにあったよなーと思い出しながら適当に書いた。
kikさんの解答がどうなってるのか分かりません。全部空白に見えるんですががが。

NP

TESTGEN

グラフ問題をなるべく最適になるように解く問題。
やってません。
乱数打開くらいやってみるんだったかな。
どっちにしてもあまり面白くなさそう。

ARBIT

一番面白かった。
難読化したコードを解読し、出て来た数論の問題を解いて、という二段階問題。
一見すごく読みづらいのが最終的にあれも無駄、これも無駄、と消えていくのが素敵でした。
出て来た数論の問題の方が難しかったかも。
なんかProject Eulerでも見たことあったようなICPCだったような。
結局全然高速化できませんでした。

THINK

ノーヒントで暗号を解く問題。つい2番の解答見たけど解答だけじゃ何も分からなすぎて困った。
各行の15文字目と31文字目が必ず1なのが関係有るのか無いのか。
3番に気づくことは出来るのか。