Wprowadzenie
Moja siostrzenica chce zrobić tor wyścigowy. Ma drewniane elementy, które pasują do siebie, tworząc tor. Każda część ma kwadratowy kształt i zawiera inny kształt. Wykorzystam znaki rysunkowe do zilustrowania:
│: droga prowadząca w pionie─: droga prowadząca poziomo┌┐└┘: drogi skręcające w określonym kierunku┼: Most z przejściem podziemnym
Co ciekawe, nie ma trójników.
Oto przykład możliwego toru wyścigowego:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Zasady obowiązującego toru wyścigowego są następujące:
- Żadne drogi nie prowadzą do nikąd.
- Musi tworzyć pętlę (a wszystkie elementy muszą być częścią tej samej pętli).
- Na mostach / przejazdach podziemnych nie możesz skręcić (więc musisz przejść prosto przez nie).
Niestety kawałki toru wyścigowego, które moja siostrzenica i ja mamy, są ograniczone. Ale zdecydowanie chcemy wykorzystać je wszystkie na torze. Napisz program, który, biorąc pod uwagę listę elementów znajdujących się w naszym ekwipunku, generuje tor samochodu wyścigowego, który wykorzystuje wszystkie te elementy.
Opis wejścia
Chcielibyśmy, aby dane wejściowe były wprowadzane za pośrednictwem STDIN, argumentów wiersza poleceń, odczytu plików lub funkcji wprowadzania danych przez użytkownika (np. raw_inputLub prompt). Dane wejściowe to oddzielone przecinkami dodatnie liczby całkowite w formularzu
│,─,┌,┐,└,┘,┼
gdzie każdy z nich reprezentuje ilość tego konkretnego kawałka, który mamy. Na przykład dane wejściowe:
1,1,1,1,1,1,1
oznaczałoby to, że mieliśmy po jednym z każdego kawałka.
Opis wyjścia
Wyprowadź tor samochodu wyścigowego, używając znaków rysowania rur wymienionych powyżej. Tor samochodu wyścigowego powinien wykorzystywać dokładnie numer każdego elementu podany na wejściu - nie więcej i nie mniej. Dla każdego wejścia będzie co najmniej jeden ważny tor wyścigowy.
Przykładowe wejścia i wyjścia
Wejście: 3,5,2,2,2,2,1
Możliwe wyjście:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Wejście: 0,0,1,4,4,1,3
Możliwe wyjście:
┌┐
└┼┐
└┼┐
└┼┐
└┘