Thực hiện Biến đổi Fourier rời rạc (DFT) cho một chuỗi có độ dài bất kỳ. Điều này có thể được thực hiện như là một hàm hoặc một chương trình và chuỗi có thể được đưa ra dưới dạng đối số hoặc sử dụng đầu vào tiêu chuẩn.
Thuật toán sẽ tính toán một kết quả dựa trên DFT tiêu chuẩn theo hướng chuyển tiếp. Trình tự đầu vào có chiều dài N
và bao gồm [x(0), x(1), ..., x(N-1)]
. Chuỗi đầu ra sẽ có cùng độ dài và bao gồm [X(0), X(1), ..., X(N-1)]
mỗi nơi X(k)
được xác định bởi mối quan hệ bên dưới.
Quy tắc
- Đây là môn đánh gôn nên giải pháp ngắn nhất sẽ thắng.
- Không được phép xây dựng các tính toán DFT theo hướng tiến hoặc lùi (còn được gọi là nghịch đảo).
- Không chính xác điểm nổi sẽ không được tính vào bạn.
Các trường hợp thử nghiệm
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]
Cứu giúp
Có một thử thách trước đây để tìm DFT bằng thuật toán FFT cho các chuỗi có độ dài bằng với sức mạnh là 2. Bạn có thể tìm thấy một số thủ thuật có thể giúp bạn ở đây. Hãy nhớ rằng thử thách này không giới hạn bạn trong bất kỳ sự phức tạp nào và cũng yêu cầu giải pháp của bạn hoạt động cho các chuỗi có độ dài bất kỳ.