ヨーキョクデイ

いろいろ雑食

EPOCH@まつやまの問題例を解きたい

EPOCH@まつやま なるものがあるらしい。C、JavaC++ のいずれかで解かなければならないらしいが、あえて 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