EPOCH@まつやま なるものがあるらしい。C、Java、C++ のいずれかで解かなければならないらしいが、あえて JavaScript で解いてみる。
問題 6 まで。元の問題文に不備があるところは勝手に解釈した。
function q1(年, 月, 日){ return ["日", "月", "火", "水", "木", "金", "土"][(new Date(年, 月 - 1, 日)).getDay()] + "曜日"; } function q2(体重, 身長){ var bmi = 体重 / Math.pow(身長 / 100, 2); return (bmi >= 30) ? "肥満" : (bmi >= 25) ? "太りぎみ" : (bmi >= 18.5) ? "普通" : "やせすぎ"; } function q3(自然数){ var 約数入れ = []; var 平方根 = Math.sqrt(自然数); for(var i = 1; i < 平方根; i++) if(自然数 % i == 0) 約数入れ.push(i, 自然数 / i); if(i == 平方根) 約数入れ.push(平方根); return 約数入れ.sort(function(a, b){return a - b;}).join(" "); } function q4(文字列A, 文字列B){ var マッチ結果 = 文字列A.match(new RegExp(文字列B, "g")); return マッチ結果 ? マッチ結果.length : 0; } function q5(国語, 数学, 英語){ return (国語 < 30 || 数学 < 30 || 英語 < 30 || (国語 + 数学 + 英語) < 180) ? "不合格" : "合格"; } // JS 1.6 function q6(A曜日, B日){ var 曜日 = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; return 曜日[(曜日.indexOf(A曜日) + (B日 - 1)) % 7]; }
見づらいことこの上なしかも。変数名に日本語を使っている時点でバカっぽいだろ。不真面目なので引数のチェックは省略した。
そして最後にこのプログラムで実際に解いた結果。
js> q1(1990, 7, 7) 土曜日 js> q2(30, 100) 肥満 js> q3(5678) 1 2 17 34 167 334 2839 5678 js> q4("ABpanCDpanpanEFpanpa", "pan") 4 js> q5(82, 73, 51) 合格 js> q6("Tue", 20) Sun