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
1hasta9.Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere la entrada
2como 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~#¶ 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 3devoluciones[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,
nla lista[n-m,n-1,n+1,n+m]contiene los cuatro vecinos. Para cada entradaxen esta lista, verificamos-1<xyx<m*mpara asegurarnos de quexno esté encima o debajo de la cuadrícula,mod n 3>0||n-1/=xpara hacer cumplir el borde izquierdo de la cuadrícula ymod(n+1)m>0||n+1/=xpara el borde izquierdo.fuente
[n-3,n-1..n+3]ygcd 3n>1.gcdparte. Debería haber sido<3, y luego se rompe porn==0. Es posible que pueda usar ese truco si cambia todo a1indexado.n/=2&&n/=5puede ser reemplazado pormod x 3>0. (O lagcdversió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
+1para 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
024y046no 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