Introdução
Minha sobrinha quer fazer uma pista de corrida. Ela tem peças de madeira que se encaixam para formar a pista. Cada parte é quadrada e contém uma forma diferente. Usarei os caracteres de desenho de tubo para ilustrar:
│
: a estrada que segue verticalmente─
: a estrada que percorre horizontalmente┌
┐
└
┘
: as estradas que viram em uma direção┼
: Uma ponte com passagem subterrânea
Curiosamente, não existem peças do entroncamento.
Aqui está um exemplo de uma possível pista de carro de corrida:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
As regras para uma pista de corrida válida são as seguintes:
- Não pode haver estradas que não levam a lugar nenhum.
- Ele deve formar um loop (e todas as peças devem fazer parte do mesmo loop).
- Nas pontes / passagens inferiores, você não pode virar (então você precisa passar direto por elas).
Infelizmente, as peças de pista de corrida que eu e minha sobrinha são limitadas. Mas definitivamente queremos usar todos eles na pista. Escreva um programa que, dada uma lista de quais peças estejam em nosso inventário, produza uma pista de carro de corrida que use todas essas peças.
Descrição da entrada
Gostaríamos que a entrada chegasse via STDIN, argumentos de linha de comando, leitura de arquivo ou uma função de entrada do usuário (como raw_input
ou prompt
). A entrada é números inteiros positivos separados por vírgula no formato
│,─,┌,┐,└,┘,┼
onde cada um deles representa a quantidade daquela peça em particular que temos. Então, por exemplo, a entrada:
1,1,1,1,1,1,1
significaria que tínhamos um de cada peça.
Descrição da saída
Crie uma pista de carro de corrida usando os caracteres de desenho de tubo listados acima. A pista de corrida deve usar exatamente o número de cada peça especificada na entrada - nem mais nem menos. Haverá pelo menos uma pista de carro de corrida válida para cada entrada.
Exemplo de entradas e saídas
Entrada: 3,5,2,2,2,2,1
Uma saída possível:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Entrada: 0,0,1,4,4,1,3
Uma saída possível:
┌┐
└┼┐
└┼┐
└┼┐
└┘