Giới thiệu
Bạn là một tên tội phạm có nhiệm vụ đánh cắp một số kế hoạch bí mật từ startup công nghệ mới Dejavu. Bạn lẻn vào bức tường phía sau, nhưng tìm một cánh cửa cần có chốt để mở nó. Bạn nhận ra cấu tạo của khóa và biết rằng cần một mã pin gồm 5 chữ số bằng cách sử dụng tất cả các số từ 0 đến 4. Sau mỗi chữ số được nhập, khóa sẽ kiểm tra 5 chữ số cuối cùng được nhập và mở nếu mã chính xác. Bạn phải vượt qua khóa này, và nhanh chóng.
Superpermutations trong một Nutshell
Một hoán vị là tất cả các kết hợp có thể có của một tập hợp các chữ số nhất định. ví dụ: tất cả các hoán vị của các chữ số 0, 1, 2 là:
012, 021, 102, 120, 201 và 210.
Nếu chúng ta ghép tất cả các hoán vị này lại với nhau, chúng ta sẽ có một siêu biến:
012021102120201210
siêu đột biến này chứa tất cả các hoán vị của 0, 1, 2, nhưng có thể làm cho nó ngắn hơn cái này. Tôi sẽ bỏ qua một chút ở đây, nhưng siêu đột biến ngắn nhất của các chữ số này là:
012010210
Đối với ý định và mục đích của chúng tôi, đây thực chất là chuỗi chữ số ngắn nhất có chứa tất cả các hoán vị có thể có của các chữ số đó, tức là một siêu biến.
Bài tập
Nhiệm vụ của bạn khó hơn một chút so với ví dụ siêu đột biến như được hiển thị ở trên, bởi vì bạn có thêm hai chữ số để lo lắng. - Nếu bạn chưa đọc về siêu năng lực, hoặc ví dụ của tôi ở trên có chút không rõ ràng, tôi khuyên bạn nên đọc bài viết tuyệt vời này của Patrick Honner về chủ đề này (thử thách này được truyền cảm hứng khá nhiều từ bài viết của anh ấy, vì vậy, rất thích anh ấy): https://www.quantamagazine.org/unscrambled-the-hidden-secrets-of-superpermutations-20190116/ . Mục tiêu của bạn là viết chương trình ngắn nhất có thể tạo ra siêu biến của các chữ số từ 0 đến 4.
Chấm điểm
Chương trình của bạn không nhận bất kỳ đầu vào nào, và tạo ra sự siêu biến của các chữ số từ 0 đến 4. Kết quả siêu đột biến này phải được in ra bàn điều khiển hoặc hiển thị rõ ràng cho người dùng trong phạm vi do ngôn ngữ bạn chọn cung cấp. Đây không phải là hoán vị ngắn nhất có thể, nó chỉ phải là một siêu biến hợp lệ. Bởi vì điều này, mục tiêu là viết chương trình ngắn nhất với siêu đột biến ngắn nhất, vì vậy bạn nên tính điểm của mình như vậy:
kích thước tệp (byte) * tạo độ dài siêu đột biến (chữ số)
ví dụ: nếu tôi có chương trình 40 byte và siêu đột biến của tôi dài 153 chữ số, điểm của tôi sẽ là:
40 * 153 = 6120
như mọi khi, mục tiêu là đạt được điểm này càng thấp càng tốt.
Bản mẫu
Đây là cách bạn nên đăng câu trả lời của bạn:
Ngôn ngữ | Ghi bàn
liên kết đến mã trong môi trường làm việc (nếu có thể)
code snippet
giải thích mã, vv
Chung kết
Đây là một trong những câu hỏi đầu tiên của tôi trên trang web này. Vì vậy, vui lòng cho tôi biết nếu tôi thiếu bất cứ điều gì hoặc một phần của thử thách của tôi không rõ ràng. Cảm ơn bạn, và vui chơi golf!