Los 21 peinados del apocalipsis
Dada una lista de números entre 1 y 21 (o 0 y 20) genera un dibujo "cosido" de las siguientes caras ( consulte las reglas para la información de costura ):
___ ,,, ooo === +++ ### -*~*-
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
*** ||| _/7 ))) ((( xxx @__
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Cada cara única listada en una nueva línea (el # es la ID entera de la cara):
___
(o o)
ooO--(_)--Ooo #1
,,,
(o o)
ooO--(_)--Ooo #2
ooo
(o o)
ooO--(_)--Ooo #3
===
(o o)
ooO--(_)--Ooo #4
+++
(o o)
ooO--(_)--Ooo #5
###
(o o)
ooO--(_)--Ooo #6
-*~*-
(o o)
ooO--(_)--Ooo #7
***
(o o)
ooO--(_)--Ooo #8
|||
(o o)
ooO--(_)--Ooo #9
_/7
(o o)
ooO--(_)--Ooo #10
)))
(o o)
ooO--(_)--Ooo #11
(((
(o o)
ooO--(_)--Ooo #12
xxx
(o o)
ooO--(_)--Ooo #13
@__
(o o)
ooO--(_)--Ooo #14
((_
(o o)
ooO--(_)--Ooo #15
>X<
(o o)
ooO--(_)--Ooo #16
'*`
(o o)
ooO--(_)--Ooo #17
^^^
(o o)
ooO--(_)--Ooo #18
)|(
(o o)
ooO--(_)--Ooo #19
\|/
(o o)
ooO--(_)--Ooo #20
&&&
(o o)
ooO--(_)--Ooo #21
La cara es la siguiente:
hhhhh
(o o)
ooO--(_)--OooS
¿Dónde h
está el peinado dinámico apocalíptico y S
es el guión de costura potencial?
Ejemplos
Entrada: [1,2,3,4,5]
Salida:
___ ,,, ooo === +++
(o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Entrada: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
Salida:
___ ,,, ooo === +++ ### -*~*- *** ||| _/7 ))) ((( xxx @__ ((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Entrada: ["Fraggle Rock"]
/ [22]
/ [-21041024]
/[22,23,24,25,26]
Salida: Nobody cares.
Entrada: [1,1,1,1]
Salida:
___ ___ ___ ___
(o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Reglas
- Las líneas / espacios / guiones anteriores y posteriores están bien.
- Las caras pueden aparecer más de una vez en la entrada.
- Si hay un número no válido en la entrada, puede tener un comportamiento indefinido.
- La costura:
- Las caras cosidas se concatenarán con un solo guión en la línea inferior (tercera).
- Todas las caras estarán en una sola línea (a diferencia del primer dibujo).
- La entrada puede ser 0 o 1 indexada, siendo 20 el máximo para 0, 21 para 1.
- Este es el código de golf , el menor recuento de bytes gana.
Respuestas:
Japt
-R
,12211711311010910710510410310210099 bytes1 indexado, con ajuste de índice. He seguido la especificación aquí, que requiere un guión entre la última línea de cada cara, en lugar de los casos de prueba, que incluyen un guión después de la última línea de cada cara.
Intentalo
fuente
&
para aprovecharm³
era genial. Especialmente porque eso lo hizo basado en 1.&
allí si lo hacía basado en 1;) Todavía siento que hay más para jugar golf aquí, pero es tarde, así que tendrá que esperar hasta mañana.Python 2 , 209 bytes
Pruébalo en línea!
Indexación basada en 0; Aquí no hay nada especialmente inteligente, solo datos a los que se accede mediante el corte y el uso de exec en lugar de un bucle.
fuente
Carbón ,
103102bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Pase sobre la entrada dos veces. Cada resultado se imprime implícitamente en su propia línea.
En el segundo bucle, solo genera los ojos.
Envuelva el peinado 6 en
-
s, otros peinados en espacios.Extrae los tres personajes de peinado de una cadena comprimida.
Inserte nueve espacios entre cada cabello u ojos.
Mueve 4 espacios a la izquierda.
Imprime el resto de las caras, unidas con una
-
.fuente
R ,
413391 bytesGracias Giuseppe por 22 bytes menos y obteniendo esto por debajo de 400 bytes.
Pruébalo en línea!
fuente
utf8ToInt
yintToUtf8
rep
para acortar:for(i in s)K(I(c(rep<--
JavaScript (ES6),
200199 bytesEspera 1 entrada indexada.
Pruébalo en línea!
Comentado
fuente
Rubí , 164 bytes
Cero indexado. Pruébalo en línea!
Todo lo difícil sucede en la línea superior.
"_,o=+# *| )(x ^ &"
contiene todos los peinados con 3 caracteres idénticos, de los cuales seleccionamos eli
carácter th,j
.si
j
no es un espacio, la siguiente expresión devuelve 3 copias del carácter. Si es un espacio, seleccionamos el peinado correcto entre%w{}
. Los peinados "extraños" son los números 6,9,13,14,15,16,18,19 yi%11-2
dan un hash perfecto para0..7
Todo lo que queda es rellenar hasta 14 espacios (centrados) e imprimir un número apropiado de medios / fondos.
fuente
center(14)
Python 2 , 204 bytes
Pruébalo en línea!
fuente
Java 8,
273263 bytesPruébalo en línea.
Explicación:
fuente
R ,
247242 bytesPruébalo en línea!
Ahora, tratando de llevar a R a un recuento de bytes más manejable ...
Dado que hacer manipulaciones de personajes en R es tan irremediablemente detallado, decidí enumerar todos los patrones de cara y peinado completamente tal como están. Para imprimir bonitos los peinados con los que uso la
format
funciónjustify="centre"
. Desafortunadamente, necesitamos usar un carácter de relleno adicionali==20
porqueformat
calcula el relleno como si se hubiera escapado la barra invertida, como\\|/
.La versión actual no utiliza guiones finales.
Editar: crédito a JayCe por -2 y Giuseppe por -3 bytes.
fuente
justify="centre"
que probablemente pueda reutilizarlo. Menos dos caracteres :"/"=rep
format(h[i],,,,"c",14+!20-i)
*
ve aún mejor, ¡ahora se parece a unastring * number
operación común a muchos otros idiomas!¡C! ( C-Wow 1.1.0), 251 bytes
(Requiere que se pasen los argumentos sobre la ejecución del programa, separados por espacios)
Versión sin golf:
fuente
Rojo ,
333319 bytesPruébalo en línea!
fuente
Ruby , 163 bytes
Pruébalo en línea!
0 indexado. Jugueteé con la respuesta de Level River St y encontré otro enfoque para codificar los peinados, aparentemente de golfiness similar. Aquí, tratamos el corte de pelo "más largo" de 5 caracteres como un caso especial, los patrones triviales en la primera parte de la lista están codificados por 1 carácter cada uno, y en la segunda parte todos los patrones de 3 caracteres se enumeran literalmente, no importa: son esos caracteres distintos o no. Finalmente llega la repetitiva cara de mono.
fuente
C (gcc) ,
210212 bytes-4 bytes gracias a ceilingcat . (Creció nuevamente cuando solucioné un error que tenía el código original).
Muy claro.
Pruébalo en línea!
fuente
PowerShell ,
187171 bytes-16 bytes gracias a mazzy
Pruébalo en línea!
Indizado con 0, tiene un guión final.
Desenrollado:
Nada muy elegante. Solo la primera línea tiene cierta lógica decente. Se indexa en la cuerda del cabello usando
$current_entry_value*3
y saca esa porción usandos
ubstring
, antes de unir todas las porciones en una sola línea. Me encontré con el problema de `escapar del siguiente problema, dejándome preguntándome por qué recibía un error de IndexOutOfBounds, pero eso se solucionó. Ahora usando una forma mucho mejor para combinar la primera línea.195 bytes para seguir la especificación de no guiones iniciales / finales
fuente
Python 3 , 240 bytes
Pruébalo en línea!
fuente
Encantamientos rúnicos , 313 bytes
Pruébalo en línea!
Razonablemente compacto en términos de comprimir las cadenas y reutilizar segmentos cuando sea posible, así como usar los valores de entrada como compensaciones de salto directo cuando
B
ranchear.Si se permite un exceso de espacio final, esto puede acortarse en 2 bytes omitiendo el
4-
en la última línea. +2 bytes para un1-
si el final-
está destinada (especificación coincidente, violando ejemplos).El trozo
" (o o) "
es molesto, imposible de comprimir, ya que construirlo usando cosas como" "4*
termina siendo exactamente el mismo número de bytes.Pasar entradas> 21 hacen cosas divertidas. Por ejemplo, un solo 22 da un afeitado apurado .
fuente