はま先生のエントリを受けて
これ チャレンジしてみました
サイ本をちゃんと読んでいないのでググってみる
在庫計算プログラムを作成してください。改行区切りで N 個の商品の各在庫数 S が入力されるので、その合計を出力して下さい
- 入力される値
入力は標準入力にて以下のフォーマットで与えられます。
N
S_1
S_2
・
・
S_N
- 期待する出力
全ての商品の在庫数を足した数を出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
書いた
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data',function(chunk){
var array = chunk.trim().split('\n');
array.shift();
var sum = array
.map(function(line){
return (/^\d/).test(line) ? parseInt(line,10) : 0;
})
.reduce(function(pre,cur){
return pre + cur
});
console.log(sum);
});
改行区切りで N 個の各商品の在庫数 S が入力されるので、その合計を出力して下さい。
- 入力される値
入力は以下のフォーマットで与えられる。
N
T_1 S_1 P_1
T_2 S_2 P_2
・
・
・
T_N S_N P_N
- 期待する出力
在庫数を最低限必要な在庫数を満たすために必要な金額の合計を出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
書いた
foreachしてるところが臭い
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data',function(chunk){
var array = chunk.trim().split('\n');
array.shift();
var sum = array
.map(hogeMapper)
.reduce(function(pre,cur){
return pre + cur
});
console.log(sum);
});
function hogeMapper(line){
var array = line.trim().split(' ');
var sum = 0;
array
.map(function(line){
return (/^\d/).test(line) ? parseInt(line,10) : 0;
})
.forEach(function(item,idx,array){
if(idx===0 && item > array[1]){
sum = (item - array[1]) * array[2];
}
});
return sum;
}
3問目
累積和としゃくとり法を予め勉強しながら試す
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data',function(chunk){
var array = chunk.trim().split('\n');
var t= array.shift().split(' ').shift();
//console.log(t);
var csum = array
.map(function(line){
return (/^\d/).test(line) ? parseInt(line,10) : 0;
})
.reduce(function(pre,cur){
if(pre.length > 0){
cur +=pre[pre.length - 1];
}
pre.push(cur);
return pre;
}, []);
//console.log(csum);
var s = csum.map(function(cur,idx,array){
if(idx < t){
return cur;
}
var val= array[idx] - array[idx - t];
return val;
});
//console.log(s);
var max = Math.max.apply(Math,s);
console.log(max);
});
残念ながら60点... TestCase4で失敗