Dada uma lista de entrada de strings não vazias, produza uma representação artística ASCII de um torneio, com base nas seguintes regras de desenho:
- O número de strings é garantido como sendo de quantidade
2,4,8,16,etc.
- As duas primeiras cordas se tocam, e as próximas duas tocam e assim por diante. Esta é a primeira rodada.
- Para cada jogo, escolha o vencedor aleatoriamente com igual probabilidade.
- Para a próxima rodada, o vencedor do primeiro jogo joga o vencedor do segundo jogo, o vencedor do terceiro jogo joga o vencedor do quarto jogo e assim por diante. As rodadas subsequentes seguem o padrão.
- Eventualmente, há um vencedor geral.
- Para uma saída bonita (necessária), todas as seqüências devem ser anexadas e anexadas com um sublinhado
_
. - Para que os colchetes se alinhem adequadamente, cada entrada deve ser preenchida com
_
o mesmo comprimento para essa rodada. - Você pode escolher se o preenchimento é anexado ou anexado, desde que consistente.
- Em vez disso, você pode optar por preencher previamente todas as seqüências de caracteres com o mesmo comprimento, e não por rodada. Qualquer que seja o golfista para o seu código.
Regras adicionais
- Novas linhas à esquerda ou à direita ou espaços em branco são opcionais, desde que os caracteres sejam alinhados corretamente.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
Exemplo com cidades ['Boston', 'New York', 'Charlotte', 'Atlanta', 'St. Paul', 'Chicago', 'Los Angeles', 'Phoenix']
:
_Boston______
\_New York____
_New York____/ \
\_New York_
_Charlotte___ / \
\_Charlotte___/ \
_Atlanta_____/ \
\_St. Paul_
_St. Paul____ /
\_St. Paul____ /
_Chicago_____/ \ /
\_St. Paul_/
_Los Angeles_ /
\_Los Angeles_/
_Phoenix_____/
Exemplo com ['Lions', 'Tigers', 'Bears', 'Oh My']
:
_Lions__
\_Tigers_
_Tigers_/ \
\_Tigers_
_Bears__ /
\_Bears__/
_Oh My__/
Respostas:
Carvão ,
9279 bytesExperimente online! Link é a versão detalhada do código. Precisa de uma linha em branco para marcar o final da entrada. Explicação:
Inicialize a variável
q
. Isso mantém o tamanho dos zig-zags, ou seja, metade do espaço entre as linhas.Leia linhas de entrada não vazias na matriz
u
. As linhas são automaticamente cercadas por_
s à medida que são lidas, embora ainda não estejam preenchidas.Faça um loop enquanto ainda houver seqüências de caracteres.
Calcule a largura da maior string em
e
.Calcule a diferença entre as linhas em
d
.Para cada equipe, imprima o preenchimento, imprima a equipe e passe para a próxima equipe.
Para todos os outros times, escolha aleatoriamente entre o time ou o time anterior. (Observe que, se houver apenas uma equipe, isso produzirá uma lista vazia.)
Se ainda houver equipes, desenhe os ziguezagues juntando-os em pares.
Dobre o comprimento dos ziguezagues de cada vez.
fonte
▷vS
ou algo assim de qualquer maneira.Python 2 ,
379364 bytesExperimente online!
fonte