Prenez un entier positif n en entrée et sortez une matrice de damier n par n composée de 1 et 0 .
Le chiffre en haut à gauche doit toujours être 1 .
Cas de test:
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
Les formats d'entrée et de sortie sont facultatifs. La sortie de la matrice sous forme de liste de listes est acceptée.
Réponses:
Gelée , 4 octets
52 secondes!
Essayez-le en ligne!
la source
MATL , 5 octets
Essayez-le sur MATL en ligne!
Explication
Considérez la saisie
4
comme exemple.la source
Japt , 6 octets
Testez-le en ligne! (Utilise le
-Q
drapeau pour une visualisation plus facile)Explication
Une chose intéressante à noter est que ce
v
n'est pas un "divisible par 2" intégré. Au lieu de cela, c'est un "divisible par X" intégré. Cependant, contrairement à la plupart des langages de golf, les fonctions de Japt n'ont pas d'arité fixe (elles peuvent accepter n'importe quel nombre d'arguments de droite). Lorsque 0 argument de droite est donné,v
suppose que vous vouliez2
, et agit donc exactement comme il a été donné2
au lieu de rien.la source
V ,
16, 15 octetsEssayez-le en ligne!
Hexdump:
la source
Haskell ,
50413938 octetsMerci à nimi et xnor d'avoir aidé à raser un total de
910 octetsAlternativement, pour un octet de plus:
ou:
Probablement sous-optimal, mais une approche claire et simple.
la source
concat.repeat
estcycle
:n!l=take n$cycle l
. Si vous allez Pointfree enregistre un octet:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
ou similaire. mais Haskell semble inférer le mauvais type pourr
? Cela fonctionne avec une frappe explicitef n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
n'a pas aidé. Ni faitRank2Types
niRankNTypes
. Savez-vous ce qui se passe là-bas?APL (Dyalog) , 8 octets
Essayez-le en ligne!
Explication
Appelons l'argument
n
.Cela crée une matrice
Prend ensuite le
2|
modulo 2 de la matrice (il vectorise) après quoi~
prend le NON du résultat.la source
Mathematica, 25 octets
la source
JavaScript ES6,
55545146 octets1 octet enregistré grâce à @Neil
Sauvegardé 2 octets grâce à @Arnauld
Essayez-le en ligne!
Cela sort comme un tableau de tableaux. Les plages JavaScript sont assez peu pratiques, mais j'utilise
[...Array(n)]
ce qui génère un tableau de taillen
la source
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Rétine ,
3330 octetsEssayez-le en ligne! Explication: Le premier étage convertit l'entrée en unaire à l'aide de
1
s (commodément!) Tandis que le deuxième étage transforme la valeur en carré. La troisième étape inverse les bits alternés sur chaque ligne tandis que la dernière étape inverse les bits sur les lignes alternatives. Edit: sauvé 3 octets grâce à @MartinEnder.la source
$`1$'
est juste$_
.$_
, merci!MATL , 7 octets
Essayez-le en ligne!
Explication:
Remarque: J'ai commencé à résoudre ce problème dans MATL après avoir posté le défi.
la source
:&+o~
Y
instructions modifiées embêtantes que @LuisMendo utilise.Brachylog , 15 octets
Essayez-le en ligne!
Explication
la source
Clojure, 36 octets
Oui, le bon outil pour le travail.
la source
05AB1E ,
97 octets-2 octets grâce à Emigna
Essayez-le en ligne!
Explication
la source
»
sortie en tant que liste de listes, mais vous pouvez également la supprimers
.Java (OpenJDK 8) ,
8077 octets-3 octets grâce à Kevin Cruijssen
Essayez-le en ligne!
Oh regardez, une réponse java de longueur semi-raisonnable, avec beaucoup d'opérateurs amusants.
lambda qui prend un entier et renvoie une chaîne. Fonctionne en utilisant le numéro de ligne et le numéro de colonne en utilisant / et% pour déterminer quelle valeur il doit être, mod 2;
Non golfé:
la source
(i++/j+i%j)%2
eni++/j+i%j&1
afin que vous n'ayez pas besoin de ces parenthèses. Ce qui rend le total 1 octet plus court que ma solution imbriquée pour boucle (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), donc +1 de ma part. :)Fusain, 8 octets
Essayez-le en ligne! Explication: Cela se traduit approximativement par le code détaillé suivant (malheureusement, le déverbosificateur ajoute actuellement un séparateur inutile):
la source
Pyth , 9 octets
Essaye ça!
une autre solution de 9 octets:
Essayez!
la source
J , 9 octets
Essayez-le en ligne!
la source
Mathematica, 23 octets
la source
Octave , 24 octets
Essayez-le en ligne!
Ou la même longueur:
Essayez-le en ligne!
la source
R ,
3837 octetsEssayez-le en ligne!
-1 octet grâce à Giuseppe
Profite des règles de recyclage de R, d'une part lors de la création de la matrice, et d'autre part lors de l'ajout de 0: (n-1) à cette matrice.
la source
t
et en construisant la matrice avecbyrow=T
, c'est-à-dire(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
est bien plus court de quelques octets :)Swi-Prolog, 142 octets.
Essayez en ligne - http://swish.swi-prolog.org/p/BuabBPrw.pl
Il génère une liste imbriquée, donc les règles disent:
t()
est une bascule, elle fait 0 -> 1 et 1 -> 0.r()
réussit pour une ligne individuelle, qui est une vérification récursive sur une ligne qu'il s'agit uniquement de uns et de zéros alternatifs.f()
vérifie récursivement toutes les lignes, qu'elles sont de la bonne longueur, qu'elles sont des lignes valides avecr()
et que chaque ligne commence par un 0/1 différent.c(N,C)
indique que C est un damier valide de taille N si le nombre de lignes (listes imbriquées) est N, et que l'aide f réussit.Cas de test:
la source
C,
696763 octetsMerci à @Kevin Cruijssen pour avoir sauvé deux octets et @ceilingcat pour avoir sauvé quatre octets!
Essayez-le en ligne!
la source
printf("%d "
, car c'est une autre méthode de sortie valide.(j+++i)%2
dej+++i&1
supprimer ces parenthèses.QBIC , 19 octets
Explication
la source
Brachylog , 19 octets
Essayez-le en ligne!
la source
PHP , 56 octets
Sortie sous forme de chaîne
Essayez-le en ligne!
PHP , 66 octets
Sortie en réseau 2 D
Essayez-le en ligne!
la source
CJam , 17 octets
Essayez-le en ligne!
Renvoie une liste (le lien TIO a une sortie formatée).
la source
Bash + rs, 42
Essayez-le en ligne .
la source
Cheddar , 38 octets
Essayez-le en ligne!
la source
/// , 87 octets + entrée
Essayez-le en ligne!(entrée pour 4)
Entrée unaire en
1
s, 95 octets + entréeEssayez-le en ligne!(entrée pour 8)
Comment cela marche-t-il?
V
etD
sont au golf\/
et//
respectivement./*/k#/
et/&1/k#&//&|//
séparez l'entrée en l'équivalent de'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
déplacer tous lesk
s vers le/r/S/
blocS
les s sont juste utilisés pour remplir les instances oùk
s viennent après/
s afin qu'ils ne soient pas déplacés ailleurs, et lesS
s sont ensuite supprimés#
s sont ensuite transformés enr\n
sLa chaîne de
k
s est transformée en une1010...
chaîne alternéeLes
r\n
s sont transformés en1010...\n
sChaque paire
1010...\n1010\n
est transformée en1010...\01010...;\n
Soit
0;
ou1;
sont coupés (car la01010...
chaîne est trop longue de 1)la source
Mathematica, 28 octets
Fonction pure prenant un entier positif en entrée et renvoyant un tableau 2D. Utilise la fonction périodique cos² (πx / 2) pour générer les 1 et les 0.
Pour un peu plus de plaisir, que diriez-vous de la solution de 32 octets
qui utilise les emplacements des zéros triviaux de la fonction zêta de Riemann.
la source