TIL Code Kata複素数の積


に質問

  • は、2つの複素数の積から戻る論理によって
  • を実現する.
    パラメータ
  • の複素数は「a+bi」形式の文字列であり、返される複素数も「a+bi」形式の文字列
  • である.
    例えば、
  • .
    各パラメータが"1+-1 i"および"1+-1 i"の場合、所望の戻り値は"0+-2 i"
  • である.
    function complexNumberMultiply (x, y) { };

    1.ソリューション

  • 事故過程
  • 🔓 2つの複素数を乗じます.
    🔑 (解決策)2つのパラメータがa+biおよびc+diであると仮定する.

  • 乗算法則で2つの複素数を乗じる.(a+bi) * (c+di) = ac + adi + bci - bd

  • 分実部と虚部整理.ac + adi + bci - bd = (ac - bd) + (ad + bc)i
  • 🔓 (問題を把握する)stringで与えられた複素数をnumber形式に変換して計算する.
    🔑 (解決策)実数と虚数を区別する「+」と「i」に基づいて文字列を区別し(sliceメソッドを用いる)、それを数字に変換する(Numberメソッド).
    // (a+bi) * (c+di) = (ac-bd)+(ad+bc)i
    const complexNumberMultiply = (x, y) => {
      const a = Number(x.slice(0, x.indexOf('+')));
      const b = Number(x.slice(x.indexOf('+') + 1, x.indexOf('i')));
      const c = Number(y.slice(0, y.indexOf('+')));
      const d = Number(y.slice(y.indexOf('+') + 1, y.indexOf('i')));
    }
    🔓 (問題を理解する)2つの複素数を乗算し、stringに変換して返します.
    🔑 (解決策)複素乗算法則に従って計算し,テンプレート文字を用いて返す.
    // (a+bi) * (c+di) = (ac-bd)+(ad+bc)i
    const complexNumberMultiply = (x, y) => {
      const a = Number(x.slice(0, x.indexOf('+')));
      const b = Number(x.slice(x.indexOf('+') + 1, x.indexOf('i')));
      const c = Number(y.slice(0, y.indexOf('+')));
      const d = Number(y.slice(y.indexOf('+') + 1, y.indexOf('i')));
      
      const result = `${a*c - b*d}+${a*d + b*c}i`;
      
      return result;
    }

    2.結果



    作成中にエラーが発生した場合は、フィードバックに感謝します。開発者に小さなフィードバックを残してほしいです。ありがとうございます:)