Disegna una scacchiera ASCII!


42

Ecco una semplice sfida per te: devi produrre questa rappresentazione ASCII di una scacchiera. Il bianco è rappresentato da caratteri maiuscoli e il nero da caratteri minuscoli. Le tessere vuote sono rappresentate da a .. Ecco la pensione completa:

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

Poiché si tratta di una , non è possibile accettare alcun input ed è necessario generare questa scheda con qualsiasi metodo predefinito, ad esempio salvando un file, stampando su STDOUT o ritornando da una funzione. Si può opzionalmente produrre un fine riga. Si applicano scappatoie standard e il programma più breve in byte!

Tuttavia, ricorda che si tratta ugualmente di una competizione tra invii nella stessa lingua. Mentre è improbabile che una lingua come Java possa battere una lingua come il perl o una lingua da golf come pyth o cjam, avere la risposta Java più breve è ancora davvero impressionante! Per aiutarti a tracciare la risposta più breve in ogni lingua, puoi utilizzare questa classifica, che mostrerà la presentazione più breve per lingua e in generale.

Classifiche

Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, usando il seguente modello Markdown:

# Language Name, N bytes

dov'è Nla dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:

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

Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:

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

Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet della classifica:

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


1
Sicuramente una ASCII artscacchiera avrebbe il punto fermo ogni altra casella?
— Shaun Bebbers,

Risposte:


16

Gelatina , 25 24 byte

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

Provalo online!

Grazie a @Lynn per il golf off 1 byte!

Come funziona

“.“.“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 byte

irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj

Si affida a un nuovo Vim, altrimenti 5Vpuò selezionare l'area sbagliata.

  • irnbqkbnr<Esc>: Scrivi la riga superiore. Abbastanza facile.
  • Y6p: Crea il resto delle righe, tranne una . Ovviamente tutti tranne le righe superiore e inferiore contengono i caratteri sbagliati.
  • 5Vr.: Quando non hai ancora utilizzato la modalità visiva nella sessione, puoi fare cose come questa per selezionare 5 righe. Se hai digitato di nuovo la stessa cosa subito, proverebbe a selezionare 25 righe. Vim è strano così.
  • Vrp: Siamo già sulla linea 2, quindi facciamo una linea di pedone.
  • YGP: Copia quella linea di pedone nella sua posizione in basso. Questo è il motivo per cui ho usato 6pinvece di 7pprima.
  • gUj: Capitalizza i pezzi bianchi.

1
Il miglior linguaggio di golf che ci sia!
— cessò di girare in senso antiorario il

10

Brainfuck , 224 byte

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

Ci sono voluti quasi un'ora per ottenerlo.


8

Python 2, 63 byte

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

Sfortunatamente, l'approccio abbastanza semplice era molto più breve delle cose "intelligenti" che ho provato all'inizio ...

Risposta bonus, anche 63 byte:

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

8

05AB1E , 24 byte

Utilizza la codifica CP-1252 .

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

Provalo online!

Spiegazione

"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
Penso che questa sia la PRIMA volta in cui io abbia mai giocato a golf una risposta senza guardarti e abbinato al 100% dei personaggi usati. Devo ammettere che è buono come haha.
— Magic Octopus Urn,

7

In realtà , 26 byte

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

Provalo online!

Spiegazione:

'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 byte

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

Utilizza la nuova =>funzionalità.

Spiegazione

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

5
Quindi hai risposto a una domanda su "scacchi" in "ches"?
— DJMcMayhem

4
@DJMcMayhem .................. hai appena .....
— Downgoat,

1
mm questo è un bel formaggio. bel abuso di parametri di default
— Conor O'Brien,

6

Pyke, 28 27 26 byte

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

Provalo qui!

Oggi ho imparato qualcosa di nuovo sulla mia lingua: 1cpuò essere usato come un modo a 2 caratteri per dividere una stringa in un elenco di caratteri.

"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 byte

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

Provalo online!

Spiegazione

'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 salvato grazie al tuxcrafting.

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

Questo è 45

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

Cercare qualcosa di più intelligente sembra solo allungarlo.


Rimuovi lo spazio prima della stringa dopo ilputs
— TuxCrafting

5

JavaScript (ES6), 69 65 byte

Salvato 4 byte grazie a edc65

let f =

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

console.log(f());


1
Molto intelligente! Forse troppo intelligente, potrebbe salvare 4 byte con 'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')(passare \na una nuova riga letterale)
— edc65

5

C #, 94 92 byte

Modifica: grazie a milk per aver salvato 1 byte modificando l'ordine delle stringhe per rimuovere lo spazio bianco di ritorno.

Modifica: salvato un altro byte aggiungendo un parametro fittizio ( x anziché () ) per la funzione anonima e chiamandolo con qualsiasi oggetto.

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

Programma completo utilizzando la funzione sopra:

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 # è un linguaggio molto dettagliato ...


Programma completo C #, 131 byte

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());
    }
}

2
"C # è un linguaggio molto dettagliato ...". Allora non hai provato VB.NET ...;)
— TyCobb il

2
È possibile salvare un byte definendo ae bin maiuscolo, quindi è possibile liberarsi dello spazio dopo return:return(a+b).ToLower()+...
— latte

@TyCobb Ho provato VB.NET qualche tempo fa. Allora non sapevo di golf a codice: P
— Adrianmp,

puoi usare varinvece di string?
— NibblyPig,

@SLC Non ho programmato in C # per un po ', quindi correggimi se sbaglio, ma non penso che tu possa usare varcon più dichiarazioni su una sola riga. Così string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";sarebbe var a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";, il che aumenta il conteggio dei byte. EDIT: darebbe un errore " Una dichiarazione di variabile locale tipizzata in modo implicito non può includere più dichiaratori " .
— Kevin Cruijssen,

4

Python 2, 68 byte

Pubblicare comunque anche se la precedente versione di Python 2 è più breve. Non dovrebbe essere un solo liner per la quantità di byte, ma solo per giocarci.

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

Dal momento che zviene utilizzato solo una volta che è possibile liberarsene e produrre i punti nell'istruzione print.
— Karl Napf,

3

Haskell, 53 byte

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

aviene usato come prima riga e per determinare la lunghezza delle stringhe costituite da p, .e P(-> <$a). .


3

JavaScript (ES6), 73

.toUpperCase è semplicemente troppo lungo

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


Penso (r=c=>c[0].repeat(8)+\ n ,b=r. )=>ti salva un byte.
— Neil,

@Neil Non vedo il salvataggio. Ho provato a riscrivere il codice aumentando la leggibilità (un po '), ma il conteggio dei byte rimane lo stesso
— edc65

Ah, vedo cosa ho fatto di sbagliato lì, in qualche modo ho perso una nuova riga lungo la strada. Mi dispiace per quello.
— Neil,

3

PowerShell v2 +, 44 byte

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

Le stringhe rimaste sulla pipeline vengono stampate implicitamente con l' Write-Outputesecuzione del programma. Lo abbiniamo al comportamento newline predefinito per un array per produrre le quattro righe di punti con l'operatore virgola.

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

Dove sono le nuove linee nelle linee di punti? ", ('.' * 8) * 4" è il ',' suppongo ...
— RosLuP,

@RosLuP L'operatore virgola ,crea un array (in questo caso un array di stringhe). L'impostazione predefinita Write-Outputal completamento del programma inserisce una nuova riga tra gli elementi rimasti sulla pipeline, inclusi i singoli elementi dell'array. Pertanto, stiamo abusando del comportamento di output predefinito per non dover scrivere righe esplicite nel codice.
— AdmBorkBork,

3

V , 27 , 26 byte

i¸P
RNBQKBNRäkgujddppÒ.4Ä

Provalo online!

Questo contiene alcuni caratteri non stampabili, quindi ecco la versione leggibile:

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

dove <esc>rappresenta 0x1B. Spiegazione:

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 byte

Purtroppo Emotinomicon non ha niente come una funzione di stack duplicato. Sarebbe utile. Ma almeno più breve di Java. :)

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

Spiegazione:

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

Hmm ... sarebbe una funzione utile, ora no ...
— Conor O'Brien,

Anche il programma è triste. 😭 = Purtroppo
— A _

3

Brain-Flak , 366 350 + 3 = 353 byte

Provalo online!

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

Questo ottiene un plus 3 perché richiede che il -Aflag funzioni correttamente.

Spiegazione

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.

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

Puoi spingere le prime due righe con ((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))cui penso che ti farebbe risparmiare 16 byte. Questo non usa affatto lo stack alternativo, quindi potrebbe essere anche più breve.
— DJMcMayhem

3

Python 3.5, 56 byte

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

Questo utilizza un'idea di zawata per codificare ogni riga come (r*8)[:8], con una stringa ripetuta 8 volte e tagliata a misura 8. Le pedine e le righe vuote sono solo 'p'*8, '.'*8e 'P'*8, senza rifilatura. La prima riga utilizza 'rnbqkbn', con l' ('rnbqkbn'*8)[:8]inclusione di un'altra torre a destra quando moltiplicata e ritagliata. L'ultima riga è la stessa ma maiuscola.

Esprimiamo l'elenco delle parti di riga in modo compatto ['rnbqkbn','p','.','.','.','.','P','RNBQKBN']utilizzando il disimballaggio generalizzato di Python 3.5 . Scriviamo la prima e l'ultima voce e quelle rimanenti a carattere singolo vengono decompresse da una stringa.

In Python 2, invece, potremmo accontentarci splitdi 60 byte:

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

3

Python 3, 82 80 75 byte

Non è la risposta più breve in Python, ma è la mia prima e penso che sia abbastanza buono per la prima volta

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

1
Benvenuti nel sito! È possibile rimuovere due byte se si rimuovono alcuni spazi extra. Ad esempio[:8]for i in['rnbqkbn'....
— DJMcMayhem

1
Bella idea con l'unificazione di tutte le linee e il riutilizzo delle torri. È possibile scrivere l'elenco più breve come 'rnbqkbn p . . . . P RNBQKBN'.split().
— xnor

@DJMcMayhem non sapeva che quelli non erano necessari. Grazie!
— zawata,

@xnor è un'ottima idea! devo aggiungere quel trucco al mio "arsenale" ahah
— zawata,

2

Lotto, 105 byte

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

Il batch è seriamente dettagliato ...


2

R, 75 byte

Modifica: risolto un errore sciocco e ora scrivi semplicemente la parte maiuscola della lavagna.

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

1
I pezzi neri escono errati in questo modo: i pedoni dovrebbero essere di fronte agli altri pezzi.
— JDL

@JDL Naturalmente hai ragione, grazie. Errore sciocco quando si apportano modifiche dell'ultimo secondo.
— Billywob,



2

J, 55 52 byte

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

Test e passaggi intermedi

   '.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 byte

Basato sulla risposta DLosc a Python 2 come il mio non potevo migliorare.

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

1 byte in meno rispetto all'utilizzo di "\ n" .join

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

2

q, 51 byte

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

È possibile radere alcuni byte con in alto e ciascuno a destra. Anche le seguenti stampe a stdout invece di restituire una stringa con a capo: -1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";. 40 byte Bella soluzione però!
— streetster

2

GNU sed, 54 byte

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

Provalo online!

Spiegazione:

I pezzi neri vengono stampati per primi, salvando i due ranghi delle schede associate in ordine inverso nello spazio di attesa. I pezzi bianchi vengono stampati convertendo lo spazio di attesa in lettere maiuscole.

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 byte

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

10 byte risparmiati rispetto all'output codificato grazie all'approccio di @SLC nella sua risposta C # .

Provalo qui.

Produzione:

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

Che dire di questo String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}. Si tratta di 100 byte .
— Numberknot,

@Numberknot Che noia .. ma hai ragione, è più breve. A proposito, sono 99 byte, non 100.
— Kevin Cruijssen,

2

C #, 85 84 83 74 byte

Modifica: accidentalmente c'erano troppe file di spazi vuoti!

Modifica: liberato un personaggio in più e risolto l'ordinamento (per errore è stato tutto invertito) grazie a @KevinCruijssen

Modifica: ripristinato all'83 perché avevo i gamberi sulla linea sbagliata

Modifica: Grazie a @adrianmp che mi ha aiutato a ridurlo ulteriormente omettendo il ritorno

Utilizzando lo stesso formato della risposta @adrianmp sopra:

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

Programma completo utilizzando la funzione sopra:

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));
        }
    }
}

Ciao, benvenuto in PPCG! Hmm, l'ordine dei tuoi pezzi sembra errato con quello di OP. Btw, è possibile risparmiare 1 byte, eliminando lo spazio tra return ", in modo che diventi: x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};. Bella risposta, quindi +1 da parte mia. E goditi il ​​tuo soggiorno qui. :)
— Kevin Cruijssen,

E grazie per la tua risposta. Ho portato lo stesso approccio alla mia risposta Java 7 (ovviamente accreditando te) , riducendo il conteggio dei byte di 10. :)
— Kevin Cruijssen,

L'ho migliorato ulteriormente
— NibblyPig l'

Gah ho appena capito che non è giusto
— NibblyPig,

1
Bel approccio! Puoi effettivamente ridurlo a 74 byte:x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
— adrianmp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.