Фон
Дельты массива целых чисел - это массив, сформированный путем получения различий последовательных элементов. Например, [1, 2, 4, 7, 3, 9, 6]
имеют следующие дельты: [1, 2, 3, -4, 6, -3]
.
Теперь мы определим дельты матрицы целых чисел как дельты каждой строки и каждого столбца, который она содержит.
В качестве примера:
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]
Что дает нам следующий список матричных дельт:
[[1, 1, 1], [1, 1, 1], [-6, 7, -6], [3, 3], [3, -4], [3, 2], [3, -5]]
И поскольку мы не хотим, чтобы они были вложенными, мы сглаживаем этот список:
[1, 1, 1, 1, 1, 1, -6, 7, -6, 3, 3, 3, -4, 3, 2, 3, -5]
задача
Ваша задача - суммировать все дельты матрицы, заданной в качестве входных данных. Обратите внимание, что матрица будет состоять только из неотрицательных целых чисел.
правила
Все стандартные правила применяются.
Можно предположить, что матрица содержит как минимум два значения в каждой строке и столбце, поэтому минимальный размер будет 2x2 .
Вы можете взять матрицу в любом разумном формате, если вы укажете ее.
Вы не можете предполагать, что матрица квадратная.
Если это может помочь вам уменьшить количество байтов, вы также можете принять количество строк и количество столбцов в качестве входных данных (глядя на вас C!).
Это код-гольф, поэтому выигрывает самый короткий код (в байтах) на каждом языке !
Тестовые случаи
Вход => Выход [[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 байтПопробуйте онлайн!
источник
+/∘∊(2-⍨/⍉⍪⊢)
Haskell , 60 байт
Попробуйте онлайн! Использует более короткие транспонирования я нашел некоторое время назад.
объяснение
e
представляет собой бесконечный список пустых списков и используется для транспонирования.z
является сокращением дляzipWith
функции, потому что она используется дважды.источник
Брахилог , 13 байт
изначально основанный на дизайне @ sundar
объяснение
⟨⟩
будут баловаться форматирования, извинитеПопробуйте онлайн!
источник
Pyth, 7 байт
Попробуй это здесь.
Мой первый ответ на языке игры в гольф! Благодаря @EriktheOutgolfer за -1 байт!
объяснение
источник
.t
можноC
за -1.Брахилог ,
2216 байтПопробуйте онлайн!
(-6 байт, вдохновленные предложениями @ Kroppeb.)
источник
⟨t-h⟩
делает свое дело. В результате{⟨t-h⟩ᵐ+}R&\↰₁;R+
чего на 5 байт короче. Попробуйте онлайн!⟨≡{...}ᵐ\⟩+
вместо{...}R&\↰₁;R+
сохранения 2 байта. В результате⟨≡{⟨t-h⟩ᵐ+}ᵐ\⟩+
попробуйте онлайн!⟨≡⟨t-h⟩ᵐ²\⟩c+
. Попробуйте онлайн!⟨≡{s₂ᶠc+ᵐ-}ᵐ\⟩+ṅ
Попробуйте онлайн! , поэтому я обновлю этот ответ вместо этой версии.Japt
-x
,11109 байтПопытайся
объяснение
источник
SOGL V0.12 , 9 байтов
Попробуй здесь! (
→
добавлено, потому что это принимает входные данные в стеке)Объяснение:
источник
→
добавил, потому что это принимает входные данные в стеке - я давно хотел спросить это: автоматически ли ввод вводится в стек? Если это не так, и ожидается, что входные данные уже присутствуют в стеке, разве вы не должны добавить→
в свой счетчик байтов? Не уверен, как эти ситуации обрабатываются. Или это как функция?functionNameSingleChar\n
)Mathematica, 45 байт
вход
источник
{#,Transpose@#}
(как мой ответ на Python)?Total[Differences/@{#,Thread@#},3]&
CJam , 19 байтов
Ввод представляет собой список списков чисел. Попробуйте онлайн!
объяснение
источник
2few
двоеточия.МОЙ, 9 байт
Попробуйте онлайн!
Так как я не могу пропинговать Денниса в чате, чтобы вытащить MY (из-за приостановки), это в настоящее время не будет работать. (Благодаря тому, кто заставил Денниса вытащить МОЕГО!Δ
ранее не vecify при вычитании)Как?
ωΔ
, приращения первого аргумента командной строкиω⍉Δ
, приращения транспонирования первого аргумента командной строкив одном списке
ḟ
сплющитьΣ
, сумма↵
, выходисточник
APL (Dyalog Classic) , 12 байт
Попробуйте онлайн!
источник
Пыть , 11 байт
Объяснение:
источник