Eingabe: eine positive Zahl, kleiner als 80, von stdin oder als Befehlszeilenargument.
Ausgabe: Ein quadratisches Schachbrettmuster, die Größe der eingegebenen Zahl. Die dunklen Felder werden durch den Buchstaben 'X' dargestellt, die weißen Felder durch ein Leerzeichen. Das Feld oben links sollte "X" sein.
Ein vollständiges Programm ist erforderlich.
Beispiele:
Eingabe : 1
Ausgabe :
X
Eingabe : 8
Ausgabe :
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
Antworten:
Pyth, 13 Zeichen
Hinweis: Pyth ist viel zu neu, um gewinnen zu können. Es war jedoch ein Spaßgolf und ich dachte, ich würde es teilen.
Probieren Sie es hier aus.
Wie es funktioniert:
Grundsätzlich wird dies verwendet
X
, um zu generieren"X "
oder" X"
abwechselnd, dann wiederholt diese ZeichenfolgeQ
Zeiten und nimmt die erstenQ
Zeichen. Dies wird mehrfach wiederholtQ
.Wie funktioniert die Funktion
X
(zuweisen bei)?" "
In diesem Fall wird die ursprüngliche Zeichenfolge verwendet, in diesem Fall ein Zuweisungsort undN
in diesem Fall ein Ersetzungszeichen"X"
. Da Pyths Zuweisungen modular sind, ersetzt dies das Leerzeichen an der PositionN%2
durch einX
und gibt die resultierende Zeichenfolge zurück, die sich daher"X "
in der ersten, dritten usw. Zeile und" X"
in den anderen Zeilen befindet .quelle
Golfscript - 17 Zeichen
Analyse
~
Konvertieren Sie die Eingabe in einen int-:N
Speicher in der Variablen N,{...}
für jeden Wert von [0 ... N-1]."X "N*
Wiederholen Sie "X", um eine Zeichenfolge mit N * 2 Zeichen zu erhalten.>
Nehmen Sie die Teilzeichenfolge ab dem Schleifenindex ...N<
... Ende N Zeichenn
setzen später eine neue Zeile am Ende jeder Zeichenfolgequelle
Perl,
4140Perl 5.10 oder höher, ausgeführt mit
perl -nE 'code'
(n
in Codegröße gezählt)Beispielausgabe:
quelle
x
ist der Operator für die Zeichenfolgenwiederholung.'a' x 3
Ausbeuten'aaa'
.Python, 48 Zeichen
quelle
Python, 76 Zeichen
quelle
Scala -
14195 ZeichenVerwendung:
scala filename N
wobei n Ihre Eingabe für das Programm ist.quelle
APL (16)
Angenommen
⎕IO=0
(dh, mit Nullindex versehene Arrays sind eine Einstellung)Erläuterung:
⍳2⍴⎕
: Lies eine Zahl N und erstelle eine N × N-Matrix mit (0,0) bis (N-1, N-1).2⊤¨
: Ermittelt das niedrigstwertige Bit jeder Zahl in der Matrix. (Nun haben wir also (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)=/¨
: Prüfen Sie für jedes Paar, ob die beiden Zahlen gleich sind. (Jetzt haben wir 1 0 1 0 1 0 ...)' X'[
...]
: Setzen Sie für jede 0 ein Leerzeichen und für jede 1 ein X.quelle
Ruby
4542Demo: http://ideone.com/Mw25e
quelle
(x=gets.to_i).times
Spart drei Zeichen. Warum das plötzliche erneute Interesse an diesem Oldie?Python
48 ZeichenEDIT: Irgendwie falsch ... Es gibt ein zusätzliches Leerzeichen am Ende ... aber das ist nicht sichtbar. Wenn Sie das Leerzeichen in "O" (oder ein anderes Zeichen als Leerzeichen) ändern
[i%2:n]
, ändern Sie es in[i%2:n+i%2]
. für die richtige Version.quelle
C ++ - 253 verschleierte Zeichen
quelle
JavaScript, 169
quelle
+'1'
stattparseInt('1')
. Ich gebe Ihnen keine ganze Zahl, aber ich denke nicht, dass es hier wichtig ist, eine ganze Zahl zu haben, oder?k (26 Zeichen)
26 Für nackte Funktion:
Oder weitere 7, um die Eingabe von stdin zu übernehmen
quelle
Bash: 60 Zeichen
Die Tabellengröße wird beispielsweise als Befehlszeilenparameter übergeben
bash chesstable.sh 8
.quelle
Java 10, Lambda-Funktion,
928784 BytesProbieren Sie es hier online aus .
Dank an ceilingcat für das Golfen von 4 Bytes und an Kevin Cruijssen für das Golfen von 3 weiteren Bytes .
Ungolfed-Version:
Java 8, volles Programm,
155139 BytesProbieren Sie es hier online aus .
Ungolfed-Version:
quelle
s+=
ist 2 Bytes kürzer als diese Klammern:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
. Probieren Sie es online aus."X ".charAt(i%n+i/n&1)
stattdessen vor((i%n+i/n)%2<1?"X":" ")
Japt,
87 BytesFühren Sie es online aus
76 Bytes , wenn wir ersetzen könnenX
mitx
:Führen Sie es online aus
Alternative 8-Byte- Lösung:
Führen Sie es online aus
quelle
APL (Dyalog Extended) , 12 Byte SBCS
Anonyme implizite Präfixfunktion. Benötigt
⎕IO←0
( nullbasierte Indizierung).Probieren Sie es online!
⍳
ɩndices 0… n – 1+⍀
Plus-Tabelle mit dem horizontal und vertikal:⍳
ɩndices 0… n – 12|
Division Rest, wenn durch zwei geteilt'X '⊇⍨
Verwenden Sie diese Matrix, um den String zu indizierenquelle
Scala, 68 Bytes
oder
Probieren Sie es online!
quelle
Brainfuck, 140 Bytes
quelle
Javascript, 67 Bytes
Probieren Sie es online aus
C 83 Bytes
Probieren Sie es online aus
Basic C64, 89 Bytes
quelle
on...go to
Befehl unter bestimmten Bedingungen verwenden, z. B.ON-(I+JAND1)GOTO3:?"X";:
wenn er Null ist, wird die folgende Anweisung verwendet. In diesem Fall(I + J AND 1) === 0
wird das X gedruckt. Auf diese Weise können Sie mehr Anweisungen pro Zeile packen und Bytes speichern.Scala, 40 und 54
Die Anzahl der Zeichen beträgt 40 für eine Funktion, 54 für ein vollständiges Programm.
Die Lösung, die nur einen Funktionskörper ergibt, lautet:
("X "*n)sliding n take n foreach println
Probieren Sie es online aus
Die Lösung für ein vollständiges Programm lautet:
val n=readInt;("X "*n)sliding n take n foreach println
Sie können es über die folgende Befehlszeile ausführen.
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
Wobei 8 die Eingabe ist.
quelle
("X "*n)sliding n take n map println
Python - 127 Zeichen
quelle
C -
9286quelle
Q, 33
quelle
{(x;x-1-x mod 2)#"X "}
für 22 ... ah nein, hat den gleichen Fehler wie Sie - hat nicht 4 X in den ungeraden Zeilen für die Eingabe 8.Rubin 58
quelle
PHP - 136 Zeichen (ohne Leerzeichen)
Ermöglicht die Eingabe von x- und y-Funktionen.
Unterstützt jetzt auch ungerade Eingänge.
Wenn Sie die Ausgabe so formatieren, dass sie eine Zeilenhöhe von 0,65 em hat, und diese ▒█ und █ ° in □ ■ und ■ □ ändern, sieht sie wie ein echtes (quadratisches) Schachbrett aus.
Code:
Ausgabe:
quelle
PHP, 87
quelle
CJam, 18 Bytes
Ich hätte wahrscheinlich nur die GolfScript-Antwort portieren können, aber hier ist ein anderer Ansatz. (Und CJam ist sowieso nicht gewinnberechtigt.)
Teste es hier.
Die Idee ist, mit dem
f{f{...}}
Trick über das 2D-Gitter mit den x- und y-Indizes auf dem Stapel zu iterieren . Mit x und y können wir einfach Schwarz und Weiß bestimmen und damit(x+y)%2
zwischen dem ZeichenX
und einer Zeichenfolge mit einem Leerzeichen auswählen .quelle
J, 21 Zeichen
J fehlte auch.
Bisher 22 Zeichen:
Zeichencodes aus dem Muster mod2 von
row #
+column #
:quelle
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
Probieren Sie es online!VB.net, 161
quelle
PHP, 75 Bytes
quelle