Mục tiêu là viết một chương trình mã hóa một chương trình khác (đầu vào) với ít ký tự nhất có thể.
Chấm điểm
- Điểm số bằng với số lượng ký tự khác nhau cần thiết cho đầu ra.
- Điểm thấp hơn là tốt hơn.
Quy tắc
- Không có ngôn ngữ đích với một bộ lệnh giới hạn. (Không BrainF ** k, Khoảng trắng vv)
Chỉnh sửa : Tôi có nghĩa là ít nhất 26 ký tự có ý nghĩa,A
không thay đổi cách BrainF ** chương trình k hoạt động, vì vậy bạn không thể đếm nhân vật này. Áp dụng tương tự cho khoảng trắng. - Ngôn ngữ đích phải tồn tại tại thời điểm câu hỏi này được viết.
- Bạn phải bao gồm một lời giải thích nhỏ về cách bạn lưu trữ điểm số của bạn.
- Chương trình đầu vào là hợp lệ.
- Chương trình được mã hóa phải là một chương trình hợp lệ trong cùng ngôn ngữ với đầu vào.
- Chương trình được mã hóa phải thực hiện công việc giống như chương trình gốc.
- Bộ mã hóa của bạn phải hoạt động cho mọi chương trình hợp lệ bằng ngôn ngữ đó.
- Bao gồm một số mẫu đầu vào và đầu ra.
Ghi chú
- Bộ mã hóa có thể được viết bằng bất kỳ ngôn ngữ nào, không chỉ bằng ngôn ngữ mà nó nhắm tới.
- Đây không phải là mã golf , các chương trình dễ đọc được khuyến khích.
- Mục tiêu lớn là để xem có bao nhiêu nhân vật khác nhau cần thiết để viết bất cứ điều gì bằng ngôn ngữ đó. Tôi không cho phép BF, vì sẽ không có thách thức.
- Điều này được lấy cảm hứng từ In một chuỗi trong càng ít ký tự riêng biệt càng tốt , bạn có thể lấy nó làm metagolf cho câu hỏi đó.
Thí dụ
Trong Java, bạn có thể sử dụng \uXXXX
thay vì các ký tự khác. Một mục hợp lệ mã hóa mọi ký tự từ đầu vào theo cách này. Điều này sẽ có điểm 18. ( \ 0-9a-f
)
Mã trong Tcl, mã hóa chương trình Java:
set res {}
foreach char [split [read stdin] {}] {
append res [format \\u%04x [scan $char %c]]
}
puts $res
gets
đọc một dòng đầu vào duy nhất? Và bạn đã bỏ lỡ u
bộ mã hóa của mình (nhưng mặt khác, bạn không cần dung lượng và do đó điểm số vẫn giữ nguyên).