Bài tập
Mã hóa một chuỗi hoàn toàn bao gồm các chữ cái in hoa ( A-Z
) chỉ sử dụng các số 0 và một, sử dụng lược đồ yêu thích của riêng bạn. Nhưng quy tắc không đơn giản!
Quy tắc
- Chương trình / chức năng của bạn phải xử lý chính xác bất kỳ chuỗi đầu vào hợp lệ nào có độ dài 8 .
- Các kết quả phải có cùng độ dài cho tất cả các đầu vào.
- Các kết quả phải khác biệt cho đầu vào riêng biệt.
- Kết quả phải càng ngắn càng tốt.
- Các kết quả phải bằng không - một số dư (có số lượng tương tự với số không). Họ không cần phải bằng nhau (tức là cân bằng hoàn hảo), nhưng điểm của bạn sẽ bị phạt vì điều đó.
Bạn không phải cung cấp một chương trình / chức năng giải mã mã hóa của bạn.
Đầu vào và đầu ra
- Bạn có thể quyết định chấp nhận bất kỳ bộ 26 ký tự ASCII có thể in riêng biệt nào thay vì
A-Z
. - Bạn có thể quyết định xuất bất kỳ cặp ký tự ASCII có thể in riêng biệt nào thay vì
0
và1
. - Bạn không được phép xuất một số nguyên thay vì một chuỗi bit, vì nó có thể có các số 0 đứng đầu và không rõ ràng nếu bạn thực sự đáp ứng quy tắc 2.
- Nếu bạn quyết định đi chệch khỏi mặc định (
A-Z
đầu vào và01
đầu ra), bạn phải chỉ định các bộ ký tự đầu vào / đầu ra trong bài gửi của mình.
Chấm điểm
- Điểm cơ bản: Kích thước mã hoặc 1 nếu chương trình của bạn trống.
- Hình phạt
- Hình phạt cho chiều dài: nhân lên
1.5 ** (encoded length - 42)
- Không có tiền thưởng cho việc ngắn hơn; 42 là độ dài tối thiểu để mã hóa cân bằng hoàn hảo các chuỗi 8 độ dài với kích thước bảng chữ cái 26.
- Hình phạt cho việc không cân bằng: nhân
2 ** max(abs(ones - zeros) for every valid input of length 8)
, trong đóones
vàzeros
lần lượt là 1 và 0 trong mỗi đầu ra. - Việc gửi của bạn phải thể hiện một ví dụ trong trường hợp xấu nhất (đầu vào / đầu ra) hoặc giải thích lý thuyết về giá trị hình phạt.
- Hình phạt cho chiều dài: nhân lên
- Điểm thấp nhất sẽ thắng.
Gửi ví dụ
Giả thuyết esolang, 0 byte, Điểm 74733.8906
Đây là một esolang giả thuyết, trong đó một chương trình trống in ra tất cả các mã ASCII của các ký tự đầu vào ở dạng nhị phân.
Ví dụ: nếu bạn cung cấp AAAAAAAA
làm đầu vào, chương trình sẽ in 1000001
8 lần liên tiếp, tức là 10000011000001100000110000011000001100000110000011000001
.
Bảng chữ cái đầu vào được chọn là CEFGIJKLMNQRSTUVXYZabcdefh
. Theo cách này, tất cả các ký tự được chuyển đổi thành bảy chữ số trong nhị phân và số không một chỉ khác nhau một ký tự (tất cả chúng đều có ba 1 và bốn 0 hoặc ngược lại khi được chuyển đổi thành nhị phân).
Độ dài đầu ra luôn là 56 và sự mất cân bằng trong trường hợp xấu nhất xảy ra trên các đầu vào như CCCCCCCC
, trong đó các số 0 xuất hiện nhiều hơn 8 lần so với đầu vào.
Do đó, điểm của bài nộp này là 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.