Défi
Écrivez un programme qui compresse et décompresse le texte ASCII sans perte. Il devrait être spécialisé pour bien fonctionner avec les palindromes, y compris les palindromes insensibles à la casse et à la ponctuation. La meilleure compression avec la plus petite source gagne.
Notation
total_bytes_saved / sqrt(program_size)
- Le score le plus élevé gagne
total_bytes_saved
est le nombre d'octets plus petit que les chaînes compressées sont que les originaux, total dans les cas de test ci-dessous. program_size
est la taille en octets du code source des programmes de compression et de décompression. Le code partagé entre les deux ne doit être compté qu'une seule fois.
Par exemple, s'il y a 10 cas de test et qu'un programme de 100 octets a enregistré 5 octets sur 7 cas de test, 10 chacun sur 2 d'entre eux, mais que le dernier cas de test avait 2 octets de plus, la solution obtiendrait 5,3. ( (7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3
)
Cas de test
tacocat
toohottohoot
todderasesareddot
amanaplanacanalpanama
wasitacaroracatisaw?
Bob
IManAmRegalAGermanAmI
DogeeseseeGod
A Santa at NASA
Go hang a salami! I'm a lasagna hog.
Règles
- Des échappatoires standard s'appliquent.
- La compression doit fonctionner sur toutes les chaînes de texte ASCII imprimables (octets 32 à 126 inclus), pas seulement sur les palindromes. Cependant, il n'a pas besoin d'économiser de l'espace pour les entrées.
- La sortie peut être n'importe quelle séquence d'octets ou de caractères, quelle que soit sa mise en œuvre ou sa représentation interne (les chaînes, les listes et les tableaux sont tous des jeux équitables, par exemple). Si vous encodez en UTF-8, comptez les octets, pas les caractères. Les chaînes larges (par exemple UTF-16 ou UTF-32) ne sont pas autorisées à moins que les seuls points de code éventuellement utilisés soient compris entre 0 et 255.
- Les commandes internes de compression / décompression ne sont pas autorisées.
Pour notre plus grand plaisir, postez les chaînes compressées avec votre code source.
MISE À JOUR 1: La notation est passée de total_bytes_saved / program_size
à total_bytes_saved / sqrt(program_size)
afin de donner plus de poids à une meilleure compression et moins de poids au golf agressif. Ajustez vos scores en conséquence.
MISE À JOUR 2: corrigé wasitacaroraratisaw?
pour êtrewasitacaroracatisaw?
[32-126]
?
1000 *
partie soit vraiment nécessaire, et non je ne pense pas que cela rendra le score plus "satisfaisant";)
wasitacaroraratisaw?
c'est un contre-exemple à cela