Muy bien, mi segundo intento en un código de golf, veamos cómo va esto.
Imagina que tienes una matriz de 9 valores. Ahora imagine esa matriz en una cuadrícula de 3x3.
Debe devolver a los vecinos que ese número tiene como índices de la matriz.
0 | 1 | 2
3 | 4 | 5 5
6 | 7 | 8
Reglas:
- Es el código de golf, por lo que gana la respuesta más corta.
- El índice de la matriz de simulación puede comenzar en 0 o 1. (todos los ejemplos usan 0)
- Solo devolver valores valores está mal visto (como
if 3: return 046
) - El envío puede ser solo un procedimiento / función / método, pero un ejemplo sería bueno
- El valor devuelto puede estar en cualquier orden (como si la entrada es 0, podría ser 13 o 31)
- si lo desea, la salida puede ser una lista de números, por ejemplo, en
[0,4,6]
lugar de046
- las diagonales no cuentan, como se ve en los ejemplos.
Ejemplos:
entrada:
0 0
salida:
13
entrada:
3
salida:
046
entrada:
4 4
salida:
1357
[0,4,6]
lugar de046
?Respuestas:
Jalea ,
1613 bytesPruébalo en línea!
Cómo funciona
fuente
MATL ,
1716 bytesLa matriz está basada en 1, es decir, contiene números desde
1
hasta9
.Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere la entrada
2
como un ejemplo.fuente
Mathematica, 32 bytes
Utiliza un gráfico en lugar de una matriz.
GridGraph@{3,3}
construye un gráfico en forma de cuadrícula de 3x3, que se muestra a continuación, que Mathematica etiqueta útilmente con los números 1–9 para los vértices de forma predeterminada. Luego~AdjacencyList~#&
te dice los vecinos de un vértice.fuente
Mathematica, 40 bytes
1 indexado. Solo busca la respuesta. ¿Alguien puede mejorar en Mathematica?
fuente
31[420,51,...,75][[#]]&
.GridGraph@{3,3}~AdjacencyList~#&
para 32 bytes, con 1 indexación.Octava,
424039 bytesÍndice basado en 1.
Verifique todos los casos de prueba.
Explicación:
Ejemplo:
n = 2
(En Octave, los datos se almacenan en columnas).
índice lógico donde la distancia es 1:
fuente
Python 2, 71 bytes
1 indexado ¡
Pruébelo en línea!
Obtener el resultado de una lista predefinida de resultados es más corto (46 bytes):
0 indexado ¡
Pruébelo en línea!
fuente
Haskell ,
74 7168 bytesPruébalo en línea! Utiliza una cuadrícula indexada 1. Ejemplo de uso:
f 3
devoluciones[2,6]
.Editar: ¡Guardado
36 bytes gracias a Ørjan Johansen!Para
7775 bytes, la siguiente función#
funciona para un tamaño de cuadrícula arbitrariom
:Pruébalo en línea! Para cada uno,
n
la lista[n-m,n-1,n+1,n+m]
contiene los cuatro vecinos. Para cada entradax
en esta lista, verificamos-1<x
yx<m*m
para asegurarnos de quex
no esté encima o debajo de la cuadrícula,mod n 3>0||n-1/=x
para hacer cumplir el borde izquierdo de la cuadrícula ymod(n+1)m>0||n+1/=x
para el borde izquierdo.fuente
[n-3,n-1..n+3]
ygcd 3n>1
.gcd
parte. Debería haber sido<3
, y luego se rompe porn==0
. Es posible que pueda usar ese truco si cambia todo a1
indexado.n/=2&&n/=5
puede ser reemplazado pormod x 3>0
. (O lagcd
versión con reindexación, que ahora podría usarse dos veces.)Ruby ,
51 4845 bytesPruébalo en línea!
Cree 2 matrices, con vecinos verticales y horizontales, luego seleccione uno o más de ellos.
Ruby codificado, 44 bytes
... No vale la pena.
fuente
C,
1009291837874 bytes1 indexado. Gracias a @Neil por guardar 4 bytes.
Pruébalo en línea!
Versión codificada, 56 bytes
0 indexado
fuente
n>3&&p(n-3)
etc. para guardar 4 bytes? En la segunda versión, ¿no puedes escribirl[]=
para guardar un byte?Python 2, 51 bytes
Basado en una versión anterior de mi respuesta de Ruby , me pareció interesante porque era principalmente el mismo código, usando un truco diferente, y produce el mismo resultado. Conseguir esto correctamente me ayudó a responder un poco más al golf.
Básicamente, ruby lo tiene más corto porque el índice de corte de matriz es inclusivo, python necesita un
+1
para compensar.Explicación
Obtenga las 2 matrices (vecinas verticales y horizontales), luego seleccione una o ambas en función de algunos cálculos.
fuente
Java 7, 63 bytes (codificado)
0 indexados
(salida orden inverso debido
024
y046
no son números enteros válidos.)Seguimos trabajando en una versión no codificada, peroles puedo asegurar que no será más corto ..Pruébalo aquí.
82 bytes
1 indexado
Basado en la respuesta de @Steadybox 'C
Pruébalo aquí.
fuente
JavaScript + lodash, 71 bytes
fuente
Lote, 116 bytes
0 indexado.
fuente