計算機科学のブログ

処理を学ぶ 分岐、switch文、反復、for文、高階関数

ハンズオンJavaScript (あんどうやすし(著)、オライリー・ジャパン)の3章(処理を学ぶ)、3.9(練習問題)の3-1、2、3の解答を求めてみる。

コード

console.log('3-1')
for (let i = 0; i < 5; i += 1) {
    let c = Math.floor(Math.random() * 5)
    console.log(`c = ${c}`)
    switch (c) {
        case 1:
            console.log('case 1')
            break
        case 2:
            console.log('case 2')
            break
        default:
            console.log('default')
            console.log('case 2')
    }
}
console.log('3-2')
for (let i = 0; i < 3; i += 1) {
    const j = i * 2
    console.log(j)
}

console.log('3-3')
const sumMap = (ary, f) => {
    let result = 0
    for (let n of ary) {
        result += f(n)
    }
    return result
}
// 1 + 16 + 25 = 42
console.log(
    sumMap(
        [1, 4, 5],
        (e => (n => (
            (n, e) => {
                let result = 1
                for (let i = 0; i < e; i += 1) {
                    result *= n
                }
                return result
            }
        )(n, e)))(2)
    )
)

入出力結果(Terminal, Zsh)

% node sample1.js 
3-1
c = 3
default
case 2
c = 2
case 2
c = 2
case 2
c = 0
default
case 2
c = 3
default
case 2
3-2
0
2
4
3-3
42
%