Hatena::ブログ(Diary)

いじわるだねっ このページをアンテナに追加 RSSフィード

2010-05-22

[]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 左ローテートだけにしたら通ったぜ…。

まーでも本番時に書いてたコードには他にもいくつか勘違いがあったから、結局ダメだっただろうけどな…。とりあえず謎は解けたから、次頑張るぞ…じゃなくて、さっきの練習だからな。次から本気だすか。

[]俺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 やったったー

よし、今回はこれくらいにしといてやるか…。次はフルボッコにしてやるよ…。