JOI予選通過しました

情報オリンピック予選

何故か通過しました。

点数は72点でギリギリ。(ボーダーも72点)
20+20+20+8+4 = 72 てな感じでした。

うどんすすりながら、node.jsで受けた。

こんな回答だったのに通過していいのか。

KYの二年は、自分も含め少なくとも3人通過した見たい。

他の二人はめちゃんこ点数高いです。

ぼかぁアルゴリズマーじゃないし、普段から勉強もしてないんで、本戦ではみなさんがんばってくださいって感じですね。

たぶん、あの二人は余裕で本戦も通過しそうだなあ。

罪悪感はあるけど、マイナーな言語で受けると逆に受かりやすい場合もあるんだなあと実感。
(ヒント:提出したプログラム)

また、ただで東京に行って参ります。

node.jsでJOI受けた。

情報オリンピック日本委員会

PHPを使うか、ブラウザのコンソール画面でJavaScript実行させるか、node.jsを使うかで悩んだ末、勉強もかねてnode.jsを使いました。

結果はかなり微妙でしたが、node.jsの勉強になったと思うので、よしとします。
予選通過するかしないかギリギリのラインですが、どっかでミスってる可能性大なので、たぶん通過しません。

残ってるコードはこんな感じ

– Q1

– Q2

– Q3

Q4は二問ほどを総当り(ブルートフォース的に)解いて、残りを解くために改良していたところで、バグに見舞われてしまい、終了となりました。
Q5もはじめの一問を解いたけど、たぶん点数に加算されない気がするなあ。

Q2を解き始めたところから、「split(‘n’)」で一行ずつ取得という処理ができなくなり、そこでも時間を潰したかな。
rnでsplitしても、また別の問題が浮上してくるのですごく戸惑いました。
最終的にはダウンロードした入力データを、エディタで改行を除くなどして応急処置をほどこしました。

向こうの想定するC,C++ではなくて、node.jsで解いた罰かもしれんねー

まあこれで、アリ本を買うことなんかは今後もないでしょう

JOIの解答がGoogle Chromeで提出できないという話

情報オリンピック日本委員会

現象

なーんかJOIの予選練習問題解いてたら、@asi1024がChromeでCのソースコードをアップできないって言うんで、どういうことかなーって思ってたら、後日JOIから発表があった。

「予選練習」において, Google Chrome (7.0 以降)など一部のブラウザからソースコードのアップロードが正常に行えない場合があることが確認されています.
競技当日までに競技に使用するPCから予選練習にてソースコードのアップロードが
正常に行えるか確認してください.less than a minute ago via HootSuite

どうやらChromeだけの現象らしい。
しかも.txtファイルはアップできて、.cファイル等がアップできないという不思議な現象。
.c等のファイルをアップロードしようとすると以下のようにエラーがでる。
(JOIからの報告の数日後に、サイトの保守作業があったみたいだけど、まだバグは治っていなかった)

原因らしきものをぐぐってみたら、さくっと出てきた。

一般に登録されていない拡張子の場合、Chromeでアップロードできない – Google Chrome 公式ヘルプフォーラム

もしかしたらもう解決済みなのかな?とは思ったものの、ちょっと調べてみた。
Chromeのバージョンは8.0.552.215 beta

「Content-Typeフィールド」が無い

プロキシツールを使って、sample.txtファイルをアップしたときと、sample.cファイルをアップしたときの違いを見てみた。
どうやらレスポンスヘッダーの「Content-Typeフィールド」の付与の有無が関わってることが分かった。
一般に登録されてない拡張子だと「Content-Typeフィールド」が付与されないみたい。
(他のブラウザだと、どのファイルでも「Content-Typeフィールド」が付与されるようだ。)

(比較)

「Content-Typeフィールド」を適当に付け加えるとアップロードできるようになった。

あとがき

今までChromeを使ってても、dropboxも使えたし、なんら問題がなかったので、ちょっと驚き。
ちなみにdropboxでアップロードするときも、「一般に登録されてない拡張子」だと「Content-Typeフィールド」が付与されなかった。
JOIの鯖側で「Content-Typeフィールド」のチェックでもしてるのかしら。

それにしてもJOIさん、font要素とかまじで使わないでください。

追伸

どうやらChromeのバグだったようです。
Issue 6800 – chromium – Chrome doesn't set Content-Type for file upload when the file extension is not recognized. – Project Hosting on Google Code

一度直されたバグが復活したのかな?
今後直されるといいですが・・・

thanks to @pastak