Nadie está seguro de lo que >:U
pretende representar el emoticón , pero muchos estudiosos creen que parece un pato enojado . Asumamos que ese es el caso.
Tarea
Dado un número entero n entre 0 y 3 inclusive, imprimir o devolver
quack
si n = 0,
>:U
si n = 1,
U U
> : U U
> U U
> : U U
UUU
si n = 2, o
>:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U>:U>:U
si n = 3.
Puede suponer que la entrada siempre será válida. No debe haber espacio inicial en la salida, pero cualquier cantidad de espacio final está bien. Los patos (con la posible excepción de @cobaltduck) no tienen tolerancia para las lagunas. El código más corto en bytes gana.
Respuestas:
CJam,
1089085 bytesTenga en cuenta que algunos caracteres no se pueden imprimir. Pruébalo en línea!
Antecedentes
Las dos primeras salidas son incompresibles en CJam.
Comprimir la última salida es sencillo. Después de eliminar todos los avances de línea, podemos dividir la cadena resultante en las ocurrencias de
>:U
, y calcular la longitud de cada cadena de espacios resultante.Eso da como resultado la matriz
que podemos almacenar de manera eficiente al convertirlo de la base 22 a la base 269, produciendo los dígitos
Como cada dígito es menor que 256 , podemos almacenarlo como un solo byte.
Finalmente, comprimir la tercera salida se vuelve más fácil si transponemos líneas y columnas:
Contando una vez más los espacios entre caracteres que no son espacios en blanco, obtenemos la matriz
que se convierte
cuando se transcodifica desde la base 22 a la base 269.
Cómo funciona
fuente
:D
entre las dos cuerdas.Java,
303286 bytes¡Ahorró 17 bytes gracias a @VoteToClose!
En realidad no pretende ser el más corto, solo pensé que sería divertido intentarlo en Java.
Crea una lista de variables de cadena que representan cadenas comunes, luego crea una matriz de todas las salidas, luego imprime la correcta.
Sin golf:
Esta es mi primera respuesta en este sitio, así que dígame si he hecho algo mal.
fuente
D+A
yC+B
aparece con la suficiente frecuencia como para jugar más en 2 nuevas variables. También tengo la menor sensación de que usar una matriz con un bucle for podría ayudar, pero aún no he descubierto cómo ...05AB1E ,
162159157 bytesCódigo
Maldición, demasiado tiempo, pero al menos es algo:
Pruébalo en línea!
Explicación
La primera parte del código existe
">:U"V
, que se estableceY
en esa cadena. Después de eso, solo verificamos si la entrada es igual a 3. Eso se hace en laI3Qi
parte. Si es igual, imprimimos la urraca gigante:N = 3
Primero comienza con lo
ð16×
que simplemente empuja 16 caracteres espaciales. Después de eso, hay un número7166b
. Esto cubre la">:U "
parte, con un poco de ayuda de Retina :). Usé este script para convertir la cadena a un número binario. Después de eso, llegamos a la1ð:0Y:
parte, que reemplaza cada1
con un carácter de espacio y cada0
conY
, que se ha establecido en>:U
. Después de eso,D
duplicamos esta cadena, la almacenamosX
usandoU
y enJ
la pila. Hacemos estallar usando,
, que imprime la cadena completa con una nueva línea. Todos los demás después de eso se basan en el mismo principe. La declaración if termina en el segundo}
.La conversión completa se puede encontrar aquí .
N = 2
Ahora verificamos si la entrada es igual a 2. Esto se hace en la
¹2Qi
parte. Después de eso, si es igual, empujamos el carácter de espacio 4 veces usandoð4×
. Después de eso, empujamos la" U U"
cuerda y la almacenamos usando©
(idea descaradamente robada de Jelly: p). Nuevamente nos encontramos enJ
la pila e imprimimos esto con una nueva línea. Después de eso, empujamos la"> :"
cadena, recuperamos el" U U"
uso®
, enJ
la pila yD
duplicamos esta cadena e imprimimos ambos en la misma línea.Breve cuestionario, ¿qué hará esto
" > "?®,
?Después de imprimir la cadena anterior, obtenemos el duplicado de la segunda línea de la cara e imprimimos esto (ya que es lo mismo que la segunda línea).
La última parte cubierta por este caso es:
N = 1
Este es más fácil de explicar:
N = 0
fuente
Vitsy ,
172171159 bytesOh cielos. Si quería algo para mostrar el poder de los métodos, lo obtuve.
Pruébalo en línea!
Cómo funciona esto es llamando a varios métodos por sí mismo. La explicación está abajo:
Este código es ridículo. Su forma detallada es:
fuente
JavaScript (ES6), 163 bytes
Explicación
Utiliza mi compresión de inicio con JavaScript: codificación de longitud de ejecución. Los dígitos
1
para9
asignar a tantos espacios, los0
mapas para la cara del pato enojado, y cualquier otro personaje permanece igual.fuente
Japt,
1161051029996 bytesContiene un no imprimible. ¡Pruébalo en línea!
Cómo funciona
Las dos primeras cadenas no están comprimidas en absoluto. El tercero se comprime simplemente reemplazando cada serie de espacios con su longitud, luego
" U3U"
con"z"
. El último es más complejo:>:U
con1
.191\n
con4
. (4
no se usa en ningún otro lugar de la cadena).10
-255
o0A
-FF
) al carácter con ese código de caracteres.La cadena resultante tiene solo
2119 bytes de longitud, pero la descompresión ocupa otros3129.Después de descomprimir las cadenas, simplemente tomamos el elemento en la posición
U
, la entrada. (La matriz está organizada[0,3,2,1]
porque hay un error que hace que cuente desde el final de la matriz en lugar del principio).fuente
MATL ,
283182bytes¡101 bytes guardados gracias a @Adnan!
Esto usa números decimales para codificar índices
0
...3
a los cuatro caracteres para los casos 2 y 3. Los números decimales tal vez podrían comprimirse usando la codificación de base 64, ¡pero quack!Para el caso 3 se utiliza un truco muy agradable sugerido por @Adnan: definir secuencias binarias para codificar cada fila, donde
0
y1
corresponder al espacio y>:U
respectivamente.Pruébalo en línea!
fuente
1
con espacios y el0
con la>:U
cadena. No sé si eso ayudaría.Chicle de canela, 76 bytes
No compite desde que se creó Cinnamon Gum después de este desafío.
Pruébalo en línea.
Explicación
El primer byte
l
especifica el modo: en este caso, le dice a Cinnamon Gum que ingrese al modo de tabla de búsqueda. Cinnamon Gum luego descomprime el resto de la cadena (que se ha comprimidozopfli --deflate
) en esto:Luego se divide
;
, coloca cada par clave-valor (con un&
delimitador) en un diccionario y genera salidasdictionary[input]
.fuente
JavaScript ES6,
232223203188 bytesGuardado
2944 bytes gracias a ETHproductions!¡Pruébalo!
Mostrar fragmento de código
fuente
1
e0
s puede hacer en un número ternario?r+g+g+g+r
ag+g+g+r
y el ajuste de la cadena en consecuencia.GML, 265 bytes
Un puerto de la excelente respuesta de @ kittycat3141, con la sugerencia de seguir jugando golf con dos nuevas variables (que denominé G y H) por @VoteToClose. También logré acortarlo aún más con la sintaxis relativamente floja de GML.
fuente