En las competiciones deportivas, a menudo sucede que los ganadores se presentan en los podios, con la persona del primer lugar en lo más alto en el medio, la persona del segundo lugar en la altura media a la izquierda y la persona del tercer lugar en lo más bajo y a la derecha. Vamos a recrear eso aquí con algunos ajustes especiales.
Los podios se presentan a continuación:
@---@
| @ |
@---@| | |
| @ || | |
| | || | |@---@
| | || | || @ |
Esto formará la base para este desafío. El siguiente paso es hacer que los podios sean lo suficientemente anchos para adaptarse a las personas (cadenas ASCII imprimibles) que están en ellos. Sin embargo, queremos asegurar la belleza estética (porque esta es una oportunidad fantástica para tomar fotos), por lo que cada podio debe tener el mismo ancho, y el ancho debe ser extraño. Además, las personas (obviamente) querrán pararse en el centro del podio, por lo que las cuerdas deben estar centradas lo mejor posible. (Puede alinearse tanto a la izquierda como a la derecha, y no es necesario que sea coherente). Los podios anteriores son del tamaño mínimo y se consideran3
anchos.
Por ejemplo, dada la entrada que ["Tom", "Ann", "Sue"]
representa el primer, segundo y tercer lugar respectivamente, genera los siguientes podios:
Tom
@---@
Ann | @ |
@---@| | |
| @ || | | Sue
| | || | |@---@
| | || | || @ |
Sin embargo, si tenemos en Anne
lugar de Ann
, tendremos que subir al siguiente tamaño 5
y centrar las cuerdas lo mejor posible. Aquí, estoy alineando para que la letra "extra" Anne
esté a la izquierda del centro, pero puedes elegir a qué lado alinear.
Tom
@-----@
Anne | @ |
@-----@| | |
| @ || | | Sue
| | || | |@-----@
| | || | || @ |
Vamos por algunos nombres más largos. Que tal ["William", "Brad", "Eugene"]
:
William
@-------@
Brad | @ |
@-------@| | |
| @ || | | Eugene
| | || | |@-------@
| | || | || @ |
Aquí podemos ver que Brad
tiene mucho espacio en blanco, Eugene
menos, y se William
ajusta a la perfección.
Para un caso de prueba más largo, ¿qué tal ["A", "BC", "DEFGHIJKLMNOPQRSTUVWXYZ"]
:
A
@-----------------------@
BC | @ |
@-----------------------@| | |
| @ || | | DEFGHIJKLMNOPQRSTUVWXYZ
| | || | |@-----------------------@
| | || | || @ |
Finalmente, tenemos la entrada más pequeña posible, algo como ["A", "B", "C"]
:
A
@---@
B | @ |
@---@| | |
| @ || | | C
| | || | |@---@
| | || | || @ |
- La entrada y salida se pueden dar por cualquier método conveniente .
- La entrada está garantizada como no vacía (es decir, nunca recibirá
""
como nombre). - Puede imprimirlo en STDOUT o devolverlo como resultado de una función.
- Un programa completo o una función son aceptables.
- Cualquier cantidad de espacios en blanco extraños es aceptable, siempre y cuando los caracteres se alineen apropiadamente.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).