Es un problema común navegar en una matriz 2D. Lo hemos visto muchas veces y lo veremos nuevamente. Entonces, ayúdenos a desarrollarnos en el futuro y desarrollemos las soluciones más cortas para generar los ocho pasos posibles en una matriz 2D.
Reto
Su código debe generar los siguientes 8 pares de -1,0,1 en cualquier orden:
(0,1)
(0,-1)
(1,0)
(-1,0)
(1,1)
(1,-1)
(-1,1)
(-1,-1)
Reglas
- No hay entrada
- El orden de salida no es relevante
- La salida es flexible. Los pares de números solo necesitan ser distinguibles
- Este es el código de golf , por lo que la respuesta más corta en bytes gana
code-golf
kolmogorov-complexity
matrix
Zarigüeya muerta
fuente
fuente
(1 + 0i)
?Respuestas:
Octava , 24 bytes
Pruébalo en línea!
Todavía no he visto este enfoque.
Crea una lista de enteros
[0, 1, 2, 3, 5, 6, 7, 8]
y la convierte en ternario, devolviendo una matriz de caracteres:Restar
49
(valor ASCII para1
) de todos los caracteres da una matriz numérica:fuente
T-SQL,
8078 bytesCrea una tabla t (permanente) que contiene
(-1,0,1)
y realiza una autounión con unaWHERE
cláusula que excluye la0,0
fila. Mi tabla no ha limpiado la tabla t , debe dejarla usted mismoLamentablemente, casi el doble de tiempo que la solución aburrida ( 44 bytes ), ya que SQL permite retornos en cadenas:
fuente
WHERE t.n OR z.n
? (Usted puede, en algunos pero no todos los dialectos SQL.)An expression of non-boolean type specified in a context where a condition is expected
Pure Bash (sin utilidades externas), 36
Pruébalo en línea!
Bash con Sed, 35
Pruébalo en línea!
fuente
cut
por 36 bytes también.echo {-1..1},{-1..1}|sed s/0,0.//
printf %s\\n {-1..1},{-1..1}|grep 1
también es 35.Python 2 , 33 bytes
Pruébalo en línea!
Dennis ahorró
35 bytes, wow. ¡Gracias!fuente
Jalea ,
876 bytesPruébalo en línea!
¡Mi primera respuesta de Jelly! Muchas gracias a Dennis por la pieza final del rompecabezas.
Ahora, veamos si puedo explicarlo ... jajaja.
-1 byte gracias a Erik; -1 byte gracias a Mr Xcoder y Dennis
fuente
3p3_2ẸƇ
3
.R ,
2624 bytesCréditos a @JDoe por guardar dos bytes más con un enfoque directo:
Pruébalo en línea!
La respuesta original:
Pruébalo en línea!
O para 27 bytes
Pruébalo en línea!
O para 34 bytes con factores:
Pruébalo en línea!
Esta última solución podría ser la mejor si la salida puede ser de 1 a 3 en lugar de -1 a 1.
Vea la otra respuesta R para soluciones alternativas con
expand.grid
o concbind
.fuente
c
que no tenía sentido dentro de una matriz, así quepaste
paste
Japt ,
131211 bytesGuardado un byte gracias a @Shaggy
Pruébalo en línea! Utiliza la
-R
bandera para poner cada elemento en su propia línea.Explicación
fuente
Japt
-Q
,1513 bytesEstoy seguro de que hay un camino más corto, pero me gustó este enfoque.
Afeitado dos bytes gracias a Shaggy .
Pruébalo en línea!
fuente
Haskell , 22 bytes
Pruébalo en línea!
Laikoni guardó 1 byte.
fuente
_:l=mapM(:[1,-1])[0,0]
Guarda un byte. (Tomado de la respuesta de Isaac al desafío anterior).Perl 6 , 23 bytes
Pruébalo en línea!
fuente
05AB1E ,
87 bytesPruébalo en línea!
Explicación
-1 byte gracias a Emigna!
fuente
2Ý<ã
), pero estaba descubriendo cómo eliminar el elemento central de la lista de pares ... No había pensado en ordenar por valor absoluto y eliminar el primero ... +1 de mí.ʒĀZ
para guardar 1MATL , 12 bytes
Pruébalo en línea!
Debido a que es el mes MATL, aquí hay un puerto MATL de la respuesta Octave de @ Stewie. La secuencia [0 1 2 3 5 6 7 8] se genera como la diferencia establecida entre [0 ... 8] y 4.
fuente
Java 8,
8342 bytes-41 bytes gracias a @AdmBorkBork mediante codificación rígida.
Pruébalo en línea.
Versión no codificada como referencia (
83727068 bytes ):-11 bytes gracias a @ OlivierGrégoire .
-2 bytes creando un puerto de respuesta JavaScript de @ETHproductions (ES6) .
Pruébalo en línea.
fuente
v->{for(int i=9;i-->0;)if(i!=4)System.out.println((i/3-1)+","+(i%3-1));}
.R , 27 bytes
Pruébalo en línea!
30 y 35 bytes:
fuente
expand.grid(-1:1,-1:1)[-5,]
es de 27 bytes.JavaScript (ES6)
Dos métodos alternativos, ambos más largos que el hardcoding.
49 bytes
Pruébalo en línea!
51 bytes
Pruébalo en línea!
fuente
Haskell , 27 bytes
Pruébalo en línea!
La salida es
[(0,1),(0,-1),(1,0),(1,1),(1,-1),(-1,0),(-1,1),(-1,-1)]
.fuente
Haskell ,
2827 bytesPruébalo en línea!
fuente
Casco ,
76 bytesHay muchas maneras diferentes (la parte difícil / costosa se está eliminando
[0,0]
),7 bytes es lo más corto que pude encontrargracias a Leo por señalar que usa la conversión decimal (d
) como filtro:Pruébalo en línea!
Explicación
Alternativa, 7 bytes
Pruébalo en línea!
Explicación
fuente
tπ2↑3İZ
.PowerShell , 41 bytes
Pruébalo en línea!
Doble bucle for en el rango
1..-1
, con un-n
ote
al final para extraer la0,0
entrada extraña . Cada uno se deja individualmente en la tubería e implícitoWrite-output
en la finalización del programa nos da nuevas líneas de forma gratuita.Lamentablemente, solo la salida de cadena básica es dos bytes más corta:
Pero eso es aburrido.
fuente
Python 2 , 39 bytes
Pruébalo en línea!
fuente
J ,
1816 bytesPruébalo en línea!
fuente
echo }.>,{;~0 1 _1
TIOecho}.>,{;~0 1 _1
echo
necesario?CJam , 13 bytes
Pruébalo en línea!
Explicación
fuente
Befunge-93 , 24 bytes
Pruébalo en línea!
Siento que a este desafío le faltan respuestas de los lenguajes 2D, incluso si la mayoría no se mueve en diagonal. Esto genera números separados por espacios, cada par separado por pestañas.
fuente
F # (Mono) , 54 bytes
Pruébalo en línea!
44 bytes - gracias a Laikoni:
fuente
(0,0)
ser el primer elemento y llamarSeq.tail
: ¡ Pruébelo en línea!Brachylog , 8 bytes
Pruébalo en línea!
Explicación
fuente
MATL , 12 bytes
¡Pruébalo en MATL Online!
¡Mi primera respuesta MATL seria! Muchas gracias a Luis Mendo , Sanchises y DJMcMayhem por la ayuda.
Cómo funciona
fuente
Perl 5 , 31 bytes
Pruébalo en línea!
fuente
-1..1
Funcionaría en el glob?bash
, pero no en Perl :(Bash , 30 bytes
Pruébalo en línea!
Imprime un espacio final en cada línea pero en la última. (Gracias a @Neil : originalmente imprimió un espacio inicial, pero un espacio final es mejor según su comentario)
fuente
Lote, 77 bytes
63 bytes si se permite un separador no estándar:
fuente
Pyth,
119 bytesPruébalo aquí
Explicación
De manera equivalente, podríamos usar
t*J+U2_1J
, pero eso no es más corto.fuente