Вступление
Моя племянница хочет сделать гоночную машину. У нее есть деревянные части, которые соединяются, чтобы сформировать след. Каждая часть имеет квадратную форму и содержит различную форму. Я буду использовать символы рисования трубы, чтобы проиллюстрировать:
│
: дорога, которая идет вертикально─
: дорога, которая идет горизонтально┌
┐
└
┘
: дороги, которые поворачивают в направлении┼
: Мост с подземным переходом
Любопытно, что там нет тройников.
Вот пример возможной трассы гоночного автомобиля:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Правила действующего гоночного трека следующие:
- Там не может быть никаких дорог, которые ведут в никуда.
- Он должен образовывать цикл (и все части должны быть частью одного цикла).
- На мостах / подземных переходах вы не можете повернуть (поэтому вы должны пройти прямо через них).
К сожалению, куски гоночной машины у моей племянницы ограничены. Но мы определенно хотим использовать их все в треке. Напишите программу, которая, учитывая список того, что находится в нашем инвентаре, выводит дорожку гоночной машины, которая использует все эти части.
Описание входа
Мы бы хотели, чтобы ввод поступал через STDIN, аргументы командной строки, чтение файла или функцию пользовательского ввода (например, raw_input
или prompt
). Входные данные разделены запятыми положительными целыми числами в форме
│,─,┌,┐,└,┘,┼
где каждый из них представляет количество этой конкретной части, которую мы имеем. Так, например, вход:
1,1,1,1,1,1,1
будет означать, что у нас был один из каждого куска.
Описание выхода
Выведите дорожку гоночной машины, используя символы рисования труб, перечисленные выше. Трасса гоночной машины должна использовать именно то число, которое указано во входных данных - не больше и не меньше. Для каждого входа будет хотя бы одна действующая трасса гоночного автомобиля.
Пример входов и выходов
Входные данные: 3,5,2,2,2,2,1
Возможный вывод:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Входные данные: 0,0,1,4,4,1,3
Возможный вывод:
┌┐
└┼┐
└┼┐
└┼┐
└┘