fundo
Você está trabalhando como programador de uma empresa de vendas de carros. Sua tarefa para esta semana é programar um analisador XML que obtenha dados sobre modelos disponíveis de diferentes fabricantes de automóveis e imprima informações sobre os modelos mais recentes. Felizmente para você, o departamento de testes forneceu apenas um caso de teste! Quanto mais rápido você escrever o código que o passa, mais tempo terá para a procrastinação durante o resto da semana.
Entrada
Sua entrada é exatamente essa parte de dados XML, fornecida pelo departamento de testes. Ele contém dados sobre alguns fabricantes de automóveis, suas séries de carros e os modelos dessas séries. Você pode assumir uma nova linha à direita.
<?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>
Resultado
Sua saída é essa sequência. Ele lista os fabricantes de carros em ordem alfabética, seguidos por dois pontos e o número de séries que eles fazem. Sob cada fabricante, ele lista o nome da série, o nome do modelo e o código de cada um de seus modelos, começando pelo mais novo e voltando ao ano. Espaços em branco à direita e quebras de linha são aceitáveis, desde que sua saída seja semelhante a essa quando impressa.
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)
Regras e Pontuação
Você pode escrever uma função ou um programa completo. A contagem de bytes mais baixa vence e as brechas padrão não são permitidas.
Observe que a entrada é fixa: você não precisa suportar nenhuma outra entrada além da fornecida aqui. Seu programa pode retornar bobagens ou até travar se a entrada for modificada de alguma forma. Você também pode ignorar a entrada e codificar a saída, se desejar. No entanto, você não pode usar bibliotecas ou analisadores XML ou HTML do analisador.
Respostas:
CJam,
109107 bytesObserve que quatro dos caracteres da sequência no início não são imprimíveis.
Experimente on-line no intérprete CJam .
Idéia
Este é basicamente um código rígido que divide a entrada em todas as ocorrências de < , > e " , seleciona trechos específicos e os intercala com as partes restantes da saída.
Depois de dividir a entrada, os blocos nos índices 110 , 114 e 122 são Car Corporation , Corporation Car e First and Only Model . Os códigos de série e nome podem ser encontrados nos índices 116 e 126, que podem ser calculados adicionando 2 e 4 aos índices dos nomes. Finalmente, o número de séries é o comprimento da cadeia Car Corporation dividida por 9 (obviamente).
Assim, codificamos a parte da saída que corresponde a esse fabricante como
[114 122 110]
ou melhor a string"rzn"
.Código
fonte
Chiclete ,
227225 bytesIsso não é muito competitivo, mas simplesmente não pude resistir ao postar minha primeira resposta do Bubblegum a um desafio real de complexidade do kolmogorov .
O hexdump pode ser revertido com
xxd -r -c 18 > xml.bg
.O código ignora completamente a entrada. A compactação foi feita com o zopfli , que usa o formato DEFLATE, mas obtém uma taxa melhor que o zip (g).
Obrigado a @ Sp3000 por -2 bytes!
fonte
sed, 449 bytes
Pressupõe que sed seja executado com as
-nr
opções.Versão não destruída:
fonte
Bash,
388368365Teste pequeno porque:
fonte
car_manufacturer.txt
,. 2. Uma string here seria 3 bytes mais curta. 3. Usar o zopfli em vez do vanilla gzip economiza mais 12 bytes.<<L
por<<<(base encoded stuff)
.