Pegue um número inteiro positivo n como entrada e produza uma matriz quadriculado n por n que consiste em 1 e 0 .
O dígito superior esquerdo deve sempre ser 1 .
Casos de teste:
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
Os formatos de entrada e saída são opcionais. A saída da matriz como uma lista de listas é aceita.
Respostas:
Gelatina , 4 bytes
52 segundos!
Experimente online!
fonte
MATL , 5 bytes
Experimente no MATL online!
Explicação
Considere a entrada
4
como um exemplo.fonte
Japonês , 6 bytes
Teste online! (Usa
-Q
sinalizador para facilitar a visualização)Explicação
Uma coisa interessante a notar é que não
v
é um "divisível por 2" embutido. Em vez disso, é um "divisível por X" embutido. No entanto, diferentemente da maioria dos idiomas do golfe, as funções de Japt não têm aridade fixa (elas podem aceitar qualquer número de argumentos corretos). Quando recebe 0 argumentos corretos, assume que você deseja e age exatamente como foi dado em vez de nada.v
2
2
fonte
V ,
16, 15 bytesExperimente online!
Hexdump:
fonte
Haskell ,
50413938 bytesAgradecimentos a nimi e xnor por ajudar a remover um total de
910 bytesComo alternativa, por mais um byte:
ou:
Provavelmente abaixo do ideal, mas uma abordagem limpa e direta.
fonte
concat.repeat
écycle
:n!l=take n$cycle l
. Se você vai pointfree ele economiza mais um byte:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
ou algo parecido. mas Haskell parece inferir o tipo errado parar
? Funciona com digitação explícitaf n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
não ajudou. Nem fezRank2Types
ouRankNTypes
. Você sabe o que está acontecendo lá?APL (Dyalog) , 8 bytes
Experimente online!
Explicação
Vamos chamar o argumento
n
.Isso cria uma matriz
Então
2|
pega o módulo 2 da matriz (vetoriza) e depois~
pega o NOT do resultado.fonte
Mathematica, 25 bytes
fonte
JavaScript ES6,
55545146 bytesGuardado 1 byte graças a @Neil
Guardado 2 bytes graças a @Arnauld
Experimente online!
Isso gera como uma matriz de matrizes. Os intervalos de JavaScript são bastante indecisos, mas eu uso o
[...Array(n)]
que gera uma matriz de tamanhon
fonte
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Retina ,
3330 bytesExperimente online! Explicação: O primeiro estágio converte a entrada em unário usando
1
s (convenientemente!) Enquanto o segundo estágio transforma o valor em um quadrado. O terceiro estágio inverte bits alternativos em cada linha, enquanto o último estágio inverte bits em linhas alternativas. Editar: salvou 3 bytes graças a @MartinEnder.fonte
$`1$'
é justo$_
.$_
, obrigado!MATL , 7 bytes
Experimente online!
Explicação:
Nota: comecei a resolver isso no MATL depois de postar o desafio.
fonte
:&+o~
Y
instruções modestas e modestas que o @LuisMendo usa.Braquilog , 15 bytes
Experimente online!
Explicação
fonte
Clojure, 36 bytes
Sim, ferramenta certa para o trabalho.
fonte
05AB1E ,
97 bytes-2 bytes graças a Emigna
Experimente online!
Explicação
fonte
»
saída conforme a lista de listas estiver correta e também pode removers
.Java (OpenJDK 8) ,
8077 bytes-3 bytes graças a Kevin Cruijssen
Experimente online!
Oh, olha, uma resposta java de comprimento semi-razoável, com muitos operadores divertidos.
lambda que recebe um int e retorna uma String. Funciona usando o número da linha e o número da coluna usando / e% para determinar qual valor deve ser, mod 2;
Ungolfed:
fonte
(i++/j+i%j)%2
para,i++/j+i%j&1
para não precisar desses parênteses. O que torna o total de 1 byte menor que minha solução aninhada para loop (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), ficando com +1 de mim. :)Carvão, 8 bytes
Experimente online! Explicação: Isso se traduz aproximadamente no código detalhado a seguir (infelizmente, atualmente o deverbosifier está anexando um separador desnecessário):
fonte
Pitão , 9 bytes
Tente isso!
outra solução de 9 bytes:
Tente!
fonte
J , 9 bytes
Experimente online!
fonte
Mathematica, 23 bytes
fonte
Oitava , 24 bytes
Experimente online!
Ou o mesmo comprimento:
Experimente online!
fonte
R ,
38bytes 37Experimente online!
-1 byte graças a Giuseppe
Aproveita as regras de reciclagem de R, primeiro ao criar a matriz e depois ao adicionar 0: (n-1) a essa matriz.
fonte
t
e construindo a matriz combyrow=T
, ou seja,(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
é bastante alguns bytes mais curto :)Swi-Prolog, 142 bytes.
Experimente online - http://swish.swi-prolog.org/p/BuabBPrw.pl
Como gera uma lista aninhada, as regras dizem:
t()
é uma alternância, cria 0 -> 1 e 1 -> 0.r()
obtém êxito em uma linha individual, que é uma verificação recursiva em uma linha, indicando que são apenas zeros e uns alternativos.f()
verifica recursivamente todas as linhas, se têm o comprimento certo, se são linhas válidasr()
e se cada linha começa com um 0/1 diferente.c(N,C)
diz que C é um tabuleiro de damas válido do tamanho N se o número de linhas (listas aninhadas) for N e o ajudante f tiver êxito.Casos de teste:
fonte
C,
696763 bytesAgradecemos a @Kevin Cruijssen por salvar dois bytes e @ceilingcat por salvar quatro bytes!
Experimente online!
fonte
printf("%d "
, pois esse é outro método válido de saída.(j+++i)%2
paraj+++i&1
para remover esses parênteses.QBIC , 19 bytes
Explicação
fonte
Braquilog , 19 bytes
Experimente online!
fonte
PHP , 56 bytes
Saída como sequência
Experimente online!
PHP , 66 bytes
Saída como matriz 2 D
Experimente online!
fonte
CJam , 17 bytes
Experimente online!
Retorna uma lista (o link TIO formatou a saída).
fonte
Bash + rs, 42
Experimente online .
fonte
Queijo Cheddar , 38 bytes
Experimente online!
fonte
/// , 87 bytes + entrada
Experimente online! (entrada para 4)
Entrada unária em
1
s, 95 bytes + entradaExperimente online! (entrada para 8)
Como é que isso funciona?
V
eD
são para o golfe\/
e,//
respectivamente./*/k#/
e/&1/k#&//&|//
separar a entrada no equivalente a'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
mover todos osk
s para o/r/S/
blocoS
s são usados apenas para proteger instâncias em quek
s vêm depois de/
s para que não sejam movidos para outro lugar e osS
s são removidos#
s são então transformados emr\n
sA sequência de
k
s é transformada em uma1010...
sequência alternadaOs
r\n
s são transformados em1010...\n
sCada par de
1010...\n1010\n
é transformado em1010...\01010...;\n
Quer
0;
ou1;
são cortados fora (porque a01010...
cadeia é muito longa por 1)fonte
Mathematica, 28 bytes
Função pura, recebendo um número inteiro positivo como entrada e retornando uma matriz 2D. Usa a função periódica cos² (πx / 2) para gerar os 1s e 0s.
Para um pouco mais de diversão, que tal a solução de 32 bytes
que usa os locais dos zeros triviais da função Riemann zeta.
fonte