CODE KATA #18


大きな数値を出力


N(1<=N<=100)個の整数を入力し、その前の桁数よりも大きい出力のみを出力するプログラムを作成してください.(最初の数字は無条件出力)

私の答え

            function solution(arr){         
                let answer=[];
                answer.push(arr[0]);
                for (i=1; i<arr.length; i++) {
                    if(arr[i] > arr[i-1]) answer.push(arr[i]);
                }
                return answer;
            }
            let arr=[7, 3, 9, 5, 6, 12];
            console.log(solution(arr));
答えのように!

目に見える学生


先生はN(1<=N<=1000)人の学生を一列に並べた.一列に並んだ生徒の身長が前から順番に与えられる場合は、一番前に立っている先生が見える生徒の数を求めるプログラムを作成してください.△前に立っている人より大きいと見えますが、小さいと見えません.

私の答え

            function solution(arr){         
                let answer=1, max=arr[0];
                for(i=1; i<arr.length; i++) {
                    if(arr[i]>max) {
                        max = arr[i];
                        answer++;
                    }
                }
                return answer;
            }
            let arr=[130, 135, 148, 140, 145, 150, 150, 153];
            console.log(solution(arr));
答えのように!

はさみ石布


A.B二人でストーンクリップゲーム全部でNゲームAで勝てば出力Aで勝てば出力BフラットであればDを出力します.
石はさみ布の情報は1:石はさみ布2:石はさみ布3:布

私の答え

            function solution(a, b){         
                let answer="";
                for (i=0; i<a.length; i++) {
                    if(a[i]===b[i]) console.log("D");
                    else {
                        if(a[i]===1 && b[i]===3) console.log("A");
                        else if(a[i]===2 && b[i]===1) console.log("A");
                        else if(a[i]===3 && b[i]===2) console.log("A");
                        else console.log("B");
                    }
                }
                return answer;
            }
            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));

正解を解く

            function solution(a, b){         
                let answer="";
                for(let i=0; i<a.length; i++){
                    if(a[i]===b[i]) answer+="D ";
                    else if(a[i]===1 && b[i]===3) answer+="A ";
                    else if(a[i]===2 && b[i]===1) answer+="A ";
                    else if(a[i]===3 && b[i]===2) answer+="A ";
                    else answer+="B ";
                }
                
                return answer;
            }

            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));

スコア


OX問題とは、正しいか間違っているかの2つの状況の答えがある問題を指す.複数のOX問題からなる試験において、連続して正解した場合、加算点を与えるため、以下の点数計算を行うことにした.1番の問題が正しければ1点です前の質問に対して、答えが間違っていれば、答えが正しい最初の質問は1点に計算されます.また、連続して質問に答えたら、2番目の問題は2点、3番目の問題は3点...K番目の問題はK点で計算します.間違った問題は0点だ.

私の答え

            function solution(arr){         
                let answer=0, cnt=0;
                for (let x of arr) {
                    if(x===1) {
                        answer += (1+cnt);
                        cnt++;
                    } else {
                        cnt = 0;
                    }
                }
                return answer;
            }
            let arr=[1, 0, 1, 1, 1, 0, 0, 1, 1, 0];
            console.log(solution(arr));

正解を解く

            function solution(arr){         
                let answer=0, cnt=0;
                for(let x of arr){
                    if(x===1){
                        cnt++;
                        answer+=cnt;
                    }
                    else cnt=0;
                }
                   
                return answer;
            }

            let arr=[1, 0, 1, 1, 1, 0, 0, 1, 1, 0];
            console.log(solution(arr));

点数を求める


N(1<=N<=100)名の生徒の国語点数を入力する場合は、入力順に生徒毎の点数を出力するプログラムを作成します.

私の答え

            function solution(arr){  
                let n=arr.length;
                let answer = [];
                for (let x of arr) {
                    let big = 1;
                    for(i=0; i<n; i++) {
                        if(x<arr[i]) big++;
                    }
                    answer.push(big);
                }
                return answer;
            }
            let arr=[87, 89, 92, 100, 76];
            console.log(solution(arr));

正解を解く

            function solution(arr){  
                let n=arr.length;
                let answer=Array.from({length:n}, ()=>1);
                for(let i=0; i<n; i++){
                    for(let j=0; j<n; j++){
                        if(arr[j]>arr[i]) answer[i]++;
                    }
                }             
                return answer;
            }

            let arr=[87, 89, 92, 100, 76];
            console.log(solution(arr));

Array.from()

Array.from()メソッドは、類似配列オブジェクト(array-like object)または反復可能オブジェクト(iterable object)を浅くコピーすることによって、新しいArrayオブジェクトを作成する.