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.