Las pesas en mi gimnasio se ven así:
=========[]-----------------------[]=========
Pueden contener platos de cinco tamaños diferentes, 2.5 libras, cinco libras, diez libras, 25 libras y 45 libras:
.
. ! |
. ! | | |
| | | | |
' ! | | |
' ! |
'
Por seguridad, también agregamos un clip ]
o [
en el exterior de todos nuestros platos si los hay. La barra en sí pesa 45 libras. Siempre colocamos las placas más pesadas más cercanas al centro, sin espacios entre las placas, y colocamos placas idénticas en ambos lados. También siempre usamos el mínimo número de platos posible, por ejemplo, nunca usamos dos platos de cinco libras en un lado en lugar de un solo plato de diez libras. Entonces, si quiero levantar 215 libras, mi barra se ve así:
. .
.!| |!.
!||| |||!
====]||||[]-----------------------[]||||[====
!||| |||!
'!| |!'
' '
Su código, una función o programa completo, debe tomar un número entero de 45 a 575, siempre un múltiplo de 5, y generar la barra que se suma a ese peso. Por ejemplo:
Entrada: 45
Salida (tenga en cuenta que no hay clips en una barra vacía):
=========[]-----------------------[]=========
Entrada: 100
Salida:
! !
.| |.
======]||[]-----------------------[]||[======
'| |'
! !
Entrada: 575
Salida:
..... .....
.!||||| |||||!.
!||||||| |||||||!
]||||||||[]-----------------------[]||||||||[
!||||||| |||||||!
'!||||| |||||!'
''''' '''''
Puede tener espacios finales en cada línea o no, pero su salida no puede tener líneas vacías iniciales o finales (la salida para 45 debería ser una línea, para 50 debería ser tres líneas, para 65 debería ser cinco líneas, y así sucesivamente).
Este es el código de golf, ¡el código más corto gana!
print
?Respuestas:
Pyth, 126 bytes
El código fuente contiene caracteres no imprimibles, así que aquí está como un volcado XXD:
Este código es extremadamente lento , hasta el punto de que no se usa realmente. Puede acelerarlo unas 1000 veces agregando una llamada
.{
(set
) en el medio, manteniendo el código funcionalmente equivalente. Aquí hay una versión fácil de copiar y pegar del código resultante:fuente
Python 2, 295 bytes
Construye la barra verticalmente, luego gira e imprime líneas no vacías.
fuente
-v-1
es un candidato principal para la negación bit a bit;~v
.Carbón , 65 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Imprima 12
-
s, el[]
y 9=
s. Esto comprende la mitad de la barra. El cursor se deja al comienzo del=
s.Resta 45 de la entrada para permitir el peso de la barra.
Filtre una lista de los posibles pesos de pares de pesos para aquellos que no son mayores que la entrada, y repita mientras la lista no esté vacía.
Divida la cadena
|||.,|.,|!,||.,||!
en comas y seleccione la pieza correspondiente al mayor peso posible, e imprímala tanto hacia arriba como hacia abajo. (Alternativamente, es posible imprimirlo hacia arriba y reflexionar en la¬
dirección al final; una serie de variaciones tienen la misma longitud).Imprima el clip (se sobrescribirá con el siguiente peso, si lo hay).
Resta el peso de la entrada.
Reflexiona para completar la barra.
fuente