Dada una lista de entrada de cadenas no vacías, genera una representación artística ASCII de un torneo, basada en las siguientes reglas de dibujo:
- Se garantiza que la cantidad de cadenas sea de cantidad
2,4,8,16,etc.
- Las dos primeras cuerdas se tocan, y las dos siguientes se tocan, y así sucesivamente. Esta es la primera ronda.
- Para cada juego, elige al ganador al azar con la misma probabilidad.
- Para la siguiente ronda, el ganador del primer juego juega con el ganador del segundo juego, el ganador del tercer juego juega con el ganador del cuarto juego, y así sucesivamente. Las rondas posteriores siguen el patrón.
- Eventualmente hay un ganador general.
- Para obtener un resultado bonito (obligatorio), todas las cadenas deben estar antepuestas y anexadas con un guión bajo
_
. - Para que los corchetes se alineen apropiadamente, cada entrada debe rellenarse
_
para que todos tengan la misma longitud para esa ronda. - Puede elegir si el relleno está prepuesto o anexado, siempre que sea consistente.
- En su lugar, puede optar por rellenar previamente todas las cadenas para que tengan la misma longitud, en lugar de por ronda. Lo que sea más golfier para su código.
Reglas adicionales
- Las nuevas líneas iniciales o finales o espacios en blanco son opcionales, siempre que los caracteres se alineen correctamente.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- 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).
Ejemplos
Ejemplo con ciudades ['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_____/
Ejemplo con ['Lions', 'Tigers', 'Bears', 'Oh My']
:
_Lions__
\_Tigers_
_Tigers_/ \
\_Tigers_
_Bears__ /
\_Bears__/
_Oh My__/
Respuestas:
Carbón ,
9279 bytesPruébalo en línea! El enlace es a la versión detallada del código. Necesita una línea en blanco para marcar el final de la entrada. Explicación:
Inicializa la variable
q
. Esto mantiene el tamaño de los zig-zags, es decir, la mitad del espacio entre filas.Lea las líneas de entrada no en blanco en la matriz
u
. Las líneas se rodean automáticamente por_
s a medida que se leen, aunque todavía no se rellenan.Haz un bucle mientras aún queden cuerdas.
Calcular el ancho de la cadena más grande en
e
.Calcule la brecha entre filas en
d
.Para cada equipo, imprima el relleno, imprima el equipo y luego baje al siguiente equipo.
Para cualquier otro equipo, elige al azar entre ese equipo o el equipo anterior. (Tenga en cuenta que si solo queda un equipo, esto genera una lista vacía).
Si aún quedan equipos, dibuja los zigzags uniéndolos en pares.
Duplique la longitud de los zigzags cada vez.
fuente
▷vS
o algo por eso de todos modos.Python 2 ,
379364bytesPruébalo en línea!
fuente