Antecedentes
Estás trabajando como programador para una empresa de venta de automóviles. Su tarea para esta semana es programar un analizador XML que tome datos sobre los modelos disponibles de diferentes fabricantes de automóviles, e imprima información sobre los modelos más nuevos. ¡Afortunadamente para ti, el departamento de pruebas ha proporcionado solo un caso de prueba! Cuanto más rápido pueda escribir el código que lo pasa, más tiempo tendrá para postergar el resto de la semana.
Entrada
Su entrada es exactamente esta pieza de datos XML, suministrada por el departamento de pruebas. Contiene datos sobre algunos fabricantes de automóviles, sus series de automóviles y los modelos de estas series. Puede asumir una nueva línea final.
<?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>
Salida
Su salida es esta cadena. Enumera los fabricantes de automóviles en orden alfabético, seguidos de dos puntos y el número de series que hacen. En cada fabricante, enumera el nombre de la serie, el nombre del modelo y el código de cada uno de sus modelos, comenzando por el más nuevo y retrocediendo por año. Los espacios en blanco finales y los saltos de línea son aceptables, siempre que su salida sea similar a esta cuando se imprima.
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)
Reglas y puntuación
Puede escribir una función o un programa completo. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Tenga en cuenta que la entrada es fija: no necesita admitir ninguna otra entrada que no sea la que se proporciona aquí. Su programa puede devolver tonterías o incluso bloquearse si la entrada se modifica de alguna manera. También puede ignorar la entrada y codificar la salida, si lo desea. Sin embargo, es posible que no utilice XML o HTML analizador bibliotecas o muebles empotrados.
Respuestas:
CJAM,
109107 bytesTenga en cuenta que cuatro de los caracteres de la cadena al principio no se pueden imprimir.
Pruébelo en línea en el intérprete de CJam .
Idea
Básicamente es un código duro que divide la entrada en todas las apariciones de < , > y " , selecciona fragmentos específicos y los intercala con las partes restantes de la salida.
Después de dividir la entrada, los fragmentos en los índices 110 , 114 y 122 son Car Corporation , Corporation Car y First and Only Model . Los códigos para series y nombres se pueden encontrar en los índices 116 y 126, que se pueden calcular sumando 2 y 4 a los índices de los nombres. Finalmente, el número de series es la longitud de la cadena Car Corporation dividida por 9 (obviamente).
Por lo tanto, codificamos la parte de la salida que corresponde a este fabricante como,
[114 122 110]
o más bien, la cadena"rzn"
.Código
fuente
Chicle ,
227225 bytesEsto no es muy competitivo, pero no pude resistirme a publicar mi primera respuesta de Bubblegum a un desafío real de complejidad kolmogorov .
El hexdump se puede revertir con
xxd -r -c 18 > xml.bg
.El código ignora por completo la entrada. La compresión se ha realizado con zopfli , que utiliza el formato DEFLATE pero obtiene una mejor relación que (g) zip.
¡Gracias a @ Sp3000 por -2 bytes!
fuente
sed, 449 bytes
Asume que se ejecutará con las
-nr
opciones.Versión sin golf:
fuente
Bash,
388368365Prueba pequeña porque:
fuente
car_manufacturer.txt
. 2. Una cadena aquí sería 3 bytes más corta. 3. El uso de zopfli en lugar de vanilla gzip ahorra 12 bytes más.<<L
con<<<(base encoded stuff)
.