PHPを使うか、ブラウザのコンソール画面でJavaScript実行させるか、node.jsを使うかで悩んだ末、勉強もかねてnode.jsを使いました。
結果はかなり微妙でしたが、node.jsの勉強になったと思うので、よしとします。
予選通過するかしないかギリギリのラインですが、どっかでミスってる可能性大なので、たぶん通過しません。
残ってるコードはこんな感じ
– Q1
| var fs = require('fs'), | |
| sys = require('sys'); | |
| var result = function (file) { | |
| fs.readFile(file, "utf-8", function (err, data) { | |
| time = 0; | |
| data = data.split('\n').forEach(function (val, i) { | |
| time += +val | |
| }) | |
| r = parseInt((time/60))+'\n'+(time%60) | |
| fs.writeFile(file, r); | |
| }); | |
| } | |
| result('2011-yo-t1-in1.txt') | |
| result('2011-yo-t1-in2.txt') | |
| result('2011-yo-t1-in3.txt') | |
| result('2011-yo-t1-in4.txt') | |
| result('2011-yo-t1-in5.txt') | 
– Q2
| var fs = require('fs'), | |
| sys = require('sys'); | |
| var result = function (file) { | |
| fs.readFile(file, "utf-8", function (err, data) { | |
| err && sys.print(err) | |
| var search = ''; | |
| var r = 0; | |
| data.split('\r\n').forEach(function (val, i) { | |
| if (i == 0) { | |
| search = val; | |
| } else if (i >= 2 && (val+val).indexOf(search) != -1) { | |
| r++; | |
| } | |
| }) | |
| fs.writeFile(file, r+""); | |
| }); | |
| } | |
| result('2011-yo-t2-in_s1.txt') | 
– Q3
| var fs = require('fs'), | |
| sys = require('sys'); | |
| var result = function (file) { | |
| fs.readFile(file, "utf-8", function (err, data) { | |
| err && sys.print(err) | |
| r = ''; | |
| n = +data.split('\r\n')[0]; | |
| max = +data.split('\r\n')[1]; | |
| data.split('\r\n').forEach(function (val, i) { | |
| if (i < 2 || i > max+1) { | |
| return false; | |
| } | |
| var xy = val.split(' '), | |
| x = +xy[0], | |
| y = +xy[1], | |
| color = check(x, y, n); | |
| r += color+'\n'; | |
| }) | |
| fs.writeFile(file, r); | |
| }); | |
| } | |
| function check (x, y, n) { | |
| if (y > n/2) y = n-y+1; | |
| if (x > n/2) x = n-x+1; | |
| return (x >= y+1 && x <= n-y) ? (y%3 || 3) : (x%3 || 3); | |
| } | |
| result('2011-yo-t3-in1.txt') | |
| result('2011-yo-t3-in2.txt') | |
| result('2011-yo-t3-in3.txt') | |
| result('2011-yo-t3-in4.txt') | |
| result('2011-yo-t3-in5.txt') | 
Q4は二問ほどを総当り(ブルートフォース的に)解いて、残りを解くために改良していたところで、バグに見舞われてしまい、終了となりました。
Q5もはじめの一問を解いたけど、たぶん点数に加算されない気がするなあ。
Q2を解き始めたところから、「split(‘n’)」で一行ずつ取得という処理ができなくなり、そこでも時間を潰したかな。
rnでsplitしても、また別の問題が浮上してくるのですごく戸惑いました。
最終的にはダウンロードした入力データを、エディタで改行を除くなどして応急処置をほどこしました。
向こうの想定するC,C++ではなくて、node.jsで解いた罰かもしれんねー
まあこれで、アリ本を買うことなんかは今後もないでしょう