TIL Code Kata複素数の積
10006 ワード
に質問
パラメータ
例えば、
各パラメータが"1+-1 i"および"1+-1 i"の場合、所望の戻り値は"0+-2 i"
function complexNumberMultiply (x, y) { };
1.ソリューション
🔑 (解決策)2つのパラメータが
a+bi
およびc+di
であると仮定する.乗算法則で2つの複素数を乗じる.
(a+bi) * (c+di) = ac + adi + bci - bd
分実部と虚部整理.
ac + adi + bci - bd = (ac - bd) + (ad + bc)i
🔑 (解決策)実数と虚数を区別する「+」と「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.結果
作成中にエラーが発生した場合は、フィードバックに感謝します。開発者に小さなフィードバックを残してほしいです。ありがとうございます:)
Reference
この問題について(TIL Code Kata複素数の積), 我々は、より多くの情報をここで見つけました https://velog.io/@okcleff/TIL-Code-Kata-복소수의-곱셈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol