34日目(01-25-2021)


データ構造から抜け出して息抜きしたいのですが、今回はもっと難しい問題が待っています.朝1時間目、toyproblem coplet問題を作りましたが、問題の内容はN人が石ハサミ布を作ったときに発生する可能性のあるすべての状況の数の配列問題です.シンプルな感じでしょうか?考えているうちに始まって、30分過ぎてから車酔いして、全然解けない問題だと思って、練習を参考にしました.
まず私が悩んで作った怖いコードを見せてあげます
  let cases = ['rock', 'paper', 'scissors'];

  let result = [];
  for (let i = 0; i < cases.length; i += 1) {
    for (let j = 0; j < cases.length; j += 1) {
      for (let k = 0; k < cases.length; k += 1) {
        let playing = [cases[i], cases[j], cases[k]];
        result.push(playing);
      }
    }
  }
  return result;

console.log('rPS() : ', rPS());

結果はどうでしたか(?)出てきました.しかし、3人の時だけよく撮れました.四、五人でも何でも一度やってくれればいいのに...!恥じ入る.私はこの問題を解決するために学んだ鬼です...耳がまだ慣れていないせいか、全く感じませんでした.再帰を使用する前に、結果をどのようにエクスポートするかを考慮する必要がありますが、これは容易ではありません.だから私は最終的にReferenceを参考にして、私がこれを見る前に、私は死んでも解けないと感じました.
const rPS = function(n) {
  n = n || 3;
  const cases = ['rock', 'paper', 'scissors'];

  const result = [];
  let makeACases = function (count, gatherCase) {
    if (count === 0) {
      result.push(gatherCase);
      return;
    }
    
    for (let i = 0; i < cases.length; i += 1) {
      let playerCase = cases[i];
      makeACases(count - 1, gatherCase.concat(playerCase));
    }
  }
  makeACases(n, []);
  return result;
}
直接関数を作成し,再帰的に実現した.なぜ関数の中の関数を利用することを早く考えなかったのでしょうか.JavaScriptを処理するのに十分な柔軟性はありません.私は今日初めてifから逃げるために何もなく帰ってきたことを知った.私はやりたいですが、今はまだ少し難しいです.がんばってください.