ท้าทาย
เขียนโปรแกรมที่บีบอัดและคลายขนาดข้อความ ASCII แบบไม่สูญเสียข้อมูล มันควรจะมีความเชี่ยวชาญในการทำงานได้ดีกับ palindromes รวมถึง case-insensitive และ punctuation-palindromes การบีบอัดที่ดีที่สุดกับแหล่งที่เล็กที่สุดชนะ
เกณฑ์การให้คะแนน
total_bytes_saved / sqrt(program_size)
- ชนะคะแนนสูงสุด
total_bytes_saved
เป็นจำนวนไบต์ที่บีบอัดสตริงที่มีขนาดเล็กกว่าต้นฉบับรวมในกรณีทดสอบด้านล่างทั้งหมด program_size
มีขนาดเป็นไบต์ของซอร์สโค้ดของโปรแกรมบีบอัดและคลายการบีบอัด รหัสที่ใช้ร่วมกันระหว่างสองจำเป็นต้องนับเพียงครั้งเดียว
ตัวอย่างเช่นหากมี 10 กรณีทดสอบและโปรแกรม 100 ไบต์บันทึก 5 ไบต์ในกรณีทดสอบ 7 กรณีแต่ละกรณีมี 2 กรณี แต่กรณีทดสอบสุดท้ายคือ 2 ไบต์อีกต่อไปโซลูชันจะได้คะแนน 5.3 ( (7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3
)
กรณีทดสอบ
tacocat
toohottohoot
todderasesareddot
amanaplanacanalpanama
wasitacaroracatisaw?
Bob
IManAmRegalAGermanAmI
DogeeseseeGod
A Santa at NASA
Go hang a salami! I'm a lasagna hog.
กฎระเบียบ
- ช่องโหว่มาตรฐานใช้
- การบีบอัดต้องทำงานกับสตริงข้อความ ASCII ที่พิมพ์ได้ทั้งหมด (ไบต์ 32-126, รวมแล้ว) ไม่ใช่แค่ palindromes อย่างไรก็ตามไม่จำเป็นต้องประหยัดพื้นที่สำหรับอินพุตใด ๆ
- เอาต์พุตสามารถเป็นลำดับไบต์หรืออักขระใด ๆ โดยไม่คำนึงถึงการนำไปใช้หรือการนำเสนอภายใน (สตริงรายการและอาร์เรย์เป็นเกมที่ยุติธรรมทั้งหมดเป็นต้น) หากเข้ารหัสเป็น UTF-8 ให้นับไบต์ไม่ใช่ตัวอักษร ไม่อนุญาตให้ใช้สตริงแบบกว้าง (เช่น UTF-16 หรือ UTF-32) เว้นแต่ว่ารหัสเดียวที่อาจใช้ได้ระหว่าง 0 ถึง 255
- ไม่อนุญาตให้มีการบีบอัดบิวด์อิน / บีบอัดข้อมูล
เพื่อความเพลิดเพลินของเราเองโพสต์สตริงที่บีบอัดด้วยซอร์สโค้ดของคุณ
อัปเดต 1:การให้คะแนนเปลี่ยนจากtotal_bytes_saved / program_size
เป็นtotal_bytes_saved / sqrt(program_size)
เพื่อให้มีน้ำหนักมากขึ้นเป็นการบีบอัดที่ดีขึ้นและมีน้ำหนักน้อยลงในการตีกอล์ฟที่ดุเดือด ปรับคะแนนของคุณตาม
UPDATE 2: ได้รับการแก้ไขแล้วwasitacaroraratisaw?
ให้เป็นwasitacaroracatisaw?
[32-126]
อะไร
1000 *
จำเป็นต้องมีส่วนจริงๆและไม่มีฉันไม่คิดว่ามันจะทำให้คะแนนรู้สึก "พอใจ";)
wasitacaroraratisaw?
มันเป็นตัวอย่างที่ตรงกันข้าม