Imprima o muestre las siguientes tres líneas de texto, exactamente como se muestran a continuación. Se acepta una nueva línea final.
bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ
Ese bloque de texto es el mismo que el de abajo, pero donde la enésima columna se gira n veces hacia abajo:
!"#$%&'()*+,-./0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
Tenga en cuenta que este es un desafío de complejidad kolmogorov , por lo que el formato de salida no es flexible.
code-golf
string
kolmogorov-complexity
alphabet
Stewie Griffin
fuente
fuente
Respuestas:
Java 8,
16916215014611611310695949392919084 bytes¡Sí, finalmente lo hicimos! Hemos superado la salida literal de 88 bytes que se puede encontrar en la parte inferior. ¡Gracias a todos los que participaron en el golf!
-7 bytes gracias a @StewieGriffin .
-42 bytes gracias a @Neil .
-11 bytes gracias a @PeterTaylor .
-3 bytes gracias a @ OlivierGrégoire .
-6 bytes gracias a @ OlivierGrégoire y @Neil (Olivier sugirió un puerto de respuesta de JavaScript de Neil ).
Pruébalo en línea.
Explicación:
Vea aquí lo que hace cada una de las partes aritméticas y cómo termina en los caracteres correctos.
Java 8, 88 bytes
Aburrido,
pero el uso de la rotación de columnas prevista no será más corto en Java seguro ... ¡Estoy corregido!Publicará una solución en un momento de cualquier manera para ver cuántos bytes difiere.Aparentemente, la diferencia es de solo -4 bytes. :REPruébalo en línea.
fuente
(x, y)
, que probablemente superará su enfoque de 169 bytes y tal vez incluso la cadena literal.v->{String a="";for(int i=2,j,t;++i<6;){for(j=31;++j<58;a+=(char)(t<1?j+65:t>1?j:j+33))t=(j-i)%3;a+="\n";}return a;}
v->{for(int i=0,r,c;++i<81;System.out.printf("%c",c<1?10:32*++r+c-1/r))r=(i/27+28-(c=i%27))%3;}
c
completo)Casco , 13 bytes
Tenga en cuenta el espacio final. Pruébalo en línea!
Explicación
fuente
SPL (lenguaje de programación de Shakespeare),
167916181600 bytesTuve algunos problemas con el intérprete ( https://github.com/drsam94/Spl ), por lo que no es tan pequeño como creo que podría haber sido. Pero al menos esto funciona :)
Aquí está la misma lógica en PHP, para que sea un poco más fácil ver lo que está sucediendo.
fuente
JavaScript (ES6),
8675 bytesEditar: Guardado 11 bytes gracias a @Ryan. ¡Ahora 10 bytes más cortos que el literal!
JavaScript (Node.js) , 64 bytes
Pruébalo en línea! Gracias a @Ryan.
fuente
f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''
y 11 más en un entorno Node como un aparte:f=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
05AB1E ,
1715 bytesGuardado 2 bytes gracias a Erik the Outgolfer
Pruébalo en línea!
Explicación
fuente
εN
debería ser una cosa. Combina las dos ideas devyNFÁ])ø»
y las tuyas.N
usarloε
. Técnicamente no encaja, yaε
que no es un bucle, aunque a veces lo usamos como tal, sería bueno tenerlo.CJam (18 bytes)
Demostración en línea
Disección
El enfoque obvio es generar las líneas originales, comprimir, rotar con
ee::m>
y retroceder. Peroee::
es bastante largo y es más corto generar las columnas directamente.fuente
Python 2 , 72 bytes
Pruébalo en línea!
Esto funciona eliminando
31.333..
del carácter anterior, sumando97
cuando el punto de código anterior es menor que 60 y restando26
al final de cada línea.fuente
R ,
6463 bytesPruébalo en línea!
-1 byte gracias a Giuseppe
Llegué a esto a través de bastante prueba y error, así que estoy luchando con una explicación concisa. Esencialmente, en lugar de los códigos de caracteres, comencé con una secuencia más simple de 1:81 que representa el bloque de texto original (3 * 26 más 3 líneas nuevas), y examiné los índices de dónde terminan estos valores en el bloque girado. Esto sigue una secuencia regular que cae en 26 cada vez, módulo 81 (o equivalente, aumenta en 55 mod 81). Entonces se trataba de recrear esa secuencia
(0:80*55)%%81+1])
, mapear los valores reales de Unicodec(32:57,10,65:90,10,97:122,10)
, convertirlos en caracteres e imprimirlos.fuente
55
lugar de-26
desde-26 == 55
(mod 81).Japt ,
1715 bytes¡Pruébalo en línea!
Explicación
Otros 7 posibles 15 bytes:
fuente
CJam ,
2321 bytesPruébalo en línea!
Explicación
fuente
MATL , 16 bytes
Pruébalo en línea!
Explicación
fuente
1:26
como turno. Debería intentarlo en mi respuesta R ...&
fue una gran adición, desde la idea de Suever :-)Jalea , 13 bytes
Pruébalo en línea!
Cómo funciona
fuente
Perl 5 , 46 bytes
¡ Ahorró 13 bytes gracias a la magia arcana de @TonHospel!
Pruébalo en línea!
fuente
$i++
es justo$_
y puedes usarlo ensay
lugar deprint
eso, esto es realmente50
{}
en el mapa para49
:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
47
:print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26
. Lamentablemente,say
da una nueva línea demasiadas.48
:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
R ,
8886 bytesPruébalo en línea!
R es terrible en la manipulación de cuerdas y aunque tiene algunas incorporaciones de matriz ordenadas, las rotaciones son otra cosa que no hace muy fácilmente.Felizmente daré una recompensa a cualquiera que pueda superarme en R.A pesar de haber encontrado una respuesta más corta, todavía otorgaré una recompensa de 50 repeticiones a la otra respuesta R más corta que 88 bytes.
Supongo que me otorgaría la recompensa si pudiera, ¡pero esto es un total de dos bytes más corto que la respuesta "aburrida"! Evito las rotaciones simplemente usando la inclinación de R para reciclar.
EDITAR: respuesta del usuario2390246 usuario2390246 me superó por completo y otorgaré una recompensa de 100 puntos ya que esa solución es muy superior.
Para llegar aquí, deconstruí el resultado deseado en sus puntos de código ASCII con
utf8ToInt
(eliminando las nuevas líneas), construí una matriz y ejecuté undiff
archivo sobre ellos para obtener las diferencias en columnas. Tomando nota de la periodicidad allí, me propuse construir la matriz de una manera golfística, con la esperanza de usardiffinv
para recrear el original.Gracias a la periodicidad, podemos recrear la
diff
matriz ed forzando a R a reciclar con una longitud no múltiple y extraer las columnas que realmente queríamos:Luego invertimos este proceso,
diffinv
para recrear los puntos de código, agregamos una fila de10
(líneas nuevas) en la parte inferior, reconvertimos a ASCIIintToUtf8
ycat
el resultado.fuente
Stax ,
1412 bytesEjecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
Este programa solo usa características que han estado disponibles desde el lanzamiento inicial de stax, pero aparentemente olvidé el
K
mapa cruzado cuando originalmente escribí esta respuesta.Una cosa casi interesante a tener en cuenta sobre esta respuesta es que
R
es una instrucción innecesaria porqueK
implícitamente convierte enteros en rangos. Sin embargo, no hay forma de presionar3
y26
sin algún byte adicional en el medio.fuente
PowerShell , 53 bytes
Pruébalo en línea!
Veo que esto es similar a la respuesta Perl de Dom, pero llegué a ella de forma independiente.
Esto explota el hecho de que el patrón continúa
Symbol - Lowercase - Capital
, incluso cuando se ajustan nuevas líneas (8 - z - A
por ejemplo) y, por lo tanto, solo agrega el desplazamiento apropiado (elegido mediante$j++%3
) al número actual$_
antes de-join
unirlos en una sola cadena. Eso se hace tres veces para llegar a las tres líneas (preservando$j
entre iteraciones). Esas tres líneas quedan en la tubería, y lo implícitoWrite-Output
nos da las nuevas líneas de forma gratuita.fuente
Julia 0.6 , 79 bytes
[' ':'9' 'A':'Z' 'a':'z']
es la matriz de caracteres 2D no rotada, se[n,mod1(i-n,3)]
indexa en esa matriz con la rotación adecuada.prod
toma un vector de caracteres a una cadena (ya que la multiplicación se usa para unir cadenas). Hay dos comprensiones de Vector anidadas que dan como resultado un Vector que contiene 3 cadenas, luegoprintln.
imprime cada cadena en el Vector seguido de una nueva línea.TIO carece del método apropiado para multiplicar (con
prod
) dos caracteres para obtener una cadena. Sé que ese método se agregó recientemente, pero la versión de TIO parece ser la misma que la versión en mi PC donde funciona este código, por lo que no puedo explicar completamente por qué no funciona en TIO.Ejemplo de copiar y pegar (
;
no es necesario, solo suprime la salida adicional en REPL):fuente
Carbón ,
262115 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
J ,
29, 2725 bytes-2 bytes gracias a FrownyFrog -2 bytes gracias a millas
Pruébalo en línea!
Enfoque inicial: J , 29 bytes
Explicación:
i.26
- rango 0-2632 65 97+/]
- crea una tabla de 3 filas para los personajes&.|:
transponer luego hacer el siguiente verbo (|.
) y transponer de nuevo-|."_1
rotar cada fila n vecesu:
convertir a unicodePruébalo en línea!
fuente
|:u:(<26)2&(|.>:)32 65 97
ahorra 2 bytes.C,
7069676064 bytes+4 bytes para hacer la función sea reutilizable .
Respuesta de 60 bytes no válida que no es reutilizable:
Puerto de
mi respuesta Java 8 Respuesta@ JavaScript de @Neil .Pruébalo en línea.
fuente
i=t=0
.APL + WIN, 26 bytes
Origen del índice 0
Genere una matriz de valores de índice entero de los caracteres en el vector atómico APL.
Gire cada columna hacia abajo por su valor numérico.
Use los índices resultantes para mostrar los caracteres del vector atómico.
fuente
Vim,
8179 bytesExplicación (simplificada)
fuente
C, 72 bytes
fuente
Python 2 , 65 bytes
Pruébalo en línea!
fuente
brainfuck ,
121115 bytes¡Gracias a @JoKing por guardar 6 bytes!
Pruébalo en línea!
fuente
+++[[<+>>++<-]>]
Realmente es el comienzo de todo, ¿eh? ¡Gracias!Japt , 17 bytes
Pruébalo
Explicación
fuente
;Bå_cÄ é}"@`" ·y
C
después del almuerzo. No sé cómoy
y·
terminé al revés; ¡Debo haberCtrl+Z
editado demasiadas veces antes deCtrl+A
ing!Python 2 , 79 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) , 23 bytes ( SBCS de Adám )
Pruébalo en línea!
-1 gracias a Adám .
Se ejecuta en un entorno interactivo.
Asume
⎕IO←0
.fuente
(⎕UCS-⊖∘↑32 65 97+⊂)⍳26
o(⎕UCS-⊖32 65 97∘.+⊢)⍳26
K4 , 38 bytes
Solución:
Ejemplo:
Explicación:
9 personajes para realizar la rotación ...
fuente
Perl,
4946 byteso
fuente
$^x8
, pero no puedo pensar en otra var con suficiente longitud, tal vez"@INC"
pero es demasiado larga y usa en"@-"
lugar de$n++
, pero aún así, la misma longitud. ¿A menos que eso te ayude a reducir esto más? ¿A menos que agregue-p
bandera y tenga salida implícita?