任意の長さのシーケンスに対して離散フーリエ変換(DFT)を実装します。これは関数またはプログラムとして実装でき、シーケンスは引数として、または標準入力を使用して指定できます。
アルゴリズムは、順方向の標準DFTに基づいて結果を計算します。入力シーケンスの長さはNで構成され[x(0), x(1), ..., x(N-1)]ます。出力シーケンスは同じ長さで[X(0), X(1), ..., X(N-1)]、それぞれX(k)が以下の関係によって定義される場所で構成されます。
ルール
- これはコードゴルフなので、最短のソリューションが優先されます。
- 順方向または逆方向(逆方向とも呼ばれる)でDFTを計算する組み込み関数は許可されていません。
- 浮動小数点の不正確さはあなたに対してカウントされません。
テストケース
DFT([1, 1, 1, 1]) = [4, 0, 0, 0]
DFT([1, 0, 2, 0, 3, 0, 4, 0]) = [10, -2+2j, -2, -2-2j, 10, -2+2j, -2, -2-2j]
DFT([1, 2, 3, 4, 5]) = [15, -2.5+3.44j, -2.5+0.81j, -2.5-0.81j, -2.5-3.44j]
DFT([5-3.28571j, -0.816474-0.837162j, 0.523306-0.303902j, 0.806172-3.69346j, -4.41953+2.59494j, -0.360252+2.59411j, 1.26678+2.93119j] = [2, -3j, 5, -7j, 11, -13j, 17]
助けて
長さが2の累乗に等しいシーケンスに対してFFTアルゴリズムを使用してDFTを見つけることについては、以前に課題がありました。この課題は、複雑さを制限するものではなく、ソリューションを任意の長さのシーケンスで機能させる必要があることに注意してください。

