¡Dibuja un tablero de ajedrez ASCII!


42

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 , 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 Nestá 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


1
¿Seguramente un ASCII arttablero de ajedrez tendría el punto final en cada casilla?
Shaun Bebbers

Respuestas:


16

Jalea , 25 24 bytes

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY

Pruébalo en línea!

¡Gracias a @Lynn por jugar golf en 1 byte!

Cómo funciona

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY  Main link. No arguments.

“.“.“p“rnbqkbn”           Yield [".", ".", "p", "rnbqkbnr"].
               ṁ€8        Mold-each 8; reshape each string like the array
                          [1, 2, 3, 4, 5, 6, 7, 8], i.e., cyclically repeat its
                          contents to create strings of length 8.
                          This yields the upper half of the board in reversed
                          order, i.e., the string array
                          A := "........", "........", "pppppppp", "rnbqkbnr"].
                  µ       Begin a new, monadic chain. Argument: A
                   Ṛ      Reverse A.
                     Œu   Convert all characters in A to uppercase.
                    ;     Concatenate the results to both sides.
                       Y  Join the strings, separating by linefeeds.

15

Vim, 26 bytes

irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj

Se basa en un Vim nuevo, o de lo contrario 5Vpuede 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é en 6plugar de 7pantes.
  • gUj: Capitaliza las piezas blancas.

1
¡El mejor lenguaje de golf que existe!
dejó de girar en sentido contrario a las agujas del reloj el

10

Brainfuck , 224 bytes

+++++[>+++[>++++++<-]+<-]>>.[>>+>+<<<-]>>>[<<<+>>>-]<<<----.<+++[>---<-]>.>>-.------.<<.>>+++.++++.--<++++++++++>>++++++++++.<........>.[>+++++<-]>----<++++[>........<<<.>>-]<........<.>++.----.<<.>>+++.------.<<.>>+++.++++.

Tomó casi una hora para conseguir esto.


8

Python 2, 63 bytes

print"\n".join(["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"])

Desafortunadamente, el enfoque bastante simple fue mucho más corto que las cosas "inteligentes" que probé al principio ...

Respuesta adicional, también 63 bytes:

print"\n".join(["rnbqkbnr"]+[c*8for c in"p....P"]+["RNBQKBNR"])

8

05AB1E , 24 bytes

Utiliza la codificación CP-1252 .

"rnbqkbnr"'p8×'.8×D)Âu«»

Pruébalo en línea!

Explicación

"rnbqkbnr"                # push the string "rnbqkbnr"
                          # STACK: "rnbqkbnr"
          'p8×            # push the char "p" repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp"
              '.8×        # push the char "." repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp", "........"
                  D       # duplicate
                          # STACK: "rnbqkbnr", "pppppppp", "........", "........"
                   )      # wrap in list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"]
                    Â     # push a reversed copy of the list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"], 
                                   ["........", "........", "pppppppp", "rnbqkbnr"]
                     u«   # convert to upper-case and concatenate
                          # STACK: ['rnbqkbnr', 'pppppppp', '........', '........', 
                                    '........', '........', 'PPPPPPPP', 'RNBQKBNR']
                       »  # join list by newline

1
Creo que esta es la PRIMERA vez que he respondido una respuesta sin mirar y te he encontrado en el 100% de los caracteres utilizados. Tengo que estar de acuerdo en que esto es tan bueno como parece jaja.
Urna mágica del pulpo

7

En realidad , 26 bytes

'p8*"rnbqkbnr"│û@û4'.8*n((

Pruébalo en línea!

Explicación:

'p8*"rnbqkbnr"│û@û4'.8*n((
'p8*                        "p"*8 ["pppppppp"]
    "rnbqkbnr"              that string ["rnbqkbnr", "pppppppp"]
              │             duplicate stack ["rnbqkbnr", "pppppppp", "rnbqkbnr", "pppppppp"]
                û@û         uppercase the dupes ["RNBQKBNR", "PPPPPPPP", "rnbqkbnr", "pppppppp"]
               4   '.8*n    "."*8, 4 times ["RNBQKBNR", "PPPPPPPP", "........", "........", "........", "........", "rnbqkbnr", "pppppppp"]
                        ((  move the uppercase strings to the bottom of the stack, implicitly print

6

Cheddar, 56 bytes

a=['rnbqkbnr','p'*8]+['.'*8]*2->(a+a.rev=>@.upper).vfuse

Utiliza la nueva =>función.

Explicación

a=                      // set a to the first half
  ['rnbqkbnr','p'*8] +  // First two rows
  ['.'*8]*2             // Next two dots
->(
   a +
   a.rev=>@.upper       // Reverse and map all items to uppercase
).vfuse                 // Join on newlines

55
¿Entonces respondiste una pregunta sobre 'ajedrez' en 'ches'?
DJMcMayhem

44
@DJMcMayhem .................. acabas de .....
Downgoat

1
mm este es un hermoso queso. buen abuso de los parámetros predeterminados
Conor O'Brien

6

Pyke, 28 27 26 bytes

"rnbqkbnr"i"P..p"1c8m*Xil3

Pruébalo aquí!

Hoy aprendí algo nuevo sobre mi idioma: 1cpuede usarse como una forma de 2 caracteres de dividir una cadena en una lista de caracteres.

"rnbqkbnr"i                - i = "rnbqkbnr"
                             stack = ["rnbqkbnr"])
           "P..p"1c        -  chunk("P..p", 1)
                             stack = ["rnbqkbnr", ["P", ".", ".", "p"]]
                   8m*     - map(8*>, ^)
                             stack = ["rnbqkbnr", ["PPPPPPPP", "........", "........", "pppppppp"]]
                      X    - splat(^)
                             stack = ["rnbqkbnr", "pppppppp", "........", "........", "PPPPPPPP"]
                       il3 - i.changecase()
                             stack = ["rnbqkbnr", "pppppppp", "........", "........", "PPPPPPPP", "RNBQKBNR"]
                           - implicit join with newlines

rnbqkbnr
pppppppp
........
........
PPPPPPPP
RNBQKBNR

5

MATL , 26 bytes

'rnbqkbnr' 'p..'!l8X"vtPXk

Pruébalo en línea!

Explicación

'rnbqkbnr'   % Push this string (1×8 char array)
'p..'!       % Push this string transposed (3×1 char array)
l8X"         % Repeat 1×8 times: gives 3×8 char array
v            % Concatenate the two arrays vertically into a 4×8 char array
tP           % Duplicate and flip vertically
Xk           % Convert to uppercase. Implicitly display the two 4×8 arrays

5

Ruby, 45 44

1 byte guardado gracias a la esmoquin.

puts"rnbqkbnr",?p*8,[?.*8]*4,?P*8,"RNBQKBNR"

Esto es 45

puts s="rnbqkbnr",?p*8,[?.*8]*4,?P*8,s.upcase

Intentar algo más inteligente parece hacerlo más largo.


Retire el espacio antes de la cadena después de laputs
TuxCrafting

5

JavaScript (ES6), 69 65 bytes

Guardado 4 bytes gracias a edc65

let f =

_=>`rnbqkbnr
p....PRNBQKBNR`.replace(/p|\./ig,c=>c.repeat(8)+`
`)

console.log(f());


1
¡Muy inteligente! Quizás demasiado inteligente, podría guardar 4 bytes con 'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')(cambiar \na una nueva línea literal)
edc65

5

C #, 94 92 bytes

Editar: 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.

x=>{string a="RNBQKBNR\n",b="PPPPPPPP\n",c="........\n";return(a+b).ToLower()+c+c+c+c+b+a;};

Programa completo con la función anterior:

using System;

namespace DrawAnASCIIChessBoard
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<object,string>f= x=>{string a="RNBQKBNR\n",b="PPPPPPPP\n",c="........\n";return(a+b).ToLower()+c+c+c+c+b+a;};
            Console.WriteLine(f(1));
        }
    }
}

C # es un lenguaje muy detallado ...


C # programa completo, 131 bytes

class P{static void Main(){string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";System.Console.Write(a+b+c+c+c+c+(b+a).ToUpper());}}

Sin golf:

class P
{
    static void Main()
    {
        string a="rnbqkbnr\n",
            b="pppppppp\n",
            c="........\n";
        System.Console.Write(a+b+c+c+c+c+(b+a).ToUpper());
    }
}

2
"C # es un lenguaje muy detallado ...". No has probado VB.NET entonces ...;)
TyCobb

2
Puede guardar un byte definiendo ay ben mayúsculas, luego puede deshacerse del espacio después de return:return(a+b).ToLower()+...
leche

@TyCobb Probé VB.NET hace bastante tiempo. No sabía sobre golf de código en ese entonces: P
adrianmp

puedes usar en varlugar de string?
NibblyPig

@SLC No he programado en C # por un tiempo, así que corrígeme si me equivoco, pero no creo que puedas usarlo varcon varias declaraciones en una sola línea. Entonces string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";se convertiría var 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 " .
Kevin Cruijssen

4

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.

x,y,z="rnbqkbnr\n","p"*8+"\n","."*8+"\n";print x,y,4*z,(y+x).upper()

Dado zque solo se usa una vez, puede deshacerse de él y producir los puntos en la declaración de impresión.
Karl Napf

3

Haskell, 53 bytes

a="rnbkqbnr" 
unlines$a:map(<$a)"p....P"++["RNBKQBNR"]

ase utiliza como la primera línea y para determinar la longitud de las cuerdas hechas de p, .y P(-> <$a). .


3

JavaScript (ES6), 73

.toUpperCase es simplemente demasiado largo

_=>`rnbqkbnr
${r=c=>c[0].repeat(8)+`
`,r`p`+(b=r`.`)+b+b+b+r`P`}RNBQKBNR`

O.textContent=(
  
_=>`rnbqkbnr
${r=c=>c[0].repeat(8)+`
`,r`p`+(b=r`.`)+b+b+b+r`P`}RNBQKBNR`

)()
<pre id=O></pre>


Creo que (r=c=>c[0].repeat(8)+\ n ,b=r. )=>te ahorra un byte.
Neil

@Neil, no veo el ahorro. Traté de reescribir el código aumentando la lectura (un poco), pero el recuento de bytes permanece igual
edc65

Ah, veo lo que hice mal allí, de alguna manera perdí una nueva línea en el camino. Lo siento por eso.
Neil

3

PowerShell v2 +, 44 bytes

'rnbqknbr'
'p'*8
,('.'*8)*4
'P'*8
'RNBQKNBR'

Las cadenas que quedan en la tubería se imprimen implícitamente con la Write-Outputejecució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.

PS C:\Tools\Scripts\golfing> .\draw-ascii-chess-board.ps1
rnbqknbr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKNBR

¿Dónde están las nuevas líneas en las líneas de puntos? ", ('.' * 8) * 4" es el ',' supongo ...
RosLuP

@RosLuP El operador de coma ,crea una matriz (en este caso, una matriz de cadenas). El valor predeterminado Write-Outputal 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.
AdmBorkBork

3

V , 27 , 26 bytes

i¸P
RNBQKBNRäkgujddppÒ.4Ä

Pruébalo en línea!

Contiene algunos caracteres no imprimibles, así que aquí está la versión legible:

i¸P
RNBQKBNR<esc>äkgujddppÒ.4Ä

donde <esc>representa 0x1B. Explicación:

i                               " Enter insert mode
 ¸P                             " Enter 8 'P' characters
                                " and a newline
RNBQKBNR<esc>                   " Enter the first row and escape to normal mode.
             äk                 " Duplicate this line and the line above
               guj              " Convert this line, and the line below to lowercase
                  dd            " Delete this line
                    pp          " And paste it twice below us
                      Ò.        " Replace this whole line with '.' chars
                        4Ä      " And create four copies of this line

3

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. :)

😭RNBKQBNR
PPPPPPPP
........
........
........
........
pppppppp
rnbkqbnr😲⏪⏬⏩

Explicación:

😭(...)😲⏪⏬⏩
😭(...)😲            String literal
         ⏪  ⏩      Loop
           ⏬        Pop one char and output

Hmm ... esa sería una función útil, ahora no lo sería ...
Conor O'Brien

Incluso el programa es triste. 😭 = Tristemente
A _

3

Brain-Flak , 366 350 + 3 = 353 bytes

Pruébalo en línea!

(((((((((((()()())){}(((({}))){}{}(([((({})){}){}](([({}())](((((({}()){}){}){}()){})<>))<>)<>)<>)))<<>({}<>)<>({}<>)<>({}<>)([]()())>[()]))))))))(()()()()){({}[()]<((((((((((((()()()()()){})()){}()){}))))))))>)}{}(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((((()()()))){})(({}{})(([{}({})](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}

Esto obtiene un plus 3 porque requiere el -A bandera se ejecute correctamente.

Explicación

First we push the last 5 letters to the active stack.
We also push copies of last 3 numbers to the inactive stack.
This is done with fairly simple methods I won't go into for the sake of brevity.

 (((()()())){}(((({}))){}{}(([((({})){}){}](([({}())](((((({}()){}){}){}()){})<>)<><>)<>)<>)<>)))

We Move Everything from the offstack to the onstack.
The first 3 letters are the same as the last 3 letters in the first line

{<>({}<>)}{}

We push 10 for a new line

((()()()()()){})

Using the value of Q we create a P and push it 8 times

((((((((<...>[()]))))))))

We loop 4 times each time pushing 8 dots and a newline

(()()()())
{({}[()]<
    ((((((((((((()()()()()){})()){}()){}))))))))
>)}{}

We push the last two lines in a very similar way to the first two.

(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((()()()){})(({}()()())(([{}(()()())](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}

Puede empujar las dos primeras líneas con las ((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))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.
DJMcMayhem

3

Python 3.5, 56 bytes

for r in['rnbqkbn',*'p....P','RNBQKBN']:print((r*8)[:8])

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 longitud 8. Los peones y filas vacías son sólo 'p'*8, '.'*8y '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 splitcon 60 bytes:

for i in'rnbqkbn p . . . . P RNBQKBN'.split():print(i*8)[:8]

3

Python 3, 82 80 75 Bytes

No es la respuesta más corta en Python, pero es mi primera y creo que es bastante buena por primera vez.

print('\n'.join((i*8)[:8]for i in'rnbqkbn p . . . . P RNBQKBN'.split()))

1
Bienvenido al sitio! Podría quitar dos bytes si elimina algunos espacios adicionales. Ej .[:8]for i in['rnbqkbn'....
DJMcMayhem

1
Buena idea con unificar todas las líneas y reutilizar las torres. Puede escribir la lista más corta como 'rnbqkbn p . . . . P RNBQKBN'.split().
xnor

@DJMcMayhem no sabía que no eran necesarios. ¡Gracias!
zawata

@xnor que es una gran idea! Voy a tener que agregar ese truco a mi "arsenal" jaja
zawata

2

Lote, 105 bytes

@set e=@echo ........
@echo rnbqkbnr
@echo pppppppp
%e%
%e%
%e%
%e%
@echo PPPPPPPP
@echo RNBQKBNR

Batch es muy detallado ...


2

R, 75 bytes

Editar: se corrigió un error tonto y simplemente escribe la parte mayúscula del tablero ahora.

cat("rnbqkbnr\npppppppp\n",rep("........\n",4),"PPPPPPPP\nRNBQKBNR",sep="")

1
Las piezas negras salen mal como está: los peones deben estar delante de las otras piezas.
JDL

@JDL Por supuesto que tienes razón, gracias. Error tonto al hacer cambios de último segundo.
Billywob



2

J, 55 52 bytes

'.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0

Prueba y pasos intermedios

   '.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
rnbkqbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBKQBNR
   8 48#6 0
6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1 2 3 4 5 3 2 1,8 48#6 0
1 2 3 4 5 3 2 1 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   8 8$1 2 3 4 5 3 2 1,8 48#6 0
1 2 3 4 5 3 2 1
6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
   (+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
 1  2  3  4  5  3  2  1
 6  6  6  6  6  6  6  6
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
_6 _6 _6 _6 _6 _6 _6 _6
_1 _2 _3 _4 _5 _3 _2 _1
   '.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
rnbkqbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBKQBNR

2

Python 3, 64 bytes

Según la respuesta de DLosc a Python 2, como en la mía, no pude mejorar.

print(*["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"],sep="\n")

1 byte menos en comparación con el uso de "\ n" .join

print("\n".join(["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"]))

2

q, 51 bytes

"\n"sv flip{x,"p...P","c"$("i"$x)-32}each"rnbqkbnr"

Puede recortar algunos bytes con superior y cada uno a la derecha. También los siguientes impresiones a la salida estándar en lugar de devolver una cadena con saltos de línea: -1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";. 40 bytes. Buena solución sin embargo!
StreetSter

2

GNU sed, 54 bytes

s:^:rnbqkbnr:p;h
s:.:p:gp;G
h;s:[^\n]:.:gp;G
s:.:\U&:g

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.

s:^:rnbqkbnr:p;h   # change pattern and hold spaces to 'rnbqkbnr' and print string
s:.:p:gp           # replace each pattern space letter with a 'p', then print
G;h                # append hold space, then copy pattern space to hold space
s:[^\n]:.:gp       # replace each pattern space letter with a '.', then print
G;s:.:\U&:g        # append hold space and convert pattern space to uppercase
                   # (automatic printing of pattern space at the end)

2

Java 7, 103 99 89 bytes

String f(){return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".replace("x","........\n");}

10 bytes guardados en comparación con la salida codificada gracias al enfoque de @SLC en su respuesta C # .

Pruébalo aquí

Salida:

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

¿Qué pasa con esto? String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}Esto es de 100 bytes .
Numberknot

@Numberknot Qué aburrido ... pero tienes razón, es más corto. Por cierto, son 99 bytes, no 100.
Kevin Cruijssen

2

C #, 85 84 83 74 bytes

Editar: ¡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:

x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");

Programa completo con la función anterior:

using System;

namespace DrawAnASCIIChessBoard
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<object, string> f = 
                x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
                    Console.WriteLine(f(1));
        }
    }
}

Hola, bienvenido a PPCG! Hmm, el orden de tus piezas parece incorrecto con el de OP. Por cierto, puede guardar 1 byte eliminando el espacio entre 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í. :)
Kevin Cruijssen

Y gracias por tu respuesta. He portado el mismo enfoque para mi respuesta Java 7 (por supuesto, acreditándote) , reduciendo el recuento de bytes en 10. :)
Kevin Cruijssen

Lo he mejorado aún más
NibblyPig

Gah, me acabo de dar cuenta de que eso no está bien
NibblyPig

1
Buen enfoque! En realidad, puede reducirlo a 74 bytes:x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
adrianmp
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.