Contexte
Les deltas d'un tableau d'entiers sont le tableau formé en obtenant les différences d'éléments consécutifs. Par exemple, [1, 2, 4, 7, 3, 9, 6]
a les deltas suivantes: [1, 2, 3, -4, 6, -3]
.
Nous allons maintenant définir les deltas d'une matrice d'entiers comme les deltas de chaque ligne et de chaque colonne qu'elle contient.
Par exemple:
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]
Ce qui nous donne la liste suivante de deltas matriciels:
[[1, 1, 1], [1, 1, 1], [-6, 7, -6], [3, 3], [3, -4], [3, 2], [3, -5]]
Et comme nous ne voulons pas qu'ils soient imbriqués, nous aplatissons cette liste:
[1, 1, 1, 1, 1, 1, -6, 7, -6, 3, 3, 3, -4, 3, 2, 3, -5]
Tâche
Votre tâche consiste à additionner tous les deltas d'une matrice donnée en entrée. Notez que la matrice ne sera composée que d'entiers non négatifs.
Règles
Toutes les règles standard s'appliquent.
Vous pouvez supposer que la matrice contient au moins deux valeurs sur chaque ligne et colonne, la taille minimale sera donc 2x2 .
Vous pouvez prendre la matrice dans n'importe quel format raisonnable, tant que vous le spécifiez.
Vous ne pouvez pas supposer que la matrice est carrée.
Si cela peut vous aider à réduire votre nombre d'octets, vous pouvez également prendre en option le nombre de lignes et le nombre de colonnes (vous regarde C!).
Il s'agit de code-golf, donc le code le plus court (en octets), dans chaque langue, gagne!
Cas de test
Entrée => Sortie [[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 octetsEssayez-le en ligne!
la source
+/∘∊(2-⍨/⍉⍪⊢)
Haskell , 60 octets
Essayez-le en ligne! Utilise la transposition plus courte que j'ai trouvée il y a quelque temps.
Explication
e
est une liste infinie de listes vides et utilisée pour la transposition.z
est un raccourci pour lazipWith
fonction, car il est utilisé deux fois.la source
Brachylog , 13 octets
basé sur la conception originale de @ sundar
Explication
le
⟨⟩
formatage est foireux, désoléEssayez-le en ligne!
la source
Pyth, 7 octets
Essayez-le ici.
Ma toute première réponse dans une langue de golf! Merci à @EriktheOutgolfer pour -1 octet!
Explication
la source
.t
peut êtreC
pour -1.Brachylog ,
2216 octetsEssayez-le en ligne!
(-6 octets inspirés des suggestions de @ Kroppeb.)
la source
⟨t-h⟩
fait l'affaire. Résultat dans{⟨t-h⟩ᵐ+}R&\↰₁;R+
lequel est 5 octets plus court. Essayez-le en ligne!⟨≡{...}ᵐ\⟩+
au lieu d'{...}R&\↰₁;R+
enregistrer 2 octets. Résultat:⟨≡{⟨t-h⟩ᵐ+}ᵐ\⟩+
Essayez-le en ligne!⟨≡⟨t-h⟩ᵐ²\⟩c+
. Essayez-le en ligne!⟨≡{s₂ᶠc+ᵐ-}ᵐ\⟩+ṅ
Essayez-le en ligne! , je vais donc mettre à jour cette réponse avec cette version à la place.Japt
-x
,11109 octetsEssayez-le
Explication
la source
SOGL V0.12 , 9 octets
Essayez-le ici! (
→
ajouté car cela prend une entrée sur la pile)Explication:
la source
→
ajouté parce que cela prend une entrée sur la pile - je voulais poser cette question depuis longtemps: l'entrée est-elle automatiquement poussée dans la pile? Si ce n'est pas le cas et s'attend à ce que l'entrée soit déjà présente dans la pile, ne devriez-vous pas ajouter également→
votre nombre d'octets? Je ne sais pas comment ces situations sont gérées. Ou est-ce comme une fonction?functionNameSingleChar\n
)Mathematica, 45 octets
Contribution
la source
{#,Transpose@#}
(comme ma réponse Python)?Total[Differences/@{#,Thread@#},3]&
CJam , 19 octets
L'entrée est une liste de listes de nombres. Essayez-le en ligne!
Explication
la source
2few
deux points.MY, 9 octets
Essayez-le en ligne!
Comme je ne peux pas envoyer de ping à Dennis dans le chat pour tirer MY (en raison d'une suspension), cela ne fonctionnera pas actuellement. (Merci à celui qui aΔ
auparavant, il ne vérifiait pas lors de la soustraction)amenéDennis à tirer MA!Comment?
ωΔ
, incréments du premier argument de ligne de commandeω⍉Δ
, incréments de la transposition du premier argument de ligne de commande, dans une seule liste
ḟ
aplatirΣ
, somme↵
, productionla source
APL (Dyalog Classic) , 12 octets
Essayez-le en ligne!
la source
Pyt , 11 octets
Explication:
la source