Herausforderung
Schreiben Sie ein Programm, das ASCII-Text verlustfrei komprimiert und dekomprimiert. Es sollte darauf spezialisiert sein, gut mit Palindromen zu arbeiten, einschließlich Palindromen, bei denen die Groß- und Kleinschreibung und die Zeichensetzung keine Rolle spielen. Die beste Komprimierung mit der kleinsten Quelle gewinnt.
Wertung
total_bytes_saved / sqrt(program_size)
- Höchste Punktzahl gewinnt
total_bytes_saved
gibt an, wie viele Bytes die komprimierten Zeichenfolgen kleiner sind als die Originale, insgesamt in den folgenden Testfällen. program_size
ist die Größe des Quellcodes sowohl des Komprimierungs- als auch des Dekomprimierungsprogramms in Byte. Der zwischen den beiden geteilte Code muss nur einmal gezählt werden.
Wenn beispielsweise 10 Testfälle vorhanden sind und ein 100-Byte-Programm 5 Bytes in 7 Testfällen gespeichert hat, jeweils 10 in 2 davon, aber der letzte Testfall 2 Bytes länger war, würde die Lösung 5,3 Punkte erzielen. ( (7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3
)
Testfälle
tacocat
toohottohoot
todderasesareddot
amanaplanacanalpanama
wasitacaroracatisaw?
Bob
IManAmRegalAGermanAmI
DogeeseseeGod
A Santa at NASA
Go hang a salami! I'm a lasagna hog.
Regeln
- Es gelten Standardlücken.
- Die Komprimierung muss für alle druckbaren ASCII-Textzeichenfolgen (Bytes 32-126, einschließlich) und nicht nur für Palindrome funktionieren. Tatsächlich muss jedoch kein Platz für Eingaben gespart werden.
- Die Ausgabe kann eine beliebige Folge von Bytes oder Zeichen sein, unabhängig von ihrer Implementierung oder internen Darstellung (beispielsweise sind alle Zeichenfolgen, Listen und Arrays ein faires Spiel). Wenn Sie nach UTF-8 codieren, zählen Sie die Bytes, nicht die Zeichen. Breite Zeichenfolgen (z. B. UTF-16 oder UTF-32) sind nur zulässig, wenn die einzigen Codepunkte, die möglicherweise verwendet werden, zwischen 0 und 255 liegen.
- Integrierte Komprimierungs- / Dekomprimierungsfunktionen sind nicht zulässig.
Veröffentlichen Sie die komprimierten Zeichenfolgen zu unserem eigenen Vergnügen mit Ihrem Quellcode.
UPDATE 1: Die Wertung wurde von total_bytes_saved / program_size
auf total_bytes_saved / sqrt(program_size)
geändert, um einer besseren Kompression mehr Gewicht und einem aggressiven Golfen weniger Gewicht zu verleihen. Passen Sie Ihre Ergebnisse entsprechend an.
UPDATE 2: behoben wasitacaroraratisaw?
zu seinwasitacaroracatisaw?
[32-126]
?
1000 *
Teil wirklich gebraucht wird, und nein, ich glaube nicht, dass sich die Partitur dadurch "befriedigender" anfühlt;)
wasitacaroraratisaw?
ist ein Gegenbeispiel dazu