2010-05-22
■[Haskell]GCJ Round 1Aはじまるよ!
つーことで、現在準備中。。
haskell勉強中さん2010-05-22 - Haskell卒業! - haskellのを見ながら、コレ使えるんじゃねwっていう感じでw Data.Ordにcomparingなんていう便利なものがあったとは知らなかった…
さっきメールみたら、昨日の朝にgoogleからqualifiedメールが届いていた。おそっ。ソースにコンパイラかかなかったから落とされたかと心配してたので、今回はテンプレで埋め込んでおく。
今急いで用意したものを載せておく。。
splitsAt n [] = []
splitsAt n xs = as : splitsAt n bs where (as,bs) = splitAt n xs
wordsBy p xs = wordsBy' [] p xs
wordsBy' _ _ [] = [reverse rs]
wordsBy' [] p (x:xs) | p x = wordsBy' [] p xs
|otherwise= wordsBy' [x] p xs
wordsBy' rs p (x:xs) | p x = reverse rs : wordsBy' [] p xs
|otherwise= wordsBy' (x:rs) p xs
mapIf p f xs = [ if p x then f x else x | x<-xs ]
mapIfは今初めて書いたけど、リストの更新処理なのでHaskellには不相応だが、ときどき使いたくなるので。。wordsByはもっとシンプルに書けるかもしれない・・・けど今はいい。。
よし、ひとり作戦会議だ。実はRound1の過去問をほとんど手つけてなくて、昨日2009 1A-A(happy numberがどうたら)をやったんだけど、難しかった。。
まとにかくRound1はむずい。時間も短い。しかし幸いにして3回チャンスがある。勝手な予想だけど、後半ほど楽になってる気がする。ということで、1Aと1Bは練習だ!1Cが本命だ!
まーしかし2回も落ちてれば、気力も体力もげんなりしてるに違いない。。それは他の人も同じだから、やはり穴場だろう。。というか、そもそも実力者から順に抜けていくとすると、俺の場合、実力からして1Cが主戦場になるだろう…。まあ時差があるのでなんともいえないが。
あと10分で開始だw
1A終了
1問も解けませんでした。どう見ても実力不足です。本当にありがとうございました。
反省会
ぱっとみ、Aが簡単そうだったので、とりあえずAを落とそうと決める。しかし直前に作ったテンプレが間違ってという罠に開始30分くらで嵌まり、2時間以上ゲームのルールを勘違いし続け、ラスト30分は…燃え尽きたぜ…。
Aはコーディングが面倒なだけで、何かアルゴリズムを使うわけでもなく、簡単だと思うんだけど…。と言ったら、「簡単なのに解けないの?」とかいう野次が飛んできたんだがw
というわけで、ちょと丁寧に書き直してみたんだけど、やっぱり答えが合わない。。もうだめぽ。ごめんなさい、前言撤回、やっぱり難しいです。。
前々から感じてたんだけど、どうもコードが7,80行近くになると手に負えなくなる。。どんだけキャパ小せえんだよ俺…
全部来週の課題にしておこう。。
次は1時か…。ウォーミングアップも終わったし、そろそろ本気出すか。
追記
うわ、嵌まったw 他の方の感想凡ミス@もけお - きゅーぶろぐを読んでたら、「問題読み間違えて、左と右にローテートしてた」って書いてあった。え…違うのか…。俺なんか左と右にローテートした挙句に、俺がボードを見てない間に相手も回してくるはずだから…とかやってたんだけどw 左ローテートだけにしたら通ったぜ…。
まーでも本番時に書いてたコードには他にもいくつか勘違いがあったから、結局ダメだっただろうけどな…。とりあえず謎は解けたから、次頑張るぞ…じゃなくて、さっきの練習だからな。次から本気だすか。
■[Haskell]俺GCJ Round 1B通ったら結婚するんだ
まだ時間があるので少し休みたいところなんだけど、なんか眠いのに寝られないという状態です。。起きてても他に手をつけられないので、とりあえず飯食って戦に備えます。。
緊張で寝られないとか、センター試験以来ですよ…。まああのときはほとんど徹夜でいって爆死したんですが、それ以来、実力に見合わない、または準備不足のテストとかあると、前日に寝られないという持病を抱えてます。。
で、まさに今そういう感じなんですが。。体は素直ですな…。
さーて、あと7分で1Bが始まるんだぜ!今回はうまくやらないとな!
1B終了のお知らせ
フラグ通り、しっかり落ちました。実力不足ですね、分かります。
競技中の流れ
例によって例の如く、まずAから落とすことにする。あえて言おう、Aが簡単そうだったと!(しかし俺には難しかったが!)
正直なところ、短時間で解けるような実力は端から持ち合わせいないので、とにかく確実に解くように頑張った。丁寧にテストしながら進めた。…はずなのに、なんか微妙に合わない!!
あーもうだめだーーってことで、1時間半経過のところで心折れた。。
で、よく考えたらあと1時間あるじゃんっていうことに気づき、またデバッグ作業に戻る。もうA分かんねえから他のやろうかなと思ったが、なんか集中できない。。
まーしかし、ラスト10分くらいでIncorrect出したあとからが本番。「ちょ、まじで」を発動して、ちょ、まじでデバッグする。どうもディレクトリをインサートする処理がおかしいようだ…。分かったああああああ!
smallダウンロード -> 計算 -> submit -> Incorrenct …だと!?
ラスト2分。いやこっからが本番だろう、常識的に考えて…。もう1回よくよく考え直して…こっちかああああああ!
smallダウンロード -> 計算 -> submit -> Correnct キターー('∀')ーー!!!
おお、なんか久しぶりにCorrectの文字を見たな…。いや感慨にふけてる場合じゃない。。
ラスト30秒。ネット廃人のマウス捌きを舐めんなよおおお
largeダウンロード -> 計算 -> submit -> …してる途中で時間切れ。間に合わなかったかぁと思いながらスコアボードを確認すると、Correctになってるw やったったー
よし、今回はこれくらいにしといてやるか…。次はフルボッコにしてやるよ…。