Tome un entero positivo n como entrada y genere una matriz de tablero de ajedrez n por n que consta de 1 y 0 .
El dígito superior izquierdo siempre debe ser 1 .
Casos de prueba:
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
Los formatos de entrada y salida son opcionales. Se acepta la salida de la matriz como una lista de listas.
Respuestas:
Jalea , 4 bytes
52 segundos!
Pruébalo en línea!
fuente
MATL , 5 bytes
¡Pruébelo en MATL en línea!
Explicación
Considere la entrada
4
como un ejemplo.fuente
Japt , 6 bytes
¡Pruébalo en línea! (Utiliza la
-Q
bandera para una visualización más fácil)Explicación
Una cosa interesante a tener en cuenta es que no
v
es un "divisible por 2" incorporado. En cambio, es un "divisible por X" incorporado. Sin embargo, a diferencia de la mayoría de los lenguajes de golf, las funciones de Japt no tienen aridad fija (pueden aceptar cualquier número de argumentos correctos). Cuando se le dan 0 argumentos correctos, se supone que desea , y por lo tanto actúa exactamente como se dio en lugar de nada.v
2
2
fuente
V ,
16, 15 bytesPruébalo en línea!
Hexdump:
fuente
Haskell ,
50413938 bytesGracias a nimi y xnor por ayudarnos a recortar un total de
910 bytesAlternativamente, para un byte más:
o:
Probablemente subóptimo, pero un enfoque limpio y directo.
fuente
concat.repeat
escycle
:n!l=take n$cycle l
. Si vas pointfree se ahorra una más bytes:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
o similar. pero Haskell parece inferir el tipo incorrecto parar
? Funciona con tipeo explícitof n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
no ayudó. TampocoRank2Types
oRankNTypes
. ¿Sabes lo que está pasando allí?APL (Dyalog) , 8 bytes
Pruébalo en línea!
Explicación
Llamemos al argumento
n
.Esto crea una matriz
Luego
2|
toma el módulo 2 de la matriz (se vectoriza) después de lo cual~
toma el NOT del resultado.fuente
Mathematica, 25 bytes
fuente
JavaScript ES6,
55545146 bytesGuardado 1 byte gracias a @Neil
Guardado 2 bytes gracias a @Arnauld
Pruébalo en línea!
Esto se genera como una matriz de matrices. Los rangos de JavaScript son bastante extraños, pero yo uso los
[...Array(n)]
que generan una variedad de tamañosn
fuente
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Retina ,
3330 bytesPruébalo en línea! Explicación: La primera etapa convierte la entrada a unaria usando
1
s (¡convenientemente!) Mientras que la segunda etapa convierte el valor en un cuadrado. La tercera etapa invierte bits alternativos en cada fila, mientras que la última etapa invierte bits en filas alternativas. Editar: Guardado 3 bytes gracias a @MartinEnder.fuente
$`1$'
es justo$_
.$_
, ¡gracias!MATL , 7 bytes
Pruébalo en línea!
Explicación:
Nota: Comencé a resolver esto en MATL después de publicar el desafío.
fuente
:&+o~
Y
instrucciones modificadas que usa @LuisMendo.Brachylog , 15 bytes
Pruébalo en línea!
Explicación
fuente
Clojure, 36 bytes
Yay, la herramienta adecuada para el trabajo.
fuente
05AB1E ,
97 bytes-2 bytes gracias a Emigna
Pruébalo en línea!
Explicación
fuente
»
como la salida de la lista de listas está bien y también puede eliminarlas
.Java (OpenJDK 8) ,
8077 bytes-3 bytes gracias a Kevin Cruijssen
Pruébalo en línea!
Oh, mira, una respuesta Java de longitud semi razonable, con muchos operadores divertidos.
lambda que toma un int y devuelve una cadena. Funciona usando el número de fila y el número de columna usando / y% para determinar qué valor debería ser, mod 2;
Sin golf:
fuente
(i++/j+i%j)%2
ai++/j+i%j&1
para que no necesite esos paréntesis. Lo que hace que el total de 1 byte sea más corto que mi solución for-loop anidada (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), por lo que +1 de mí. :)Carbón de leña, 8 bytes
Pruébalo en línea! Explicación: Esto se traduce aproximadamente al siguiente código detallado (desafortunadamente, el desverbosificador está agregando un separador innecesario):
fuente
Pyth , 9 bytes
¡Prueba esto!
otra solución de 9 bytes:
¡Intentalo!
fuente
J , 9 bytes
Pruébalo en línea!
fuente
Mathematica, 23 bytes
fuente
Octava , 24 bytes
Pruébalo en línea!
O la misma longitud:
Pruébalo en línea!
fuente
R ,
3837 bytesPruébalo en línea!
-1 byte gracias a Giuseppe
Aprovecha las reglas de reciclaje de R, en primer lugar al crear la matriz, y en segundo lugar al agregar 0: (n-1) a esa matriz.
fuente
t
y, en su lugar, construir la matriz conbyrow=T
, por ejemplo,(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
es un buen número de bytes más corto :)Swi-Prolog, 142 bytes.
Pruebe en línea: http://swish.swi-prolog.org/p/BuabBPrw.pl
Produce una lista anidada, por lo que las reglas dicen:
t()
es una palanca, hace que el 0 -> 1 y 1 -> 0.r()
tiene éxito para una fila individual, que es un chequeo recursivo en una fila de que solo son alternativas y ceros.f()
verifica recursivamente todas las filas, que tienen la longitud correcta, que son filas válidasr()
y que cada fila comienza con un 0/1 diferente.c(N,C)
dice que C es un tablero de damas válido de tamaño N si el número de filas (listas anidadas) es N, y el ayudante f tiene éxito.Casos de prueba:
fuente
C,
696763 bytes¡Gracias a @Kevin Cruijssen por guardar dos bytes y @ceilingcat por guardar cuatro bytes!
Pruébalo en línea!
fuente
printf("%d "
, ya que ese es otro método válido de salida.(j+++i)%2
aj+++i&1
para eliminar esos paréntesis.QBIC , 19 bytes
Explicación
fuente
Brachylog , 19 bytes
Pruébalo en línea!
fuente
PHP , 56 bytes
Salida como cadena
Pruébalo en línea!
PHP , 66 bytes
Salida como matriz 2 D
Pruébalo en línea!
fuente
CJam , 17 bytes
Pruébalo en línea!
Devuelve una lista (el enlace TIO tiene formato de salida).
fuente
Bash + rs, 42
Pruébalo en línea .
fuente
Cheddar , 38 bytes
Pruébalo en línea!
fuente
/// , 87 bytes + entrada
Pruébalo en línea! (entrada para 4)
Entrada unaria en
1
s, 95 bytes + entradaPruébalo en línea! (entrada para 8)
¿Como funciona esto?
V
yD
son para golf\/
y//
respectivamente./*/k#/
y/&1/k#&//&|//
separe la entrada en el equivalente de'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
mover todos losk
s al/r/S/
bloqueS
s solo se utilizan para rellenar instancias dondek
s vienen después de/
s para que no se muevan a otro lugar, yS
luego se eliminan#
s luego se convierten enr\n
sLa cadena de
k
s se convierte en una1010...
cadena alternaLos
r\n
s se convierten en1010...\n
sCada par de
1010...\n1010\n
se convierte en1010...\01010...;\n
Ya sea
0;
o1;
están recortados (porque la01010...
cadena es demasiado larga en 1)fuente
Mathematica, 28 bytes
Función pura que toma un entero positivo como entrada y devuelve una matriz 2D. Utiliza la función periódica cos² (πx / 2) para generar los 1s y 0s.
Para un poco más de diversión, ¿qué tal la solución de 32 bytes?
que utiliza las ubicaciones de los ceros triviales de la función zeta de Riemann.
fuente