É um problema comum navegar em uma matriz 2D. Já vimos isso muitas vezes e veremos novamente. Então, vamos nos ajudar no futuro e desenvolver as soluções mais curtas para gerar todas as oito etapas possíveis em uma matriz 2D.
Desafio
Seu código deve gerar os seguintes 8 pares de -1,0,1 em qualquer ordem:
(0,1)
(0,-1)
(1,0)
(-1,0)
(1,1)
(1,-1)
(-1,1)
(-1,-1)
Regras
- Não há entrada.
- A ordem de saída não é relevante
- A saída é flexível. Pares de números só precisam ser distinguíveis
- Isso é código-golfe , então a resposta mais curta em bytes ganha
code-golf
kolmogorov-complexity
matrix
Gambá morto
fonte
fonte
(1 + 0i)
?Respostas:
Oitava , 24 bytes
Experimente online!
Ainda não vi essa abordagem.
Cria uma lista de números inteiros
[0, 1, 2, 3, 5, 6, 7, 8]
e a converte em ternário, retornando uma matriz de caracteres:Subtrair
49
(valor ASCII para1
) de todos os caracteres fornece uma matriz numérica:fonte
T-SQL,
8078 bytesCria uma tabela (permanente) t contendo
(-1,0,1)
e executa uma auto-junção com umaWHERE
cláusula que exclui a0,0
linha. A tabela t não é limpa pelo meu código, você deve descartá-la.Infelizmente, quase o dobro da solução chata ( 44 bytes ), pois o SQL permite retornos em strings:
fonte
WHERE t.n OR z.n
? (Você pode, em alguns, mas não todos os dialetos SQL.)An expression of non-boolean type specified in a context where a condition is expected
Pure Bash (sem utilitários externos), 36
Experimente online!
Festança com Sed, 35
Experimente online!
fonte
cut
para 36 bytes.echo {-1..1},{-1..1}|sed s/0,0.//
printf %s\\n {-1..1},{-1..1}|grep 1
também tem 35 anos.Python 2 , 33 bytes
Experimente online!
Dennis salvou
35 bytes, uau. Obrigado!fonte
Gelatina ,
876 bytesExperimente online!
Minha primeira resposta Jelly! Muito obrigado a Dennis pela peça final do quebra-cabeça.
Agora, vamos ver se consigo explicar ... rs.
-1 byte graças a Erik; -1 byte graças ao Sr. Xcoder e Dennis
fonte
3p3_2ẸƇ
3
.R ,
26bytes 24Créditos ao @JDoe por salvar mais dois bytes com uma abordagem direta:
Experimente online!
O asnwer original:
Experimente online!
Ou por 27 bytes
Experimente online!
Ou para 34 bytes com fatores:
Experimente online!
Essa última solução pode ser a mais golfista se a saída puder ser de 1 a 3 em vez de -1 a 1.
Veja a outra resposta R para soluções alternativas com
expand.grid
ou comcbind
.fonte
c
que não fazem sentido dentro de uma matriz para transferido parapaste
e o formato de saída originais ...paste
Japonês ,
131211 bytesGuardou um byte graças a @Shaggy
Experimente online! Usa
-R
sinalizador para colocar cada item em sua própria linha.Explicação
fonte
Japonês
-Q
,1513 bytesTenho certeza de que há uma maneira mais curta, mas gostei dessa abordagem.
Raspou dois bytes graças a Shaggy .
Experimente online!
fonte
Haskell , 22 bytes
Experimente online!
Laikoni salvou 1 byte.
fonte
_:l=mapM(:[1,-1])[0,0]
salva um byte. (Retirado da resposta de isaacg ao desafio anterior).Perl 6 , 23 bytes
Experimente online!
fonte
05AB1E ,
87 bytesExperimente online!
Explicação
-1 byte graças a Emigna!
fonte
2Ý<ã
), mas estava tentando descobrir como remover o elemento do meio da lista de pares. Não tinha pensado em classificar por valor absoluto e remover o primeiro .. +1 de mim.ʒĀZ
para salvar 1MATL , 12 bytes
Experimente online!
Como é o mês do MATL, aqui está uma porta MATL da resposta de @ Stewie Octave. A sequência [0 1 2 3 5 6 7 8] é gerada como a diferença definida entre [0 ... 8] e 4.
fonte
Java 8,
8342 bytes-41 bytes graças a @AdmBorkBork por codificação ..
Experimente online.
Versão não codificada como referência (
83727068 bytes ):-11 bytes graças a @ OlivierGrégoire .
-2 bytes criando uma porta da resposta JavaScript (ES6) do @ETHproductions .
Experimente online.
fonte
v->{for(int i=9;i-->0;)if(i!=4)System.out.println((i/3-1)+","+(i%3-1));}
.R , 27 bytes
Experimente online!
30 e 35 bytes:
fonte
expand.grid(-1:1,-1:1)[-5,]
tem 27 bytes.JavaScript (ES6)
Dois métodos alternativos, ambos mais longos que codificados.
49 bytes
Experimente online!
51 bytes
Experimente online!
fonte
Haskell , 27 bytes
Experimente online!
A saída é
[(0,1),(0,-1),(1,0),(1,1),(1,-1),(-1,0),(-1,1),(-1,-1)]
.fonte
Haskell ,
2827 bytesExperimente online!
fonte
Casca ,
76 bytesExistem várias maneiras diferentes (a parte complicada / cara está se livrando
[0,0]
),7 bytes é o mais curto que consegui encontrar,graças ao Leo por apontar para usar a conversão decimal (d
) como um filtro:Experimente online!
Explicação
Alternativa, 7 bytes
Experimente online!
Explicação
fonte
tπ2↑3İZ
.PowerShell , 41 bytes
Experimente online!
Laço duplo para o intervalo
1..-1
, com um-n
ote
quals no final para retirar a0,0
entrada estranha . Cada um deles é deixado individualmente no pipeline e, implícitoWrite-output
na conclusão do programa, oferece novas linhas gratuitamente.Infelizmente, apenas a saída da string de barebones é dois bytes mais curta:
Mas isso é chato.
fonte
Python 2 , 39 bytes
Experimente online!
fonte
J ,
1816 bytesExperimente online!
fonte
echo }.>,{;~0 1 _1
TIOecho}.>,{;~0 1 _1
echo
necessário?CJam , 13 bytes
Experimente online!
Explicação
fonte
Befunge-93 , 24 bytes
Experimente online!
Sinto que esse desafio está faltando respostas das linguagens 2D, mesmo que a maioria não se mova na diagonal. Isso gera números separados por espaço, cada par separado por tabulações.
fonte
F # (Mono) , 54 bytes
Experimente online!
44 bytes - graças a Laikoni:
fonte
(0,0)
sendo o primeiro elemento e chamandoSeq.tail
: Experimente online!Braquilog , 8 bytes
Experimente online!
Explicação
fonte
MATL , 12 bytes
Experimente no MATL Online!
Minha primeira resposta séria ao MATL! Muito obrigado a Luis Mendo , Sanchises e DJMcMayhem pela ajuda.
Como funciona
fonte
Perl 5 , 31 bytes
Experimente online!
fonte
-1..1
trabalhar no glob?bash
, mas não em Perl :(Bash , 30 bytes
Experimente online!
Imprime um espaço à direita em cada linha, exceto a última. (Graças a @Neil - isso originalmente imprimiu um espaço à esquerda, mas um espaço à direita é melhor conforme o comentário)
fonte
Lote, 77 bytes
63 bytes se um separador fora do padrão for permitido:
fonte
Pitão,
119 bytesExperimente aqui
Explicação
Equivalentemente, poderíamos usar
t*J+U2_1J
, mas isso não é mais curto.fonte