Thử thách
Viết chương trình nén và giải nén văn bản ASCII một cách dễ dàng. Nó nên được chuyên môn hóa để làm việc tốt với palindromes, bao gồm cả palindromes không nhạy cảm trường hợp và dấu chấm câu. Nén tốt nhất với nguồn nhỏ nhất sẽ thắng.
Chấm điểm
total_bytes_saved / sqrt(program_size)
- Điểm số cao nhất chiến thắng
total_bytes_saved
là các chuỗi nén nhỏ hơn bao nhiêu byte so với gốc, tổng số trong các trường hợp thử nghiệm bên dưới. program_size
là kích thước tính bằng byte của mã nguồn của cả chương trình nén và giải nén. Mã được chia sẻ giữa hai chỉ cần được tính một lần.
Chẳng hạn, nếu có 10 trường hợp thử nghiệm và chương trình 100 byte lưu 5 byte trên 7 trường hợp thử nghiệm, 10 trường hợp trên 2 trong số đó, nhưng trường hợp thử nghiệm cuối cùng dài hơn 2 byte, giải pháp sẽ đạt điểm 5.3. ( (7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3
)
Các trường hợp thử nghiệm
tacocat
toohottohoot
todderasesareddot
amanaplanacanalpanama
wasitacaroracatisaw?
Bob
IManAmRegalAGermanAmI
DogeeseseeGod
A Santa at NASA
Go hang a salami! I'm a lasagna hog.
Quy tắc
- Tiêu chuẩn áp dụng.
- Việc nén phải hoạt động trên tất cả các chuỗi văn bản ASCII (byte 32-126, đã bao gồm) có thể in được, không chỉ các palindromes. Tuy nhiên, nó không thực sự phải tiết kiệm không gian cho bất kỳ đầu vào nào.
- Đầu ra có thể là bất kỳ chuỗi byte hoặc ký tự nào, bất kể việc triển khai hay biểu diễn bên trong của nó (chuỗi, danh sách và mảng đều là trò chơi công bằng, chẳng hạn). Nếu mã hóa thành UTF-8, hãy đếm byte, không phải ký tự. Các chuỗi rộng (ví dụ UTF-16 hoặc UTF-32) không được phép trừ khi các loại tiền mã hóa duy nhất có thể được sử dụng nằm trong khoảng từ 0 đến 255.
- Nội dung nén / giải nén không được phép.
Vì lợi ích của riêng chúng tôi, hãy đăng các chuỗi nén với mã nguồn của bạn.
CẬP NHẬT 1: Ghi điểm thay đổi từ total_bytes_saved / program_size
để total_bytes_saved / sqrt(program_size)
tăng thêm trọng lượng để nén tốt hơn và giảm trọng lượng cho việc chơi golf tích cực. Điều chỉnh điểm số của bạn cho phù hợp.
CẬP NHẬT 2: cố định wasitacaroraratisaw?
làwasitacaroracatisaw?
[32-126]
không
1000 *
phần đó là thực sự cần thiết, và không tôi không nghĩ rằng nó sẽ làm cho điểm số cảm thấy "thỏa mãn" hơn;)
wasitacaroraratisaw?
là một ví dụ cho điều đó