Aquí hay un desafío simple para usted: debe producir esta representación ASCII de un tablero de ajedrez. El blanco está representado por mayúsculas y el negro está representado por minúsculas. Los mosaicos vacíos están representados por a .
. Aquí está la pensión completa:
rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
Dado que esta es una pregunta de complejidad kolmogorov , no puede tomar ninguna entrada y debe sacar esta placa por cualquier método predeterminado, por ejemplo, guardar un archivo, imprimir en STDOUT o regresar de una función. Usted puede producir opcionalmente uno salto de línea final. Se aplican las lagunas estándar, ¡y el programa más corto en bytes!
Sin embargo, recuerde que esto es igualmente una competencia entre presentaciones en el mismo idioma. Si bien es poco probable que un lenguaje como Java pueda vencer a un lenguaje como Perl, o un lenguaje de golf como Pyth o Cjam, ¡tener la respuesta más corta de Java sigue siendo realmente impresionante! Para ayudarlo a rastrear la respuesta más corta en cada idioma, puede usar esta tabla de clasificación, que mostrará la presentación más corta por idioma y en general.
Tablas de clasificación
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
fuente
ASCII art
tablero de ajedrez tendría el punto final en cada casilla?Respuestas:
Jalea ,
2524 bytesPruébalo en línea!
¡Gracias a @Lynn por jugar golf en 1 byte!
Cómo funciona
fuente
Vim, 26 bytes
irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj
Se basa en un Vim nuevo, o de lo contrario
5V
puede seleccionar el área incorrecta.irnbqkbnr<Esc>
: Escribe la fila superior. Suficientemente fácil.Y6p
: Haga el resto de las filas, excepto una . Por supuesto, todas menos las filas superior e inferior contienen los caracteres incorrectos.5Vr.
: Cuando todavía no ha usado el modo visual en la sesión, puede hacer cosas como esta para seleccionar 5 líneas. Si volvía a escribir lo mismo de inmediato, intentaría seleccionar 25 líneas. Vim es raro así.Vrp
: Ya estamos en la línea 2, así que hagamos una línea de peón.YGP
: Copia esa línea de peón en su lugar en la parte inferior. Es por eso que usé en6p
lugar de7p
antes.gUj
: Capitaliza las piezas blancas.fuente
Brainfuck , 224 bytes
Tomó casi una hora para conseguir esto.
fuente
Python 2, 63 bytes
Desafortunadamente, el enfoque bastante simple fue mucho más corto que las cosas "inteligentes" que probé al principio ...
Respuesta adicional, también 63 bytes:
fuente
05AB1E , 24 bytes
Utiliza la codificación CP-1252 .
Pruébalo en línea!
Explicación
fuente
En realidad , 26 bytes
Pruébalo en línea!
Explicación:
fuente
Cheddar, 56 bytes
Utiliza la nueva
=>
función.Explicación
fuente
Pyke,
282726 bytesPruébalo aquí!
Hoy aprendí algo nuevo sobre mi idioma:
1c
puede usarse como una forma de 2 caracteres de dividir una cadena en una lista de caracteres.fuente
MATL , 26 bytes
Pruébalo en línea!
Explicación
fuente
Ruby,
45441 byte guardado gracias a la esmoquin.
Esto es 45
Intentar algo más inteligente parece hacerlo más largo.
fuente
puts
JavaScript (ES6),
6965 bytesGuardado 4 bytes gracias a edc65
fuente
'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')
(cambiar\n
a una nueva línea literal)C #,
9492 bytesEditar: Gracias a milk por guardar 1 byte cambiando el orden de las cadenas para eliminar el espacio en blanco de retorno.
Editar: se guardó 1 byte más al agregar un parámetro ficticio ( x en lugar de () ) para la función anónima y llamarlo con cualquier objeto.
Programa completo con la función anterior:
C # es un lenguaje muy detallado ...
C # programa completo, 131 bytes
Sin golf:
fuente
a
yb
en mayúsculas, luego puede deshacerse del espacio después dereturn
:return(a+b).ToLower()+...
var
lugar destring
?var
con varias declaraciones en una sola línea. Entoncesstring a="rnbqkbnr\n",b="pppppppp\n",c="........\n";
se convertiríavar a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";
, lo que aumenta el conteo de bytes. EDITAR: Daría un error " Una declaración de variable local tipada implícitamente no puede incluir múltiples declaradores " .Python 2, 68 bytes
Publicación de todos modos, aunque la versión anterior de Python 2 es más corta. No tendría que ser un trazador de líneas para la cantidad de bytes, solo jugar con él.
fuente
z
que solo se usa una vez, puede deshacerse de él y producir los puntos en la declaración de impresión.Haskell, 53 bytes
a
se utiliza como la primera línea y para determinar la longitud de las cuerdas hechas dep
,.
yP
(-><$a
). .fuente
JavaScript (ES6), 73
.toUpperCase
es simplemente demasiado largofuente
(r=c=>c[0].repeat(8)+
\ n,b=r
.)=>
te ahorra un byte.PowerShell v2 +, 44 bytes
Las cadenas que quedan en la tubería se imprimen implícitamente con la
Write-Output
ejecución del programa. Combinamos eso con el comportamiento predeterminado de la nueva línea para que una matriz produzca las cuatro líneas de puntos con el operador de coma.fuente
,
crea una matriz (en este caso, una matriz de cadenas). El valor predeterminadoWrite-Output
al finalizar el programa inserta una nueva línea entre los elementos que quedan en la tubería, incluidos los elementos de matriz individuales. Entonces, estamos abusando del comportamiento de salida predeterminado para no necesitar escribir nuevas líneas explícitas en el código.V ,
27, 26 bytesPruébalo en línea!
Contiene algunos caracteres no imprimibles, así que aquí está la versión legible:
donde
<esc>
representa0x1B
. Explicación:fuente
Emotinomicon, 89 bytes
Lamentablemente, Emotinomicon no tiene nada como una función de pila duplicada. Sería útil Pero al menos más corto que Java. :)
Explicación:
fuente
Brain-Flak ,
366350 + 3 = 353 bytesPruébalo en línea!
Esto obtiene un plus 3 porque requiere el
-A
bandera se ejecute correctamente.Explicación
fuente
((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))
que creo que le ahorraría 16 bytes. Esto no utiliza la pila alternativa en absoluto, por lo que probablemente podría ser aún más corto.Python 3.5, 56 bytes
Esto usa una idea de zawata para codificar cada línea como
(r*8)[:8]
, con una cadena repetida 8 veces y recortada a la longitud8
. Los peones y filas vacías son sólo'p'*8
,'.'*8
y'P'*8
, sin recorte. La primera fila usa'rnbqkbn'
, con('rnbqkbn'*8)[:8]
inclusión de otra torre a la derecha cuando se multiplica y se recorta. La última fila es la misma pero en mayúscula.Expresamos la lista de partes de fila de manera compacta
['rnbqkbn','p','.','.','.','.','P','RNBQKBN']
usando el desempaquetado generalizado de Python 3.5 . Escribimos la primera y la última entrada, y las restantes de un solo carácter se desempaquetan de una cadena.En Python 2, podríamos conformarnos
split
con 60 bytes:fuente
Python 3,
828075 BytesNo es la respuesta más corta en Python, pero es mi primera y creo que es bastante buena por primera vez.
fuente
[:8]for i in['rnbqkbn'....
'rnbqkbn p . . . . P RNBQKBN'.split()
.Lote, 105 bytes
Batch es muy detallado ...
fuente
R, 75 bytes
Editar: se corrigió un error tonto y simplemente escribe la parte mayúscula del tablero ahora.
fuente
\n
Powershell,
8273 bytesfuente
*per
cosa antes, y un google no me da consejos. ¿Tienes una explicación?J,
5552 bytesPrueba y pasos intermedios
fuente
Python 3, 64 bytes
Según la respuesta de DLosc a Python 2, como en la mía, no pude mejorar.
1 byte menos en comparación con el uso de "\ n" .join
fuente
q, 51 bytes
fuente
-1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";
. 40 bytes. Buena solución sin embargo!GNU sed, 54 bytes
Pruébalo en línea!
Explicación:
Las piezas negras se imprimen primero, guardando los dos rangos de tablero asociados en orden inverso en el espacio de espera. Las piezas blancas se imprimen al convertir el espacio de espera en letras mayúsculas.
fuente
Java 7,
1039989 bytes10 bytes guardados en comparación con la salida codificada gracias al enfoque de @SLC en su respuesta C # .
Pruébalo aquí
Salida:
fuente
String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}
Esto es de 100 bytes .C #,
85848374 bytesEditar: ¡Accidentalmente tenía demasiadas filas de espacios en blanco!
Editar: liberó un personaje adicional y arregló el pedido (accidentalmente lo invirtió todo) muchas gracias a @KevinCruijssen
Editar: volví a 83 porque tenía las gambas en la línea incorrecta
Editar: Gracias a @adrianmp que me ayudó a reducirlo aún más omitiendo return
Usando el mismo formato que @adrianmp responde arriba:
Programa completo con la función anterior:
fuente
return "
, por lo que se convierte en:x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};
. Buena respuesta, entonces +1 de mi parte. Y disfruta tu estadía aquí. :)x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");