Các khoảng cách Hamming giữa hai chuỗi chiều dài bằng nhau là số vị trí mà tại đó những biểu tượng tương ứng là khác nhau.
Hãy P
là một chuỗi nhị phân có độ dài n
và T
là một chuỗi nhị phân có độ dài 2n-1
. Chúng ta có thể tính n
khoảng cách Hamming giữa P
và mọi n
chuỗi con T
thứ cấp theo thứ tự từ trái sang phải và đặt chúng vào một mảng (hoặc danh sách).
Ví dụ trình tự khoảng cách Hamming
Hãy để P = 101
và T = 01100
. Trình tự khoảng cách Hamming bạn nhận được từ cặp này là 2,2,1
.
Bài tập
Để tăng n
bắt đầu từ n=1
, hãy xem xét tất cả các cặp chuỗi nhị phân có thể có P
độ dài n
và T
độ dài 2n-1
. Có 2**(n+2n-1)
những cặp như vậy và do đó có nhiều chuỗi khoảng cách Hamming. Tuy nhiên, nhiều trong số các chuỗi đó sẽ giống hệt nhau. Nhiệm vụ là tìm ra bao nhiêu là khác biệt cho mỗi n
.
Mã của bạn sẽ xuất ra một số cho mỗi giá trị n
.
Ghi bàn
Điểm của bạn là cao nhất n
mà mã của bạn đạt được trên máy của tôi trong 5 phút. Thời gian là cho tổng thời gian chạy, không phải thời gian cho việc đó n
.
Ai thắng
Người có số điểm cao nhất sẽ chiến thắng. Nếu hai hoặc nhiều người kết thúc với cùng số điểm thì đó là câu trả lời đầu tiên chiến thắng.
Ví dụ câu trả lời
Cho n
từ 1
đến 8
câu trả lời tối ưu là 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Ngôn ngữ và thư viện
Bạn có thể sử dụng bất kỳ ngôn ngữ và thư viện có sẵn mà bạn thích. Nếu khả thi, sẽ rất tốt để có thể chạy mã của bạn, vì vậy vui lòng bao gồm một lời giải thích đầy đủ về cách chạy / biên dịch mã của bạn trong Linux nếu có thể.
Máy của tôi Thời gian sẽ được chạy trên máy 64 bit của tôi. Đây là bản cài đặt Ubuntu tiêu chuẩn với RAM 8GB, Bộ xử lý tám nhân AMD FX-8350 và Radeon HD 4250. Điều này cũng có nghĩa là tôi cần có khả năng chạy mã của bạn.
Câu trả lời hàng đầu
- 11 trong C ++ bởi frageum. 25 giây.
- 11 trong C ++ của Andrew Epstein. 176 giây.
- 10 trong Javascript của Neil. 54 giây.
- 9 trong Haskell bởi nimi. 4 phút và 59 giây.
- 8 trong Javascript bởi fəˈnɛtɪk. 10 giây.
fastest-code
để lại nhiều không gian hơn cho việc tối ưu hóa thông qua cả tối ưu hóa mức mã và thuật toán tốt. Vì vậy, tôi nghĩ rằng đó faster-code
là tốt hơn faster-algorithm
.