Desenhe um tabuleiro de xadrez ASCII!

42

Aqui está um desafio simples para você: Você deve produzir essa representação ASCII de um tabuleiro de xadrez. O branco é representado por caracteres maiúsculos e o preto é representado por letras minúsculas. Ladrilhos vazios são representados por a .. Aqui está a pensão completa:

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

Como essa é uma , você não deve receber nenhuma entrada e deve enviar esta placa por qualquer método padrão, por exemplo, salvar um arquivo, imprimir em STDOUT ou retornar de uma função. Opcionalmente, você pode produzir uma nova linha à direita. Aplicam-se brechas padrão e o programa mais curto em bytes!

No entanto, lembre-se de que isso é igualmente uma competição entre envios no mesmo idioma. Embora seja improvável que uma linguagem como Java possa superar uma linguagem como perl ou uma linguagem de golfe como pyth ou cjam, ter a resposta mais curta em Java ainda é realmente impressionante! Para ajudar a rastrear a resposta mais curta em cada idioma, você pode usar este cabeçalho, que mostrará o envio mais curto por idioma e em geral.

Classificação

Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:

# Language Name, N bytes

onde Nestá o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:

# Perl, 43 + 2 (-p flag) = 45 bytes

Você também pode transformar o nome do idioma em um link que será exibido no snippet da tabela de classificação:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

DJMcMayhem
fonte
1
Certamente um ASCII arttabuleiro de xadrez teria ponto final em qualquer outra praça?
Shaun Bebbers

Respostas:

16

Geléia , 25 24 bytes

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

Experimente online!

Graças a @Lynn por jogar fora 1 byte!

Como 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.
Dennis
fonte
15

Vim, 26 bytes

irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj

Confia em um Vim novo, ou então 5Vpode selecionar a área errada.

  • irnbqkbnr<Esc>: Escreva a linha superior. Bastante fácil.
  • Y6p: Faça o restante das linhas, exceto uma . É claro que todas, exceto as linhas superior e inferior, contêm os caracteres incorretos.
  • 5Vr.: Quando você ainda não usou o modo visual na sessão, pode fazer coisas assim para selecionar 5 linhas. Se você digitasse a mesma coisa novamente imediatamente, tentaria selecionar 25 linhas. Vim é estranho assim.
  • Vrp: Já estamos na linha 2, então vamos fazer uma linha de peões.
  • YGP: Copie essa linha de peões para o seu lugar na parte inferior. É por isso que eu usei em 6pvez de 7pantes.
  • gUj: Capitalize as peças brancas.
udioica
fonte
1
Melhor linguagem de golfe que existe!
deixou de girar no sentido contrário
10

Brainfuck , 224 bytes

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

Demorou quase uma hora para conseguir isso.

Hunter VL
fonte
8

Python 2, 63 bytes

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

Infelizmente, a abordagem bastante simples foi muito mais curta do que as coisas "inteligentes" que tentei no início ...

Resposta bônus, também 63 bytes:

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

05AB1E , 24 bytes

Usa a codificação CP-1252 .

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

Experimente online!

Explicação

"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
Emigna
fonte
1
Eu acho que é a primeira vez que eu jogo uma resposta sem olhar e combiná-lo com 100% dos personagens usados. Tenho que concordar que isso é tão bom quanto parece haha.
Magic Octopus Urn
7

Na verdade , 26 bytes

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

Experimente online!

Explicação:

'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
Mego
fonte
6

Cheddar, 56 bytes

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

Usa o novo =>recurso.

Explicação

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
Downgoat
fonte
5
Então você respondeu a uma pergunta sobre 'xadrez' em 'ches'?
DJMcMayhem
4
@DJMcMayhem .................. você acabou .....
Downgoat
1
mm, este é um queijo bonito. bom abuso de parâmetros padrão
Conor O'Brien
6

Pyke, 28 27 26 bytes

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

Experimente aqui!

Eu aprendi algo novo sobre o meu idioma hoje: 1cpode ser usado como uma maneira de 2 caracteres de dividir uma string em uma 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
Azul
fonte
5

MATL , 26 bytes

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

Experimente online!

Explicação

'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
Luis Mendo
fonte
5

Ruby, 45 44

1 byte economizado graças ao tuxcrafting.

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

Isso é 45

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

Tentar qualquer coisa mais inteligente parece prolongar mais.

Level River St
fonte
Remova o espaço antes da cadeia após oputs
TuxCrafting 10/10
5

JavaScript (ES6), 69 65 bytes

Guardado 4 bytes graças a edc65

let f =

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

console.log(f());

Arnauld
fonte
1
Muito esperto! Talvez demasiado inteligente, poderia salvar 4 bytes com 'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')(a mudança \npara uma nova linha literal)
edc65
5

C #, 94 92 bytes

Edit: Obrigado ao leite por economizar 1 byte, alterando a ordem das strings para remover o espaço em branco de retorno.

Editar: economizou mais 1 byte adicionando um parâmetro fictício ( x em vez de () ) para a função anônima e chamando-o com qualquer objeto.

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

Programa completo usando a função acima:

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 # é uma linguagem muito detalhada ...


Programa completo em C #, 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());}}

Ungolfed:

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());
    }
}
adrianmp
fonte
2
"C # é uma linguagem muito detalhada ...". Você ainda não experimentou o VB.NET ...;)
TyCobb 10/10
2
Você pode salvar um byte, definindo ae bem maiúsculas, então você pode se livrar do espaço depois de return:return(a+b).ToLower()+...
milk
@ TyCobb Eu tentei o VB.NET há algum tempo. Eu não sabia sobre código de golfe naquela época: P
adrianmp 10/10
você pode usar em varvez de string?
NibblyPig 11/10
@SLC Eu não tenho programado em C # por um tempo, então me corrija se estiver errado, mas acho que você não pode usar varcom várias declarações em uma única linha. Assim string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";se tornaria var a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";, o que aumenta a contagem de bytes. EDIT: Daria um erro " Uma declaração de variável local digitada implicitamente não pode incluir vários declaradores " .
Kevin Cruijssen 11/11
4

Python 2, 68 bytes

Postando de qualquer maneira, embora a versão acima do Python 2 seja mais curta. Não precisaria ser um liner para a quantidade de bytes, apenas jogado com ele.

x,y,z="rnbqkbnr\n","p"*8+"\n","."*8+"\n";print x,y,4*z,(y+x).upper()
DomPar
fonte
Como zé usado apenas uma vez, você pode se livrar dele e produzir os pontos na declaração de impressão.
Karl Napf
3

Haskell, 53 bytes

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

aé usado como a primeira linha e para determinar o comprimento das strings feitas de p, .e P(-> <$a). .

nimi
fonte
3

JavaScript (ES6), 73

.toUpperCase é simplesmente muito longo

_=>`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>

edc65
fonte
Eu acho (r=c=>c[0].repeat(8)+\ n ,b=r. )=>economiza um byte.
Neil
@ Neil Eu não vejo a poupança. Tentei reescrever a crescente readibility código (um pouco), mas a contagem de bytes permanecer o mesmo
edc65
Ah, vejo o que fiz de errado por lá, de alguma forma perdi uma nova linha ao longo do caminho. Me desculpe por isso.
Neil
3

PowerShell v2 +, 44 bytes

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

As seqüências deixadas no pipeline são implicitamente impressas com Write-Outputa execução do programa. Associamos isso ao comportamento de nova linha padrão de uma matriz para produzir as quatro linhas de períodos com o operador de vírgula.

PS C:\Tools\Scripts\golfing> .\draw-ascii-chess-board.ps1
rnbqknbr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKNBR
AdmBorkBork
fonte
Onde estão as novas linhas nas linhas de pontos? ", ('.' * 8) * 4" é o ',' eu suponho ...
RosLuP
@RosLuP O operador de vírgula ,cria uma matriz (neste caso, uma matriz de seqüências de caracteres). O padrão Write-Outputna conclusão do programa insere uma nova linha entre os elementos deixados no pipeline, incluindo elementos individuais da matriz. Portanto, estamos abusando do comportamento de saída padrão para não precisar escrever novas linhas explícitas no código.
AdmBorkBork
3

V , 27 , 26 bytes

i¸P
RNBQKBNRäkgujddppÒ.4Ä

Experimente online!

Isso contém alguns caracteres não imprimíveis, então aqui está a versão legível:

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

onde <esc>representa 0x1B. Explicação:

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
DJMcMayhem
fonte
3

Emotinomicon, 89 bytes

Infelizmente, o Emotinomicon não tem nada como uma função de pilha duplicada. Seria útil. Mas pelo menos menor que o Java. :)

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

Explicação:

😭(...)😲⏪⏬⏩
😭(...)😲            String literal
         ⏪  ⏩      Loop
           ⏬        Pop one char and output
Roman Gräf
fonte
Hmm ... isso seria uma função útil, agora não seria ...
Conor O'Brien
Até o programa é triste. 😭 = Infelizmente
A _
3

Flacidez cerebral , 366 350 + 3 = 353 bytes

Experimente online!

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

Isso recebe mais 3 porque requer que o -Asinalizador seja executado corretamente.

Explicação

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.

(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((()()()){})(({}()()())(([{}(()()())](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}
Assistente de Trigo
fonte
Você pode enviar as duas primeiras linhas com as ((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))quais acho que economizaria 16 bytes. Isso não usa a pilha alternativa, portanto pode ser ainda mais curto.
DJMcMayhem
3

Python 3.5, 56 bytes

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

Isso usa uma ideia de zawata para codificar cada linha como (r*8)[:8], com uma sequência repetida 8 vezes e cortada no comprimento 8. Os peões e linhas vazias são apenas 'p'*8, '.'*8e 'P'*8, sem corte. A primeira linha usa 'rnbqkbn', ('rnbqkbn'*8)[:8]incluindo a outra torre à direita quando multiplicada e aparada. A última linha é a mesma, mas em maiúscula.

Expressamos a lista de partes de linha compactamente ['rnbqkbn','p','.','.','.','.','P','RNBQKBN']usando a descompactação generalizada do Python 3.5 . Escrevemos a primeira e a última entrada e as restantes de um caractere são descompactadas de uma sequência.

No Python 2, poderíamos nos contentar splitcom 60 bytes:

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

Python 3, 82 80 75 bytes

Não é a resposta mais curta em python, mas é a minha primeira e eu acho que é muito bom pela primeira vez

print('\n'.join((i*8)[:8]for i in'rnbqkbn p . . . . P RNBQKBN'.split()))
zawata
fonte
1
Bem vindo ao site! Você pode retirar dois bytes se remover alguns espaços extras. Por exemplo[:8]for i in['rnbqkbn'....
DJMcMayhem
1
Boa idéia em unificar todas as linhas e reutilizar as gralhas. Você pode escrever a lista mais curta como 'rnbqkbn p . . . . P RNBQKBN'.split().
Xnor
@DJMcMayhem não sabia que aqueles não eram necessários. obrigado!
Zawata 12/12/16
@xnor é uma ótima ideia! doente tem que adicionar esse truque para o meu "arsenal" haha
zawata
2

Lote, 105 bytes

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

Lote é seriamente detalhado ...

Neil
fonte
2

R, 75 bytes

Edit: Corrigido um erro bobo e simplesmente escreva a parte maiúscula do quadro agora.

cat("rnbqkbnr\npppppppp\n",rep("........\n",4),"PPPPPPPP\nRNBQKBNR",sep="")
Billywob
fonte
1
As peças pretas saem erradas como estão: os peões devem estar na frente das outras peças.
JDL #
@JDL Você certamente está correto, obrigado. Erro bobo ao fazer alterações no último segundo.
Billywob 10/10
2

Powershell, 82 73 bytes

$x=("rnbqkbnr",$("p"*8),$("."*8),$("."*8));$x+$x[3..0].ToUpper()-join"`n"
Chris J
fonte
59 bytes
Veskah
@Veskah - como isso funciona? Eu nunca vi a *percoisa antes, e um google não está me dando nenhuma dica. Tem uma explicação?
Chris J
Verifique aqui a descrição completa, mas |% pode chamar propriedades / métodos (com caracteres curinga no nome) sobre o que é fornecido
Veskah
2

J, 55 52 bytes

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

Teste e etapas intermediárias

   '.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
Conor O'Brien
fonte
2

Python 3, 64 bytes

Baseado na resposta do DLosc ao Python 2, como no meu, não pude melhorar.

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

1 byte a menos em comparação ao uso de "\ n" .join

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

q, 51 bytes

"\n"sv flip{x,"p...P","c"$("i"$x)-32}each"rnbqkbnr"
Boston Walker
fonte
Você pode cortar alguns bytes com superior e cada um à direita. Também as seguintes impressões para stdout em vez de retornar uma string com novas linhas: -1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";. 40 bytes. Solução agradável embora!
Streetster 19/07
2

GNU sed, 54 bytes

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

Experimente online!

Explicação:

As peças pretas são impressas primeiro, salvando as duas filas de cartão associadas na ordem inversa no espaço de espera. As peças brancas são impressas convertendo o espaço de espera em letras maiú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)
seshoumara
fonte
2

Java 7, 103 99 89 bytes

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

10 bytes salvos em comparação com a saída codificada graças à abordagem do @SLC em sua resposta C # .

Experimente aqui.

Saída:

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
Kevin Cruijssen
fonte
Que tal isso? String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}Isso é 100 bytes .
NumberKnot #
@ Numberknot Como chato .. mas você está certo, é mais curto. Btw, é 99 bytes, não 100.
Kevin Cruijssen
2

C #, 85 84 83 74 bytes

Edit: acidentalmente tinha muitas linhas de espaços em branco!

Edit: Liberou um caractere extra e corrigiu a ordem (acidentalmente, tudo foi revertido) muito obrigado a @KevinCruijssen

Edit: Revertido de volta para 83 porque eu tinha os camarões na linha errada

Edit: Graças a @adrianmp que me ajudou a diminuir ainda mais, omitindo retorno

Usando o mesmo formato da resposta @adrianmp acima:

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

Programa completo usando a função acima:

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));
        }
    }
}
NibblyPig
fonte
Olá, seja bem-vindo ao PPCG! Hmm, a ordem das suas peças parece incorreta com a do OP. Btw, você pode economizar 1 byte, removendo o espaço entre return ", por isso torna-se: x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};. Boa resposta, então +1 de mim. E aproveite a sua estadia aqui. :)
Kevin Cruijssen
E obrigado pela sua resposta. Eu tenho portado a mesma abordagem para a minha resposta Java 7 (claro creditando você) , diminuindo o byte de contagem por 10. :)
Kevin Cruijssen
Eu melhorei-lo ainda mais
NibblyPig
Gah Eu só percebi que não é certo
NibblyPig
1
Boa abordagem! Você pode reduzi-lo para 74 bytes:x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
adrianmp 11/11