Hier ist eine einfache Herausforderung für Sie: Sie müssen diese ASCII-Darstellung eines Schachbretts erstellen. Weiß wird durch Großbuchstaben und Schwarz durch Kleinbuchstaben dargestellt. Leere Kacheln werden durch a dargestellt .
. Hier ist die Vollpension:
rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
Da es sich um eine Frage der Kolmogorov-Komplexität handelt , dürfen Sie keine Eingaben vornehmen und müssen diese Karte nach einer Standardmethode ausgeben, z. B. Speichern einer Datei, Drucken in STDOUT oder Zurückkehren von einer Funktion. Optional können Sie eine nachgestellte Newline erstellen. Es gelten Standardlücken und das kürzeste Programm in Bytes!
Denken Sie jedoch daran, dass dies ebenso ein Wettbewerb zwischen Einreichungen in derselben Sprache ist. Während es unwahrscheinlich ist, dass eine Sprache wie Java eine Sprache wie Perl oder eine Golfsprache wie Pyth oder Cjam schlagen kann, ist es immer noch beeindruckend, die kürzeste Java-Antwort zu haben! Um die kürzeste Antwort in jeder Sprache zu ermitteln, können Sie diese Rangliste verwenden, in der die kürzeste Einsendung nach Sprache und Gesamtsprache angezeigt wird.
Bestenlisten
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Nummern in Ihrem Header enthalten sein sollen (zB weil Ihre Punktzahl ist die Summe von zwei Dateien oder Sie wollen Liste Dolmetscher Flagge Strafen separat), stellen Sie sicher , dass die tatsächliche Punktzahl der ist letzte Nummer in der Kopfzeile:
# Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
quelle
ASCII art
Schachbrett auf jedem zweiten Platz den Punkt?Antworten:
Jelly ,
2524 BytesProbieren Sie es online!
Vielen Dank an @Lynn für das Golfen ab 1 Byte!
Wie es funktioniert
quelle
Vim, 26 Bytes
irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj
Verlässt sich auf einen neuen Vim oder
5V
wählt den falschen Bereich aus.irnbqkbnr<Esc>
: Schreiben Sie die oberste Zeile. Leicht genug.Y6p
: Machen Sie den Rest der Zeilen, mit einer Ausnahme . Natürlich enthalten alle außer der oberen und unteren Zeile die falschen Zeichen.5Vr.
: Wenn Sie in der Sitzung den visuellen Modus noch nicht verwendet haben, können Sie wie folgt vorgehen, um 5 Zeilen auszuwählen. Wenn Sie das Gleiche sofort noch einmal eingeben, werden 25 Zeilen ausgewählt. Vim ist so komisch.Vrp
: Wir sind bereits in Zeile 2, machen wir also eine Bauernzeile.YGP
: Kopiere diese Pfandlinie in den unteren Bereich. Deshalb habe ich früher6p
verwendet7p
.gUj
: Großschreiben Sie die weißen Teile.quelle
Brainfuck , 224 Bytes
Es dauerte fast eine Stunde, um das zu bekommen.
quelle
Python 2, 63 Bytes
Leider war der ziemlich einfache Ansatz viel kürzer als das "clevere" Zeug, das ich zuerst ausprobiert habe ...
Bonusantwort, auch 63 Bytes:
quelle
05AB1E , 24 Byte
Verwendet die CP-1252- Codierung.
Probieren Sie es online!
Erläuterung
quelle
Eigentlich 26 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Cheddar, 56 Bytes
Verwendet die neue
=>
Funktion.Erläuterung
quelle
Pyke,
282726 BytesProbieren Sie es hier aus!
Ich habe heute etwas Neues über meine Sprache gelernt:
1c
Kann als 2-Zeichen-Methode zum Aufteilen einer Zeichenfolge in eine Liste von Zeichen verwendet werden.quelle
MATL , 26 Bytes
Probieren Sie es online!
Erläuterung
quelle
Rubin,
45441 Byte gespart dank Tuxcrafting.
Das ist 45
Wenn man etwas Klügeres probiert, scheint es nur länger zu dauern.
quelle
puts
JavaScript (ES6),
69 bis65 Byte4 Bytes gespart dank edc65
quelle
'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')
(Änderung\n
zu einer wörtlichen Newline)C #,
9492 BytesBearbeiten: Dank Milch für das Speichern von 1 Byte durch Ändern der Zeichenfolgenreihenfolge, um das zurückgegebene Leerzeichen zu entfernen.
Bearbeiten: 1 weiteres Byte wurde gespeichert, indem ein Dummy-Parameter ( x anstelle von () ) für die anonyme Funktion hinzugefügt und mit einem beliebigen Objekt aufgerufen wurde.
Volles Programm mit der obigen Funktion:
C # ist eine sehr ausführliche Sprache ...
Volles C # -Programm, 131 Bytes
Ungolfed:
quelle
a
und dannb
als Großbuchstaben das Leerzeichen entfernenreturn
:return(a+b).ToLower()+...
var
statt verwendenstring
?var
mehrere Deklarationen in einer einzelnen Zeile verwenden können. Sostring a="rnbqkbnr\n",b="pppppppp\n",c="........\n";
würde es werdenvar a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";
, was die Byteanzahl erhöht. BEARBEITEN: Es würde ein Fehler " Eine implizit typisierte lokale Variablendeklaration kann nicht mehrere Deklaratoren enthalten " angezeigt .Python 2, 68 Bytes
Poste trotzdem obwohl die obige Python 2 Version kürzer ist. Es müsste kein Einzeiler für die Anzahl der Bytes sein, nur damit gespielt.
quelle
z
es nur einmal verwendet wird, können Sie es loswerden und die Punkte in der print-Anweisung erzeugen.Haskell, 53 Bytes
a
wird als erste Linie verwendet , und die Länge der Zeichenkette aus , um zu bestimmenp
,.
undP
(-><$a
). .quelle
JavaScript (ES6), 73
.toUpperCase
ist einfach zu langquelle
(r=c=>c[0].repeat(8)+
\ n,b=r
.)=>
Spart dir ein Byte.PowerShell v2 +, 44 Byte
In der Pipeline verbleibende Zeichenfolgen werden implizit mit gedruckt
Write-Output
bei der Programmausführung . Wir koppeln dies mit dem Standardverhalten für Zeilenumbrüche für ein Array, um die vier Zeilen mit dem Kommaoperator zu erzeugen.quelle
,
erstellt ein Array (in diesem Fall ein Array von Strings). Die StandardeinstellungWrite-Output
bei Programmabschluss fügt eine neue Zeile zwischen Elementen ein, die in der Pipeline verbleiben, einschließlich einzelner Array-Elemente. Wir missbrauchen also das Standardausgabeverhalten, um keine expliziten Zeilenumbrüche im Code zu schreiben.V ,
27, 26 BytesProbieren Sie es online!
Dies enthält einige nicht druckbare Zeichen. Hier ist die lesbare Version:
wo
<esc>
repräsentiert0x1B
. Erläuterung:quelle
Emotinomicon, 89 Bytes
Leider hat Emotinomicon nichts Besseres als eine Duplikat-Stack-Funktion. Wäre nützlich. Aber zumindest kürzer als Java. :)
Erläuterung:
quelle
Brain-Flak ,
366350 + 3 = 353 BytesProbieren Sie es online!
Dies ergibt ein Plus von 3, da das
-A
Flag ordnungsgemäß ausgeführt werden muss.Erläuterung
quelle
((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))
denen ich denke, Sie 16 Bytes sparen würde, drücken . Der alternative Stack wird hier überhaupt nicht verwendet, daher könnte er möglicherweise noch kürzer sein.Python 3.5, 56 Bytes
Hierbei wird eine Idee von zawata verwendet , um jede Zeile wie folgt zu codieren:
(r*8)[:8]
Eine Zeichenfolge wird achtmal wiederholt und auf die Länge gekürzt8
. Die Bauern und leere Zeilen sind nur'p'*8
,'.'*8
und'P'*8
, ohne Besatz. Die erste Reihe wird verwendet'rnbqkbn'
, wobei ein('rnbqkbn'*8)[:8]
weiterer Turm rechts eingefügt wird, wenn er multipliziert und getrimmt wird. Die letzte Zeile ist die gleiche, aber groß geschrieben.Wir drücken die Liste der Zeilenteile
['rnbqkbn','p','.','.','.','.','P','RNBQKBN']
mithilfe des allgemeinen Entpackens von Python 3.5 kompakt aus . Wir schreiben den ersten und den letzten Eintrag aus, und die verbleibenden Einzelzeichen werden aus einer Zeichenfolge entpackt.In Python 2 könnten wir uns
split
stattdessen mit 60 Bytes begnügen:quelle
Python 3,
828075 BytesNicht die kürzeste Antwort in Python, aber es ist meine erste und ich denke, es ist zum ersten Mal ziemlich gut
quelle
[:8]for i in['rnbqkbn'....
'rnbqkbn p . . . . P RNBQKBN'.split()
.Batch, 105 Bytes
Batch ist ernsthaft ausführlich ...
quelle
R, 75 Bytes
Bearbeiten: Ein dummer Fehler wurde behoben und der Großbuchstaben-Teil der Tafel wurde jetzt einfach ausgeschrieben.
quelle
\n
Powershell,
8273 Bytesquelle
*per
Ding noch nie gesehen und ein Google gibt mir keine Hinweise. Hast du eine Erklärung?J,
5552 BytesTest und Zwischenschritte
quelle
Python 3, 64 Bytes
Basierend auf DLosc Antwort auf Python 2 konnte ich mich nicht verbessern.
1 Byte weniger im Vergleich zu "\ n" .join
quelle
q, 51 Bytes
quelle
-1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";
. 40 Bytes. Gute Lösung!GNU sed, 54 Bytes
Probieren Sie es online!
Erläuterung:
Die schwarzen Teile werden zuerst gedruckt, wobei die beiden zugeordneten Board-Ränge im Laderaum in umgekehrter Reihenfolge gespeichert werden. Die weißen Teile werden gedruckt, indem der Haltebereich in Großbuchstaben umgewandelt wird.
quelle
Java 7,
1039989 Bytes10 Bytes gespart im Vergleich zur hardcodierten Ausgabe dank @SLCs Ansatz in seiner C # -Antwort wurden eingespart .
Probieren Sie es hier aus.
Ausgabe:
quelle
String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}
? Das sind 100 Bytes .C #,
85848374 BytesEdit: Hatte versehentlich zu viele Zeilen Leerzeichen!
Bearbeiten: Befreie einen zusätzlichen Charakter und behebe die Reihenfolge (hatte versehentlich alles umgekehrt), vielen Dank an @KevinCruijssen
Edit: Zurückgesetzt auf 83, da ich die Garnelen in der falschen Zeile hatte
Edit: Danke an @adrianmp, der mir geholfen hat, es weiter zu verkleinern, indem er Return weggelassen hat
Verwenden Sie dasselbe Format wie bei der @ adrianmp-Antwort oben:
Volles Programm mit der obigen Funktion:
quelle
return "
, so wird es:x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};
. Schöne Antwort, also +1 von mir. Und genießen Sie Ihren Aufenthalt hier. :)x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");