練習八
回傳陣列裡面所有小於 n 的數的總和
請寫一個函式 findSmallerTotal,接收一個陣列以及數字 n,回傳陣列裡面所有小於 n 的數的總和。
findSmallerTotal([1, 2, 3], 3) 正確回傳值:3
findSmallerTotal([1, 2, 3], 1) 正確回傳值:0
findSmallerTotal([3, 2, 5, 8, 7], 999) 正確回傳值:25
findSmallerTotal([3, 2, 5, 8, 7], 0) 正確回傳值:0
function findSmallerTotal(arr, n){
var sum = 0
for(var i = 0; i < arr.length; i++){
if (arr[i] < n) sum += arr[i]
}
return sum
}
console.log(findSmallerTotal([3, 2, 5, 8, 7], 999))
這題決定抄 Huli 的解法,因為我覺得這樣下去不是辦法,用我寫的第七題的寫法會一直卡住
練習十:回傳陣列總和
請寫一個 function sum,接收一個陣列並回傳陣列中數字的總和。
sum([1, 2, 3]) 預期回傳值:6
sum([-1, 1, 2, -2, 3, -3]) 預期回傳值:0
方法一:
function sum(arr){
var answer = 0
for (var i = 0; i < arr.length; i++){
answer += arr[i]
}
return answer
}
console.log(sum([-1, 1, 2, -2, 3, -3]))
方法二:用一個 array 內建的 function 叫做 reduce
function sum(arr){
return arr.reduce(function(accumulator, value){
return accumulator + value
}, 0 //-> 這裡放初始值,很像 base 一樣,之後的數就會一直往上加,也可以不寫)
}
console.log(sum([-1, 1, 2, -2, 3, -3]))
accumulator 是一個累加器的感覺,第一個數加第二個數,出現一個值,然後再往後繼續累加。
這個方法可以做好多事的感覺,好像很有趣。
看影片:ALG101
Unit0:課程簡介,介紹 LIOJ 系統,練習 LIOJ 1001、LIOJ 1002
LIOJ 1001
var readline = require('readline');
var lines = []
var rl = readline.createInterface({
input: process.stdin
});
rl.on('line', function (line) {
lines.push(line)
});
rl.on('close', function() {
solve(lines)
})
function solve(lines) {
var line = lines[0]
var tmp = lines[0].split(' ')
console.log(Number(tmp[0]) + Number(tmp[1]))
}
LIOJ 1002
var readline = require('readline');
var lines = []
var rl = readline.createInterface({
input: process.stdin
});
rl.on('line', function (line) {
lines.push(line)
});
rl.on('close', function() {
solve(lines)
})
function solve(lines) {
for(var i = 0; i < lines.length; i++){
var tmp = lines[i].split(' ')
var a = Number(tmp[0])
var b = Number(tmp[1])
if (a === 0 && b === 0) {
return
}
if (a > b) {
console.log(a)
}else{
console.log(b)
}
}
}
總結一下,簡單來說就是要用這個系統,上面的程式碼可以全部複製貼上,只要從最下面 function solve(lines) {}
開始寫程式碼就可以了。
因為題目規定在同一行輸入兩個數字,用空格分開,所以可以這樣表示:
var tmp = lines[i].split(' ')
看 Unit1 大綱
明天從「Unit1.1:What the funk,都說了先不要」開始