Nehmen Sie eine positive ganze Zahl n als Eingabe und geben Sie eine n-mal-n- Schachbrettmatrix aus, die aus 1 und 0 besteht .
Die obere linke Ziffer sollte immer 1 sein .
Testfälle:
n = 1
1
n = 2
1 0
0 1
n = 3
1 0 1
0 1 0
1 0 1
n = 4
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Eingabe- und Ausgabeformate sind optional. Die Ausgabe der Matrix als Liste von Listen wird akzeptiert.
Antworten:
Gelee , 4 Bytes
52 Sekunden!
Probieren Sie es online!
quelle
MATL , 5 Bytes
Probieren Sie es bei MATL online!
Erläuterung
Betrachten Sie die Eingabe
4
als Beispiel.quelle
Japt , 6 Bytes
Online testen! (Verwendet
-Q
Flag zur einfacheren Visualisierung)Erläuterung
Eine interessante Sache zu beachten ist , dass
v
ist nicht ein „durch 2 teilbar“ eingebaut. Stattdessen ist es ein "durch X teilbares" eingebaut. Im Gegensatz zu den meisten Golfsprachen haben die Funktionen von Japt jedoch keine feste Arität (sie können eine beliebige Anzahl von richtigen Argumenten akzeptieren). Wenn 0 richtige Argumente angegeben werden, wirdv
davon ausgegangen, dass Sie es wollten2
, und verhält sich genau so, als ob es2
anstelle von nichts angegeben wurde.quelle
V ,
16, 15 BytesProbieren Sie es online!
Hexdump:
quelle
Haskell ,
50413938 BytesVielen Dank an nimi und xnor für die Unterstützung beim Rasieren von insgesamt
9 bis10 BytesAlternativ für ein Byte mehr:
oder:
Wahrscheinlich suboptimal, aber ein sauberer, unkomplizierter Ansatz.
quelle
concat.repeat
istcycle
:n!l=take n$cycle l
. Wenn Sie gehen pointfree es spart ein weiteres Byte:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
oder ähnlich. aber Haskell scheint auf den falschen Typ zu schließenr
? Es funktioniert mit expliziter Eingabef n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
hat nicht geholfen. Auch nichtRank2Types
oderRankNTypes
. Wissen Sie, was dort los ist?APL (Dyalog) , 8 Bytes
Probieren Sie es online!
Erläuterung
Nennen wir das Argument
n
.Dies erzeugt eine Matrix
2|
Nimmt dann Modulo 2 der Matrix (es vektorisiert), wonach das~
NOT des Ergebnisses genommen wird.quelle
Mathematica, 25 Bytes
quelle
JavaScript ES6,
55545146 Bytes1 Byte dank @Neil gespeichert
2 Bytes dank @Arnauld eingespart
Probieren Sie es online!
Dies wird als Array von Arrays ausgegeben. JavaScript-Bereiche sind ziemlich unübersichtlich, aber ich verwende
[...Array(n)]
, die ein Array von Größe generiertn
quelle
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Retina ,
33-30BytesProbieren Sie es online! Erläuterung: Die erste Stufe wandelt die Eingabe mit
1
s (bequemerweise!) In unär um, während die zweite Stufe den Wert in ein Quadrat umwandelt . Die dritte Stufe invertiert abwechselnde Bits in jeder Zeile, während die letzte Stufe Bits in abwechselnden Zeilen invertiert. Bearbeiten: 3 Bytes dank @MartinEnder gespeichert.quelle
$`1$'
ist einfach$_
.$_
, danke!MATL , 7 Bytes
Probieren Sie es online!
Erläuterung:
Hinweis: Ich habe mit der Lösung dieses Problems in MATL begonnen, nachdem ich die Herausforderung veröffentlicht habe.
quelle
:&+o~
Y
Anweisungen, die @LuisMendo verwendet.Brachylog , 15 Bytes
Probieren Sie es online!
Erläuterung
quelle
Clojure, 36 Bytes
Ja, das richtige Werkzeug für den Job.
quelle
05AB1E ,
97 Bytes-2 Bytes dank Emigna
Probieren Sie es online!
Erläuterung
quelle
»
Ausgabe als Liste von Listen in Ordnung schneiden und Sie können auch entfernens
.Java (OpenJDK 8) ,
80 bis77 Byte-3 Bytes dank Kevin Cruijssen
Probieren Sie es online!
Oh, sieh mal, eine Java-Antwort von halbwegs vernünftiger Länge mit vielen lustigen Operatoren.
Lambda, das ein int nimmt und einen String zurückgibt. Verwendet die Zeilennummer und die Spaltennummer mit / und%, um zu bestimmen, welcher Wert es sein soll, Mod 2;
Ungolfed:
quelle
(i++/j+i%j)%2
,i++/j+i%j&1
sodass Sie diese Klammern nicht benötigen. Womit die Summe 1 Byte kürzer ist als meine verschachtelte for-loop-Lösung (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), also +1 von mir. :)Kohle, 8 Bytes
Probieren Sie es online! Erläuterung: Dies übersetzt ungefähr in den folgenden ausführlichen Code (leider hängt der Deverbosifier derzeit ein unnötiges Trennzeichen an):
quelle
Pyth , 9 Bytes
Versuche dies!
Eine weitere 9-Byte-Lösung:
Versuch es!
quelle
J 9 Bytes
Probieren Sie es online!
quelle
Mathematica, 23 Bytes
quelle
Oktave , 24 Bytes
Probieren Sie es online!
Oder gleich lang:
Probieren Sie es online!
quelle
R ,
3837 BytesProbieren Sie es online!
-1 Byte danke an Giuseppe
Nutzt die Recyclingregeln von R, zum einen beim Erstellen der Matrix und zum anderen beim Hinzufügen von 0: (n-1) zu dieser Matrix.
quelle
t
und stattdessen den Aufbau der Matrix mitbyrow=T
, das heißt(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
ist einige Bytes kürzer :)Swi-Prolog, 142 Bytes.
Versuchen Sie es online unter http://swish.swi-prolog.org/p/BuabBPrw.pl
Es wird eine verschachtelte Liste ausgegeben, daher lauten die Regeln:
t()
ist ein Toggle, es macht die 0 -> 1 und 1 -> 0.r()
Erfolgreich für eine einzelne Zeile. Dies ist eine rekursive Überprüfung einer Zeile, bei der es sich nur um abwechselnde Einsen und Nullen handelt.f()
prüft rekursiv alle Zeilen, ob sie die richtige Länge haben, ob sie gültige Zeilen sindr()
und ob jede Zeile mit einem abweichenden 0/1 beginnt.c(N,C)
sagt, dass C ein gültiges Schachbrett der Größe N ist, wenn die Anzahl der Zeilen (verschachtelte Listen) N ist und der Helfer f erfolgreich ist.Testfälle:
quelle
C
696763 BytesVielen Dank an @Kevin Cruijssen für das Speichern von zwei Bytes und @ceilingcat für das Speichern von vier Bytes!
Probieren Sie es online!
quelle
printf("%d "
, da dies eine andere gültige Ausgabemethode ist.(j+++i)%2
umj+++i&1
jene Klammer zu entfernen.QBIC , 19 Bytes
Erläuterung
quelle
Brachylog , 19 Bytes
Probieren Sie es online!
quelle
PHP , 56 Bytes
Ausgabe als String
Probieren Sie es online!
PHP , 66 Bytes
Ausgabe als 2D-Array
Probieren Sie es online!
quelle
CJam , 17 Bytes
Probieren Sie es online!
Gibt eine Liste zurück (TIO-Link hat Ausgabe formatiert).
quelle
Bash + rs, 42
Probieren Sie es online aus .
quelle
Cheddar , 38 Bytes
Probieren Sie es online!
quelle
/// , 87 Bytes + Eingabe
Probieren Sie es online! (Eingabe für 4)
Unäre Eingabe in
1
s, 95 Bytes + EingabeProbieren Sie es online! (Eingabe für 8)
Wie funktioniert das?
V
undD
sind zum Golf\/
und//
jeweils./*/k#/
und/&1/k#&//&|//
trennen Sie die Eingabe in das Äquivalent von'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
Verschiebe allek
s in den/r/S/
BlockS
s werden nur verwendet, um Instanzen aufzufüllen, bei denenk
s hinter/
s steht, damit sie nicht an eine andere Stelle verschoben werden, und dieS
s werden dann entfernt#
Aus s wird dannr\n
sDie Zeichenfolge von
k
s wird in eine alternierende1010...
Zeichenfolge umgewandeltDas
r\n
s wird zu1010...\n
sAus jedem Paar
1010...\n1010\n
wird1010...\01010...;\n
Entweder
0;
oder1;
abgeschnitten (weil die01010...
Zeichenfolge um 1 zu lang ist)quelle
Mathematica, 28 Bytes
Reine Funktion, die eine positive Ganzzahl als Eingabe verwendet und ein 2D-Array zurückgibt. Verwendet die periodische Funktion cos² (πx / 2), um die Einsen und Nullen zu erzeugen.
Für ein bisschen mehr Spaß, wie wäre es mit der 32-Byte-Lösung
Dabei werden die Positionen der trivialen Nullen der Riemannschen Zeta-Funktion verwendet.
quelle