[Toy Problem] 01_rockPaperScissors
17656 ワード
3ゲーム連続でじゃんけんゲームをしたら、一人でいくら出せますか?石ハサミで組み合わせると3^3=27種類の組み合わせが出てきます.1試合を記録したい場合は、以下のような内容になります.
第1セット:岩、岩、岩
第二局:石切り布
第三局:岩、岩、布
...
この問題では,最終的に返される配列順序は重み付け順序に従い,順序はrock,paper,ハサミである.
長い間悩んで、三重複文を作って問題を解いたが、復習コードは私が想像していたよりずっと深くて、空虚だった.
まだ学ぶことがたくさんあります.
第1セット:岩、岩、岩
第二局:石切り布
第三局:岩、岩、布
...
この問題では,最終的に返される配列順序は重み付け順序に従い,順序はrock,paper,ハサミである.
長い間悩んで、三重複文を作って問題を解いたが、復習コードは私が想像していたよりずっと深くて、空虚だった.
まだ学ぶことがたくさんあります.
let values = ['rock', 'paper', 'scissors'];
上記の値で結果値を決定した場合、以下の結果が推定される.[0, 0, 0],
[0, 0, 1],
[0, 0, 2],
[0, 1, 0],
[0, 1, 1],
[0, 1, 2],
[0, 2, 0],
[0, 2, 1],
[0, 2, 2],
[1, 0, 0],
[1, 0, 1],
[1, 0, 2],
[1, 1, 0],
[1, 1, 1],
[1, 1, 2],
[1, 2, 0],
[1, 2, 1],
[1, 2, 2],
[2, 0, 0],
[2, 0, 1],
[2, 0, 2],
[2, 1, 0],
[2, 1, 1],
[2, 1, 2],
[2, 2, 0],
[2, 2, 1],
[2, 2, 2]
各インデックスビットの重複部分は、次の3つの重複コードによって問題が解決されることがわかります.const rockPaperScissors = function (input) {
let inputValue = input || 3;
let result = [];
let values = ['rock', 'paper', 'scissors'];
let count = 0;
for(let i = 0; i < inputValue; i++){
for(let j = 0; j < inputValue; j++){
while(count < inputValue){
let value = [];
value.push(values[i]);
value.push(values[j]);
value.push(values[count]);
result.push(value);
count++;
}
count = 0;
}
}
return result;
};
しかし,これは非常に困難な符号化解法であり,後でより高いレベルの解法を考慮しなければならない.// 레퍼런스
const rockPaperScissors = function (rounds) {
rounds = rounds || 3;
const rps = ['rock', 'paper', 'scissors'];
const outcomes = [];
let permutate = function (roundsToGo, playedSoFar) {
if (roundsToGo === 0) {
outcomes.push(playedSoFar);
return;
}
for (let i = 0; i < rps.length; i++) {
let currentPlay = rps[i];
permutate(roundsToGo - 1, playedSoFar.concat(currentPlay));
}
};
permutate(rounds, []);
return outcomes;
};
Reference
この問題について([Toy Problem] 01_rockPaperScissors), 我々は、より多くの情報をここで見つけました https://velog.io/@constate/Toy-Problem-01rockPaperScissorsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol