Antecedentes
Los deltas de una matriz de enteros son la matriz formada al obtener las diferencias de elementos consecutivos. Por ejemplo, [1, 2, 4, 7, 3, 9, 6]
tiene las siguientes deltas: [1, 2, 3, -4, 6, -3]
.
Ahora definiremos los deltas de una matriz de enteros como los deltas de cada fila y cada columna que contiene.
Como ejemplo:
Row deltas:
1 2 3 4 │ => [1, 1, 1]
4 5 6 7 │ => [1, 1, 1]
7 1 8 2 │ => [-6, 7, -6]
Column deltas (the matrix' columns have been rotated into rows for simplicity):
1 4 7 │ => [3, 3]
2 5 1 │ => [3, -4]
3 6 8 │ => [3, 2]
4 7 2 │ => [3, -5]
Lo que nos da la siguiente lista de deltas matriciales:
[[1, 1, 1], [1, 1, 1], [-6, 7, -6], [3, 3], [3, -4], [3, 2], [3, -5]]
Y como no queremos que estén anidados, aplanamos esa lista:
[1, 1, 1, 1, 1, 1, -6, 7, -6, 3, 3, 3, -4, 3, 2, 3, -5]
Tarea
Su tarea es sumar todos los deltas de una matriz dada como entrada. Tenga en cuenta que la matriz solo consistirá en enteros no negativos.
Reglas
Se aplican todas las reglas estándar.
Puede suponer que la matriz contiene al menos dos valores en cada fila y columna, por lo que el tamaño mínimo será 2x2 .
Puede tomar la matriz en cualquier formato razonable, siempre que la especifique.
No puede suponer que la matriz es cuadrada.
Si puede ayudarlo a reducir su recuento de bytes, también puede tomar el número de filas y el número de columnas como entrada (¡Mirándolo C!).
Este es el código de golf, por lo que gana el código más corto (en bytes) en cada idioma .
Casos de prueba
Entrada => Salida [[1, 2], [1, 2]] => 2 [[8, 7, 1], [4, 1, 3], [5, 5, 5]] => -9 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] => 24 [[9, 9, 9, 9, 9], [9, 9, 9, 9, 9]] => 0 [[1, 3, 14], [56, 89, 20], [99, 99, 99]] => 256 [[1, 2, 3, 4], [4, 5, 6, 7], [7, 1, 8, 2]] => 9 [[13, 19, 478], [0, 12, 4], [45, 3, 6], [1, 2, 3]] => -72
ṁ
.APL,
1815 bytesPruébalo en línea!
fuente
+/∘∊(2-⍨/⍉⍪⊢)
Haskell , 60 bytes
Pruébalo en línea! Utiliza la transposición más corta que encontré hace un tiempo.
Explicación
e
es una lista infinita de listas vacías y se utiliza para la transposición.z
es una abreviatura de lazipWith
función, porque se usa dos veces.fuente
Brachylog , 13 bytes
Originalmente basado en el diseño @ sundar
Explicación
el
⟨⟩
están arruinando el formato, lo sientoPruébalo en línea!
fuente
Pyth, 7 bytes
Pruébalo aquí
¡Mi primera respuesta en un idioma de golf! Gracias a @EriktheOutgolfer por -1 byte!
Explicación
fuente
.t
puede serC
para -1.Brachylog ,
2216 bytesPruébalo en línea!
(-6 bytes inspirados en las sugerencias de @ Kroppeb).
fuente
⟨t-h⟩
hace el truco. Resultando en{⟨t-h⟩ᵐ+}R&\↰₁;R+
que es 5 bytes más corto. Pruébalo en línea!⟨≡{...}ᵐ\⟩+
lugar de{...}R&\↰₁;R+
guardar 2 bytes. Resultando en ¡⟨≡{⟨t-h⟩ᵐ+}ᵐ\⟩+
Pruébelo en línea!⟨≡⟨t-h⟩ᵐ²\⟩c+
. Pruébalo en línea!⟨≡{s₂ᶠc+ᵐ-}ᵐ\⟩+ṅ
Pruébelo en línea! , así que actualizaré esta respuesta con esa versión en su lugar.Japt
-x
,11109 bytesIntentalo
Explicación
fuente
SOGL V0.12 , 9 bytes
Pruébalo aquí! (
→
agregado porque esto toma entrada en la pila)Explicación:
fuente
→
agregado porque esto toma entrada en la pila . He querido preguntar esto durante mucho tiempo: ¿la entrada se envía automáticamente a la pila? Si no lo es, y espera que la entrada ya esté presente en la pila, ¿no debería agregar también→
su conteo de bytes? No estoy seguro de cómo se manejan estas situaciones. ¿O es como una función?functionNameSingleChar\n
)Mathematica, 45 bytes
Entrada
fuente
{#,Transpose@#}
(como mi respuesta de Python)?Total[Differences/@{#,Thread@#},3]&
CJam , 19 bytes
La entrada es una lista de listas de números. Pruébalo en línea!
Explicación
fuente
2few
dos puntosMI, 9 bytes
Pruébalo en línea!
Como no puedo hacer ping a Dennis en el chat para extraer MY (debido a una suspensión), actualmente no funcionará. (Gracias a quien consiguió que Dennis tirara de MI!Δ
anteriormente no vecificaba al restar) ¡¿Cómo?
ωΔ
, incrementos del primer argumento de línea de comandoω⍉Δ
, incrementos de la transposición del primer argumento de línea de comando, en una sola lista
ḟ
aplanarΣ
suma↵
, salidafuente
APL (Dyalog Classic) , 12 bytes
Pruébalo en línea!
fuente
Pyt , 11 bytes
Explicación:
fuente