Nas competições esportivas, muitas vezes acontece que os vencedores são apresentados nos pódios, com a pessoa em primeiro lugar na posição mais alta no meio, a pessoa em segundo lugar na altura do meio à esquerda e a pessoa em terceiro lugar na posição mais baixa e para a direita. Vamos recriar isso aqui com alguns ajustes especiais.
Os pódios são apresentados abaixo:
@---@
| @ |
@---@| | |
| @ || | |
| | || | |@---@
| | || | || @ |
Isso formará a base para esse desafio. O próximo passo é tornar os pódios suficientemente largos para acomodar as pessoas (cadeias de caracteres ASCII imprimíveis) que estão nelas. No entanto, queremos garantir a beleza estética (porque essa é uma oportunidade fantástica para fotos), para que cada pódio precise ter a mesma largura e a largura deve ser ímpar. Além disso, as pessoas (obviamente) querem ficar no centro do pódio, de modo que as cordas devem estar centralizadas da melhor maneira possível. (Você pode alinhar à esquerda ou à direita e não precisa ser consistente.) Os pódios acima são do tamanho mínimo e são considerados 3
amplos.
Por exemplo, dada a entrada que ["Tom", "Ann", "Sue"]
representa primeiro, segundo e terceiro lugar, respectivamente, produzimos os seguintes pódios:
Tom
@---@
Ann | @ |
@---@| | |
| @ || | | Sue
| | || | |@---@
| | || | || @ |
No entanto, se tivermos em Anne
vez de Ann
, precisaremos ir para o próximo tamanho 5
e centralizar as seqüências da melhor maneira possível. Aqui, estou alinhando para que a letra "extra" de Anne
fique à esquerda do centro, mas você pode escolher com que lado se alinhar.
Tom
@-----@
Anne | @ |
@-----@| | |
| @ || | | Sue
| | || | |@-----@
| | || | || @ |
Vamos para alguns nomes mais longos. Que tal ["William", "Brad", "Eugene"]
:
William
@-------@
Brad | @ |
@-------@| | |
| @ || | | Eugene
| | || | |@-------@
| | || | || @ |
Aqui podemos ver que Brad
tem muito espaço em branco, Eugene
menos e William
se encaixa perfeitamente.
Para um caso de teste mais longo, que tal ["A", "BC", "DEFGHIJKLMNOPQRSTUVWXYZ"]
:
A
@-----------------------@
BC | @ |
@-----------------------@| | |
| @ || | | DEFGHIJKLMNOPQRSTUVWXYZ
| | || | |@-----------------------@
| | || | || @ |
Finalmente, temos a menor entrada possível, algo como ["A", "B", "C"]
:
A
@---@
B | @ |
@---@| | |
| @ || | | C
| | || | |@---@
| | || | || @ |
- A entrada e a saída podem ser fornecidas por qualquer método conveniente .
- A entrada é garantida como não vazia (ou seja, você nunca receberá
""
como nome). - Você pode imprimi-lo em STDOUT ou retorná-lo como resultado de uma função.
- Um programa completo ou uma função são aceitáveis.
- Qualquer quantidade de espaço em branco estranho é aceitável, desde que os caracteres sejam alinhados adequadamente.
- 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.