ใช้การแปลงฟูริเยร์แบบไม่ต่อเนื่อง (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]
ช่วยด้วย
ก่อนหน้านี้มีความท้าทายในการค้นหา DFT โดยใช้อัลกอริทึม FFT สำหรับลำดับที่มีความยาวเท่ากับกำลัง 2 คุณอาจพบว่ามีเทคนิคบางอย่างที่อาจช่วยคุณได้ที่นี่ โปรดทราบว่าการท้าทายนี้ไม่ได้จำกัดความซับซ้อนของคุณและยังต้องใช้วิธีแก้ปัญหาของคุณในการเรียงลำดับความยาว

