fundo
Os deltas de uma matriz de números inteiros é a matriz formada pela obtenção das diferenças de elementos consecutivos. Por exemplo, [1, 2, 4, 7, 3, 9, 6]
possui os seguintes deltas:[1, 2, 3, -4, 6, -3]
.
Vamos agora definir os deltas de uma matriz de números inteiros como os deltas de cada linha e cada coluna que ela contém.
Como um exemplo:
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]
O que nos fornece a seguinte lista de deltas da matriz:
[[1, 1, 1], [1, 1, 1], [-6, 7, -6], [3, 3], [3, -4], [3, 2], [3, -5]]
E como não queremos que eles sejam aninhados, achatamos essa lista:
[1, 1, 1, 1, 1, 1, -6, 7, -6, 3, 3, 3, -4, 3, 2, 3, -5]
Tarefa
Sua tarefa é somar todos os deltas de uma matriz dados como entrada. Observe que a matriz consistirá apenas de números inteiros não negativos.
Regras
Todas as regras padrão se aplicam.
Você pode assumir que a matriz contém pelo menos dois valores em cada linha e coluna; portanto, o tamanho mínimo será 2x2 .
Você pode pegar a matriz em qualquer formato razoável, desde que você a especifique.
Você não pode assumir que a matriz é quadrada.
Se isso puder ajudá-lo a reduzir sua contagem de bytes, opcionalmente , você poderá incluir o número de linhas e o número de colunas (olhando para você, C!).
Isso é código-golfe, então o código mais curto (em bytes), em cada idioma, vence!
Casos de teste
Entrada => Saída [[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 bytesExperimente online!
fonte
+/∘∊(2-⍨/⍉⍪⊢)
Haskell , 60 bytes
Experimente online! Usa a transposição mais curta que encontrei há um tempo.
Explicação
e
é uma lista infinita de listas vazias e usada para a transposição.z
é uma abreviação para azipWith
função, porque é usada duas vezes.fonte
Braquilog , 13 bytes
orignally baseado no design de @ sundar
Explicação
o
⟨⟩
estão atrapalhando a formatação, desculpeExperimente online!
fonte
Pitão, 7 bytes
Experimente aqui.
Minha primeira resposta em um idioma de golfe! Obrigado a @EriktheOutgolfer por -1 byte!
Explicação
fonte
.t
pode serC
para -1.Braquilog ,
2216 bytesExperimente online!
(-6 bytes inspirado nas sugestões de @ Kroppeb.)
fonte
⟨t-h⟩
faz o truque. Resultando em{⟨t-h⟩ᵐ+}R&\↰₁;R+
que é 5 bytes mais curto. Experimente online!⟨≡{...}ᵐ\⟩+
vez de{...}R&\↰₁;R+
salva 2 bytes. Resultando em⟨≡{⟨t-h⟩ᵐ+}ᵐ\⟩+
Experimente online!⟨≡⟨t-h⟩ᵐ²\⟩c+
. Experimente online!⟨≡{s₂ᶠc+ᵐ-}ᵐ\⟩+ṅ
Experimente on-line! , então atualizarei esta resposta com essa versão.Japonês
-x
,11109 bytesTente
Explicação
fonte
SOGL V0.12 , 9 bytes
Experimente aqui!(
→
adicionado porque isso recebe entrada na pilha)Explicação:
fonte
→
adicionado porque isso leva a entrada na pilha - estou pensando em perguntar isso há muito tempo: A entrada é enviada automaticamente para a pilha? Se não estiver, e espera que a entrada já esteja presente na pilha, você também não deve adicionar→
sua contagem de bytes? Não tenho certeza de como essas situações são tratadas. Ou é como uma função?functionNameSingleChar\n
)Mathematica, 45 bytes
Entrada
fonte
{#,Transpose@#}
(como minha resposta em Python)?Total[Differences/@{#,Thread@#},3]&
CJam , 19 bytes
Entrada é uma lista de listas de números. Experimente online!
Explicação
fonte
2few
dois pontos.MEU, 9 bytes
Experimente online!
Como não consigo executar ping no Dennis no chat para obter o MY (devido a uma suspensão), isso não funcionará no momento. (Obrigado a quem conseguiu Dennis puxar MEU!Δ
antes não vecificava ao subtrair)Quão?
ωΔ
, incrementos do primeiro argumento da linha de comandosω⍉Δ
, incrementos da transposição do primeiro argumento da linha de comandos, em uma única lista
ḟ
achatarΣ
soma↵
, resultadofonte
APL (Dyalog Classic) , 12 bytes
Experimente online!
fonte
Pyt , 11 bytes
Explicação:
fonte