tło
Pracujesz jako programista w firmie zajmującej się sprzedażą samochodów. Twoim zadaniem na ten tydzień jest zaprogramowanie parsera XML, który pobiera dane o dostępnych modelach od różnych producentów samochodów i ładnie drukuje informacje o najnowszych modelach. Na szczęście dla ciebie dział testowy dostarczył tylko jeden przypadek testowy! Im szybciej możesz napisać kod, który go mija, tym więcej czasu masz na odwlekanie w pozostałej części tygodnia.
Wejście
Twój wkład to dokładnie ten fragment danych XML dostarczony przez dział testowy. Zawiera dane dotyczące niektórych producentów samochodów, ich serii samochodów i modeli w tych seriach. Możesz założyć końcowy znak nowej linii.
<?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>
Wynik
Twój wynik to ten ciąg. Podaje producentów samochodów w kolejności alfabetycznej, a następnie dwukropek i liczbę wyprodukowanych serii. Pod każdym producentem wymieniono nazwę serii, nazwę modelu i kod każdego z ich modeli, zaczynając od najnowszego i cofając się z roku na rok. Dopuszczalne są końcowe spacje i podziały wierszy, pod warunkiem, że wydruk będzie wyglądał podobnie do tego.
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)
Zasady i punktacja
Możesz napisać funkcję lub pełny program. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Zauważ, że dane wejściowe są stałe: nie musisz obsługiwać żadnych innych danych wejściowych niż podane tutaj. Twój program może zwracać bzdury, a nawet awarię, jeśli dane wejściowe zostaną zmodyfikowane w jakikolwiek sposób. W razie potrzeby możesz również zignorować dane wejściowe i zakodować dane wyjściowe. Nie można jednak używać bibliotek parserów XML lub HTML ani wbudowanych funkcji.