Hintergrund
Das Delta eines Arrays von ganzen Zahlen ist das Array, das aus den Differenzen aufeinanderfolgender Elemente gebildet wird. Zum Beispiel [1, 2, 4, 7, 3, 9, 6]
hat die folgenden Deltas: [1, 2, 3, -4, 6, -3]
.
Wir definieren nun die Deltas einer Ganzzahlmatrix als die Deltas jeder Zeile und jeder Spalte, die sie enthält.
Als Beispiel:
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]
Was uns die folgende Liste von Matrixdeltas gibt:
[[1, 1, 1], [1, 1, 1], [-6, 7, -6], [3, 3], [3, -4], [3, 2], [3, -5]]
Und da wir nicht möchten, dass sie verschachtelt werden, reduzieren wir diese Liste:
[1, 1, 1, 1, 1, 1, -6, 7, -6, 3, 3, 3, -4, 3, 2, 3, -5]
Aufgabe
Ihre Aufgabe ist es, alle Deltas einer als Eingabe gegebenen Matrix zu summieren . Beachten Sie, dass die Matrix nur aus nicht negativen ganzen Zahlen besteht.
Regeln
Es gelten alle Standardregeln.
Sie können davon ausgehen, dass die Matrix mindestens zwei Werte in jeder Zeile und Spalte enthält, sodass die Mindestgröße 2x2 beträgt .
Sie können die Matrix in jedem vernünftigen Format verwenden, solange Sie es angeben.
Sie können nicht davon ausgehen, dass die Matrix quadratisch ist.
Wenn es helfen , könnten Sie Ihre Byteanzahl reduzieren, Sie können optional die Anzahl der Zeilen nehmen und die Anzahl der Spalten als Eingabe als auch (Betrachten Sie C!).
Das ist Code-Golf, also gewinnt der kürzeste Code (in Bytes) in jeder Sprache !
Testfälle
Eingabe => Ausgabe [[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,
18-15BytesProbieren Sie es online!
quelle
+/∘∊(2-⍨/⍉⍪⊢)
Haskell , 60 Bytes
Probieren Sie es online! Verwendet die kürzere Transponierte, die ich vor einiger Zeit gefunden habe.
Erläuterung
e
ist eine unendliche Liste von leeren Listen, die zum Transponieren verwendet werden.z
ist eine Abkürzung für diezipWith
Funktion, da sie zweimal verwendet wird.quelle
Brachylog , 13 Bytes
ursprünglich basierend auf @ sundar's design
Erläuterung
Die
⟨⟩
Formatierung ist durcheinander, sorryProbieren Sie es online!
quelle
Pyth, 7 Bytes
Probieren Sie es hier aus.
Meine allererste Antwort in einer Golfsprache! Vielen Dank an @EriktheOutgolfer für -1 Byte!
Erläuterung
quelle
.t
kannC
für -1 sein.Brachylog ,
2216 BytesProbieren Sie es online!
(-6 Bytes, inspiriert von @ Kroppebs Vorschlägen.)
quelle
⟨t-h⟩
erledigt den Trick. Daraus ergeben{⟨t-h⟩ᵐ+}R&\↰₁;R+
sich 5 Bytes weniger. Probieren Sie es online!⟨≡{...}ᵐ\⟩+
statt{...}R&\↰₁;R+
spart 2 bytes. Ergebnis⟨≡{⟨t-h⟩ᵐ+}ᵐ\⟩+
Versuchen Sie es online!⟨≡⟨t-h⟩ᵐ²\⟩c+
. Probieren Sie es online!⟨≡{s₂ᶠc+ᵐ-}ᵐ\⟩+ṅ
Probieren Sie es online aus! Daher aktualisiere ich diese Antwort stattdessen mit dieser Version.Japt
-x
,11109 BytesVersuch es
Erläuterung
quelle
SOGL V0.12 , 9 Bytes
Probieren Sie es hier aus! (
→
hinzugefügt, da dies Eingaben auf dem Stapel nimmt)Erläuterung:
quelle
→
hinzugefügt, weil dies Eingaben auf dem Stapel erfordert - ich wollte das schon lange fragen: Werden Eingaben automatisch auf den Stapel geschoben? Wenn dies nicht der Fall ist und erwartet, dass die Eingabe bereits im Stapel vorhanden ist, sollten Sie dann nicht auch→
die Byteanzahl erhöhen? Ich bin nicht sicher, wie mit diesen Situationen umgegangen wird. Oder ist es wie eine Funktion?functionNameSingleChar\n
)Mathematica, 45 Bytes
Eingang
quelle
{#,Transpose@#}
(wie meine Python-Antwort) das Erste vom Letzten zu subtrahieren ?Total[Differences/@{#,Thread@#},3]&
CJam , 19 Bytes
Die Eingabe ist eine Liste von Nummernlisten. Probieren Sie es online!
Erläuterung
quelle
2few
Doppelpunkte.MEIN, 9 Bytes
Probieren Sie es online!
Da ich Dennis im Chat nicht anpingen kann, um MEINEN zu ziehen (aufgrund einer Aussetzung), wird dies derzeit nicht funktionieren. (Dank an denjenigen, der Dennis zum Ziehen von MY!Δ
Bisher nicht beim Subtrahieren angegeben)Wie?
ωΔ
Inkremente des ersten Befehlszeilenargumentsω⍉Δ
Inkremente der Transponierung des ersten Befehlszeilenargumentsin einer einzigen Liste
ḟ
, ebnenΣ
, Summe↵
, Ausgabequelle
APL (Dyalog Classic) , 12 Byte
Probieren Sie es online!
quelle
Pyt , 11 Bytes
Erläuterung:
quelle