Contexte
Vous travaillez en tant que programmeur pour une entreprise de vente de voitures. Votre tâche pour cette semaine est de programmer un analyseur XML qui prend les données sur les modèles disponibles de différents constructeurs automobiles et jette des informations sur les nouveaux modèles. Heureusement pour vous, le département de test n'a fourni qu'un seul cas de test! Plus vite vous pouvez écrire du code qui le transmet, plus vous avez de temps pour la procrastination pendant le reste de la semaine.
Contribution
Votre entrée est exactement ce morceau de données XML, fourni par le service de test. Il contient des données sur certains constructeurs automobiles, leurs séries de voitures et les modèles de ces séries. Vous pouvez supposer une nouvelle ligne de fin.
<?xml version="1.0" ?>
<products>
<manufacturer name="Test Manufacturer 1">
<series title="Supercar" code="S1">
<model>
<name>Road Czar</name>
<code>C</code>
<year>2011</year>
</model>
<model>
<name>Ubervehicle</name>
<code>U</code>
<year>2013</year>
</model>
<model>
<name>Incredibulus</name>
<code>I</code>
<year>2015</year>
</model>
<model>
<name>Model 1</name>
<code>01</code>
<year>2010</year>
</model>
</series>
<series title="Test series 22" code="Test">
<model>
<name>Test model asdafds</name>
<code>TT</code>
<year>2014</year>
</model>
</series>
</manufacturer>
<manufacturer name="Car Corporation">
<series title="Corporation Car" code="CC">
<model>
<name>First and Only Model</name>
<code>FOM</code>
<year>2012</year>
</model>
</series>
</manufacturer>
<manufacturer name="Second Test Manufacturer">
<series title="AAAAAAAAAAAAAA" code="D">
<model>
<name>Some older model</name>
<code>O</code>
<year>2011</year>
</model>
<model>
<name>The newest model</name>
<code>N</code>
<year>2014</year>
</model>
</series>
<series title="BBBBBBBBBBBBBBB" code="asdf">
<model>
<name>Another newest model here</name>
<code>TT</code>
<year>2015</year>
</model>
</series>
</manufacturer>
</products>
Production
Votre sortie est cette chaîne. Il répertorie les constructeurs automobiles par ordre alphabétique, suivi par deux points et le nombre de séries qu'ils font. Sous chaque fabricant, il répertorie le nom de la série, le nom du modèle et le code de chacun de leurs modèles, en commençant par le plus récent et en reculant par année. Les espaces de fin et les sauts de ligne sont acceptables, tant que votre sortie ressemble à ceci lors de l'impression.
Car Corporation: 1 series
Corporation Car, First and Only Model (CC-FOM)
Second Test Manufacturer: 2 series
BBBBBBBBBBBBBBB, Another newest model here (asdf-TT)
AAAAAAAAAAAAAA, The newest model (D-N)
AAAAAAAAAAAAAA, Some older model (D-O)
Test Manufacturer 1: 2 series
Supercar, Incredibulus (S1-I)
Test series 22, Test model asdafds (Test-TT)
Supercar, Ubervehicle (S1-U)
Supercar, Road Czar (S1-C)
Supercar, Model 1 (S1-01)
Règles et notation
Vous pouvez écrire soit une fonction soit un programme complet. Le nombre d'octets le plus bas gagne et les failles standard sont interdites.
Notez que l'entrée est fixe: vous n'avez pas besoin de prendre en charge d'autres entrées que celle indiquée ici. Votre programme est autorisé à retourner des bêtises ou même à planter si l'entrée est modifiée de quelque manière que ce soit. Vous pouvez également ignorer l'entrée et coder en dur la sortie, si vous le souhaitez. Cependant, vous ne pouvez pas utiliser de bibliothèques d'analyseurs XML ou HTML intégrées.
Réponses:
CJam,
109107 octetsNotez que quatre des caractères de la chaîne au début ne sont pas imprimables.
Essayez-le en ligne dans l' interpréteur CJam .
Idée
Il s'agit essentiellement d'un code dur qui divise l'entrée à toutes les occurrences de < , > et " , sélectionne des morceaux spécifiques et les entrelace avec les parties restantes de la sortie.
Après avoir divisé l'entrée, les morceaux aux indices 110 , 114 et 122 sont Car Corporation , Corporation Car et First and Only Model . Les codes de série et de nom se trouvent aux index 116 et 126, qui peuvent être calculés en ajoutant 2 et 4 aux index des noms. Enfin, le nombre de séries est la longueur de la chaîne Car Corporation divisée par 9 (évidemment).
Ainsi, nous encodons la partie de la sortie qui correspond à ce fabricant comme
[114 122 110]
ou plutôt la chaîne"rzn"
.Code
la source
Bubblegum ,
227225 octetsCe n'est pas très compétitif, mais je n'ai pas pu résister à poster ma première réponse Bubblegum à un véritable défi de complexité kolmogorov .
Le vidage hexadécimal peut être inversé avec
xxd -r -c 18 > xml.bg
.Le code ignore complètement l'entrée. La compression a été effectuée avec zopfli , qui utilise le format DEFLATE mais obtient un meilleur rapport que (g) zip.
Merci à @ Sp3000 pour -2 octets!
la source
sed, 449 octets
Suppose que sed doit être exécuté avec les
-nr
options.Version non golfée:
la source
Bash,
388368365Petit test car:
la source
car_manufacturer.txt
. 2. Une chaîne ici serait plus courte de 3 octets. 3. L'utilisation de zopfli au lieu de gzip vanilla permet d'économiser 12 octets supplémentaires.<<L
par<<<(base encoded stuff)
.