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で解いた罰かもしれんねー
まあこれで、アリ本を買うことなんかは今後もないでしょう