Recientemente, he visto personas Hare Krishna con su mantra en el emblema y he descubierto que puede ser bastante interesante codificar el golf.
El reto
Escribe el mantra Hare Krishna , es decir:
Hare Krishna Hare Krishna
Krishna Krishna Hare Hare
Hare Rama Hare Rama
Rama Rama Hare Hare
Criterios ganadores
Este es el código de golf , por lo que gana el código más corto en bytes.
Reglas
- La carcasa debe conservarse.
- El texto debe contener nuevas líneas.
- Las líneas pueden tener espacios finales.
- La nueva línea final está permitida.
- El análisis desde la web o cualquier otro recurso externo no está permitido.
code-golf
string
kolmogorov-complexity
Dariusz Woźniak
fuente
fuente
Respuestas:
Jalea , 22 bytes
Pruébalo en línea!
Cómo funciona
fuente
Convert 15973600 to base ["Hare", "Rama", "Krishna"]
Gracias a Dios que lo explicaste más, porque eso no tenía sentido.["Hare", "Rama", "Krishna"]
más.05AB1E , 38 bytes
Se puede acortar en 2 bytes si las nuevas líneas finales están bien.
Pruébalo en línea!
Explicación
fuente
drama share irish dna
, ¿De Verdad? ¿De dónde vino esa idea? +1 :)Python 2 , 60 bytes
Pruébalo en línea!
Esto parece superar los enfoques de reemplazo de plantillas como este intento .
fuente
Octava,
7459 bytesVerifique la salida aquí .
Explicación:
{'Hare ','Krishna ','Rama ',10}
crea una matriz de celdas con tres cadenas, donde la cuarta es10
(valor ASCII para nueva línea).{'ababdbbaadacacdccaa'-96}
es un vector que indexa la matriz de celdas de arriba. El vector es[1 2 1 2 4 ...]
ya que restamos96
de la cadenaababd...
.Los corchetes circundantes se utilizan para concatenar los resultados, en lugar de obtener
ans = Hare; and = Krishna; ans = ...
fuente
Retina , 39 bytes
Pruébalo en línea!
En su mayoría sustituciones simples, el único "truco" es el modificador
*
que imprime el resultado de la sustitución y luego revierte la cadena a lo que era antes.fuente
PHP, 61 bytes
simplemente reemplazo de los dígitos como clave en la matriz con los valores strtr
Pruébalo en línea!
fuente
JavaScript,
7570 bytesPruébalo en línea!
fuente
3
. La cadena de plantilla tendrá la misma longitud, pero no tendrá que reemplazarla más tarde. (No causará problemas con el índice de matriz, porque/./
no coincide con los caracteres de nueva línea)C
154 bytes, 124 bytes,96 bytesPruébalo en línea!
28 bytes guardados, gracias a Dennis
fuente
int
y declarari
globalmente para que su valor predeterminado sea cero. tio.run/nexus/…main(){for(char*t="BG@ESCB;:N8F6DIBA10Hare \0Krishna \0Rama \0\n";*t^72;printf(t+*t++-48));}
Ahorra 4 bytes.V ,
40, 36 bytesPruébalo en línea!
Hexdump:
Explicación:
El
<C-n>
comando es extremadamente útil para desafíos como este. :)fuente
C #, 109 bytes
Bastante sencillo,
Console.Write
formatea implícitamente la cadena, y el uso enWrite
lugar deWriteLine
no solo guarda 4 bytes, sino que evita una nueva línea final. Utiliza líneas nuevas de estilo Unix, por lo que podría no funcionar tan bien en Windows, 6 bytes adicionales para Windows cambiando\n
a\r\n
Este método se enviará directamente a la consola, si prefiere un método que devuelva una cadena:
C #, 118 bytes
Alternativamente, si necesita un programa totalmente independiente y compilable:
C #, 135 bytes
Esto debería funcionar como un programa compilado siempre que lo establezca
A
como la clase de entrada.fuente
var
hasta donde yo sé, yvar.Format()
definitivamente no es una cosaC, 85 bytes
Preferiría un mantra secular, pero espero que esta sea una de esas religiones pacíficas.
Véalo funcionar aquí .
Esto compacta una implementación ingenua en 23 bytes.
fuente
Python 2,
928874 bytesPruébalo en línea!
No , no es inteligente, no, no es el más corto, pero bueno, soy nuevo en esto y funciona.
Otra solución (
8480 bytes):fuente
Perl, 67 bytes
Inspirado en esta entrada de JavaScript .
Perl, 67 bytes
fuente
(Hare,Krishna,Rama)
guarda dos bytes en su primer código.Matlab
139136105bytes (gracias a @ 2501 )¡Pruébelo en línea en Octave!
fuente
x={'Hare ','Krishna ','Rama ',10};[x{'ababdbbaadacacdccaa'-96}]
es de 64 bytes. : P (traduciendo la presentación de octava de @Stewie Griffin)MySQL,
115100bytes(¡Gracias @manatwork!)
fuente
AS
.R,
758583 bytesCrea un vector con
Hare
,Krishna
y la nueva línea, toma los necesarios y luego lo repite reemplazandoKrishna
porRama
.Necesitaba incluir el espacio en cada palabra y
sep=""
porque de lo contrariocat()
pondría un espacio al comienzo de cada línea.fuente
print()
ocat()
sería necesario. Eso requeriría muchos más bytes. Publicaré una alternativa con ellos este fin de semana :)object 'h' not found
tio.run/nexus/…h=
conh<-
dentro de las llamadas ap
PowerShell,
735352 bytesabsolutamente demolido por Jeff Freeman : usando una nueva línea real en lugar de
\n
guardar otro byte, y también guardó uno más en el formato de matriz. (de(1,2)
a,1,2
)-1 gracias a TesselatingHeckler, no hay coma en la notación de matriz.
Mi vieja respuesta: probé algunos otros métodos de reemplazo, pero todos terminaron siendo un poco más largos de alguna manera.
Hay nuevas líneas en la cadena.
bastante sencillo, utiliza el hecho de que powershell expandirá las variables dentro de comillas dobles, y un método más corto de asignación de variables para guardar algunos bytes.
fuente
Sed, 72
La puntuación incluye +1 para la
-r
bandera.Pruébalo en línea .
fuente
c
Estoy bastante seguro de que hay una manera de eliminar algunos bytes usando hange,a
ppend o nsert eni
lugar des
ubstitute. Editar: ya no estoy tan seguro; Editar editar: sí, no, eso no funciona porque no funcionan en el espacio del patrón, sino que se imprimen directamenteRuby ,
6261 bytesMientras trabajaba en esto, eventualmente se volvió casi idéntico a la respuesta de Python de @xnor, excepto que Ruby no tiene espacios entre argumentos en su
print
función, lo que me obligó a usar combinaciones en su lugar y resultó en una respuesta más larga ...-1 bytes de @manatwork
Pruébalo en línea!
fuente
:Hare
un símboloBash,
9390 bytesfuente
s=
se reduce a 79h="Hare " k="Krishna " r="Rama ";echo -e "$h$k$h$k\n$k$k$h$h\n$h$r$h$r\n$r$r$h$h"
Pyth -
4541 bytesIntentalo
fuente
AHK ,
10792 bytesEsto se siente ridículo, pero no puedo encontrar un medio más corto en AHK para hacer esto:
Esto es lo que probé primero que era 107 bytes y traté de ser elegante. Sin embargo, como señaló Digital Trauma , hubiera sido más corto enviar el texto sin formato.
StringSplit crea una pseudo-matriz con 1 como primer índice. Entonces, el primer término está referenciado con
s1
, el segundo cons2
, etc. De lo contrario, aquí no hay nada lujoso.fuente
Send Hare Krishna ...
?Lote, 75 bytes.
fuente
C 96 bytes
Solo necesita dos bits de información para determinar qué palabra de la oración se necesita a continuación, por lo que en lugar de usar un montón de memoria y codificarla como una cadena, puede codificarla como un entero de 40 bits (es decir, dentro de un int largo )
fuente
ksh / bash / sh, 66 bytes
fuente
APL (Dyalog) , 47 bytes
Requiere
⎕IO←0
cuál es el predeterminado en muchos sistemas.Pruébalo en línea!
8×4 1 5 2
multiplicar; [32,8,40,16](4⍴3)⊤
convertir a base de 4 dígitos 3; matriz [[1,0,1,0], [0,0,1,1], [1,2,1,2], [2,2,1,1]]...
[
...]
índice↓
dividido en una lista de listas∊¨
alistarse (aplanar cada uno)↑
mezclar en matriz (relleno con espacios)fuente
Retina, 60
Puerto directo de mi respuesta sed :
Pruébalo en línea .
fuente
Java 7,
104103 bytesExplicación:
Pruébalo aquí
fuente
Lotes,
117111103 bytesHasta 103 ahora que las nuevas líneas finales están permitidas.
^\n\n
se usa para insertar una nueva línea al final de las primeras tres líneas y hay un espacio despuésRama
.fuente
Perl,
7674 bytesfuente