RockPaperScissors(石ハサミ布)
13082 ワード
質問する
じゃんけんゲームとは、2人以上が同時に「石はさみ布」を叫び、石はさみ布に手の形を表して勝負を決めるゲームです.3皿のハサミ石布ゲームをして、一人で3回の選択をすることができます(例えば:ハサミ、ハサミ、布).3回の選択で関数を作成し、可能なすべての数値を求めることができます.
しゅつりょくの2次元配列(arr[i])を返さなければなりません. arr[i]は、総数の1つ(合計3回の選択)を表す配列である. arr[i]は、1つまたは複数の「rock」、「paper」および「ハサミ」要素を含む配列である. arr[i].lengthは3です. 注意事項は、最終的に、重み付け順序に従ってアレイを返す. の重要度は、「rock」、「paper」、「ハサミ」の順である. は分かりやすく、オリンピックの順位決定方式を参考にすることができます. 金メダル(「rock」)は銀メダル(「paper」)より優先され、銀メダル(「paper」)は銅メダル(「ハサミ」)より優先された. I/O例
正の整数輪がじゃんけんゲームの数を表す場合は、その輪の間に選択できるすべての場合の数を返す関数を作成します.
じゃんけんゲームとは、2人以上が同時に「石はさみ布」を叫び、石はさみ布に手の形を表して勝負を決めるゲームです.3皿のハサミ石布ゲームをして、一人で3回の選択をすることができます(例えば:ハサミ、ハサミ、布).3回の選択で関数を作成し、可能なすべての数値を求めることができます.
しゅつりょく
let output = rockPaperScissors();
console.log(output);
/*
[
["rock", "rock", "rock"],
["rock", "rock", "paper"],
["rock", "rock", "scissors"],
["rock", "paper", "rock"],
// ...etc ...
]
*/
Advanced正の整数輪がじゃんけんゲームの数を表す場合は、その輪の間に選択できるすべての場合の数を返す関数を作成します.
let output = rockPaperScissors(5);
console.log(output);
/*
[
["rock", "rock", "rock", "rock", "rock"],
["rock", "rock", , "rock", "rock", "paper"],
["rock", "rock", , "rock", "rock", "scissors"],
["rock", "rock", "rock", "paper", "rock"],
["rock", "rock", "rock", "paper", "paper"],
["rock", "rock", "rock", "paper", "scissors"],
["rock", "rock", "rock", "scissors", "rock"],
// ...etc ...
]
*/
方法const rockPaperScissors = function(number) {
// TODO: Your code here!
let result = [];
let rPS = ["rock","paper","scissors"];
let howmany = Math.pow(3,number)
while( result.length < 27){ // 27가지 경우의 수가 되면 반복문 그만
let cases = []; // 랜덤으로 뽑힌 결과를 cases에 담기
for(let i =0; i < rPS.length; i++){// 0-2 사이 랜덤 인데스 구하기
let randomIndex = parseInt(Math.random() * 3);
cases[i] = rPS[randomIndex];//or cases.push(rPS[randomIndex]);
}
// 빈배열이 아니면 하나 하나 체크하고, case가 같은게 있으면
// count 를 +1을 한다.
let count = 0;
for(let eachCase of result){ // result 안의 case를 하나 하나 순회
if(eachCase.join() === cases.join()){ // 만약에 resutl안의 eachCase와 case가 같으면
count++; // count 값을 증가
}
}
//즉, count가 0 이면, result안에 같은 case가 없다는 뜻
if(count === 0 ){ //만약에 result를 하나 하나 다 체크 후에 count 가 0이면
result.push(cases); //result에 case를 푸시
}
count =0;
} // while문 종료
return result;
};
方法. const rockPaperScissors = function (number) {
// (test 충족 위해서) argument 입력 없었을 때, number에 3 할당
if (number === undefined) number = 3;
let op1 = 'rock', op2 = 'paper', op3 = 'scissors';
let returnArr = [[]];
let tempArr = []; // 값 임시 보관용 변수
while (number > 0) {
for (let el of returnArr) {
tempArr.push([...el, op1]);
tempArr.push([...el, op2]);
tempArr.push([...el, op3]);
}
// returnArr에 tempArr 값을 복사하고, tempArr은 초기화 및 number --1;
returnArr = [...tempArr];
tempArr = [];
number--;
}
return returnArr;
};
Reference
この問題について(RockPaperScissors(石ハサミ布)), 我々は、より多くの情報をここで見つけました https://velog.io/@hwanieee/rockPaperScissorsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol