Deltas reversos de uma matriz
Uma continuação de deltas inversos de uma matriz
Sua tarefa é pegar uma matriz de números inteiros de 32 bits assinados e recompilar com os deltas invertidos.
Exemplo
A lista,
18 19 17 20 16
tem os deltas:
1 -2 3 -4
que, quando revertido, produz:
-4 3 -2 1
quando recompilado, usando rendimentos:
18 14 17 15 16
qual deve ser o seu valor de retorno.
A recompilação consiste em pegar o C
, que é o primeiro valor da matriz. Nesse caso 18
,, e aplicando os deltas a ele em ordem. Então 18 + -4
dá 14
, 14 + 3
dá 17
, e assim por diante.
Entrada / Saída
Você receberá uma lista / matriz / tabela / tupla / pilha / etc. de números inteiros assinados como entrada por qualquer método de entrada padrão.
Você deve imprimir os dados modificados novamente de qualquer forma aceitável, seguindo o método de reversão delta acima.
Você receberá N entradas 0 < N < 10
onde cada número se enquadra dentro da faixa-1000 < X < 1000
Casos de teste
1 2 3 4 5 -> 1 2 3 4 5
18 19 17 20 16 -> 18 14 17 15 16
5 9 1 3 8 7 8 -> 5 6 5 10 12 4 8
6 5 4 1 2 3 -> 6 7 8 5 4 3
Notas
- Como mencionado acima, você sempre receberá pelo menos 1 entrada e não mais que 9.
- O primeiro e o último número da sua saída sempre corresponderão ao da entrada.
- Somente saída de entrada padrão é aceita
- Aplicam-se brechas padrão
- Isso é código-golfe , então a menor contagem de bytes vence!
- Diverta-se!
E o vencedor é...
Dennis! Quem primeiro ocupou o primeiro lugar, depois se derrotou com uma solução mais curta, dando a si mesmo o primeiro e o segundo lugar!
Menção honrosa para ais523 com sua geléia, que se não fosse Dennis entrando logo antes deles, teria ficado em segundo lugar.
Respostas:
Geléia , 5 bytes
Este utiliza o algoritmo de resposta Julia de Glen O .
Experimente online!
Como funciona
fonte
Gelatina , 6 bytes
Experimente online!
Como funciona
fonte
Ṛ
onde eu tenhoU
). Não sei se isso os torna diferentes o suficiente para não considerar duplicatas.U
vetoriza enquantoṚ
não, mas seu comportamento para matrizes planas é idêntico.Ḣ
como 0x1e22 eṚ
como 0x1e5a, cada um dos quais requer, portanto, 3 bytes.Julia, 24 bytes
Esta é a maneira "inteligente" de resolver o problema. O reverso negativo da matriz tem os "deltas" revertidos e, em seguida, você só precisa corrigir o fato de que ela inicia / termina nos lugares errados.
fonte
Boneco de neve 1.0.2, 72 bytes
Experimente online!
Essa é uma sub-rotina que recebe as entradas e saídas do permavar atual.
fonte
JavaScript (ES6),
4537 bytesPorto da resposta do Mathematica da @ JHM. (Tenho certeza de que eu próprio poderia ter derivado, mas não a essa hora da noite.) Editar: salvou 8 bytes graças a @ edc65.
fonte
[...
e]
?a
, que é usado mais tarde no programaa=>a.reverse(z=a[0]).map(e=>z+a[0]-e)
z=a[0]
, mas esqueci de remover o[...]
e(,i,b)
.Mathematica, 23 bytes
Função sem nome. O resultado é simplesmente: reverse ((primeiro elemento) + (último elemento) - (cada elemento)).
fonte
Python 2,
96745444 bytesA entrada é fornecida como uma matriz cercada por colchetes. A saída está no mesmo formato.
Agradecemos ao @Kade por salvar
2242 bytes usando um método muito mais simples do que eu fazia antes!Obrigado a Sherlock9 por salvar 10 bytes, eliminando o contador de índices da compreensão da lista!
Ótimo, agora, se eu jogar mais, vou pegar o problema "riscado ainda é 44". ; _;
fonte
lambda l:[l[0]+l[-1]-l[i]for i in range(len(l))][::-1]
54 bytes? :) (créditos para Glen O. para o cálculo)l[i]for i in range(len(l))
, você pode usarj for j in l
para salvar 14 bytes.05AB1E , 8 bytes
Experimente online!
Tradução da minha resposta MATL, segunda abordagem.
fonte
¬s¥Rvy)}
R,
3730 bytesEdit: Agora, usando a abordagem na resposta Julia de Glen O
Velho:
Lê entrada, calcula deltas, concatena com o primeiro elemento e calcula a soma acumulada.
fonte
MATL , 8 bytes
Experimente online!
Esta é a aplicação direta da definição. Considere a entrada
[18 19 17 20 16]
como um exemplo.Abordagem diferente, mesma contagem de bytes:
Experimente onllne!
Matriz revertida e negada mais a primeira e a última entrada da matriz original.
fonte
Japonês, 8 bytes
Execute-o online
fonte
Pitão - 10 bytes
Conjunto de Teste .
fonte
A (Aheui) , 3 * 21 caracteres + 2 "\ n" = 65 bytes
Assume a entrada na pilha 아. A saída será armazenada na pilha 안.
Se você quiser experimentar este código:
No final da primeira linha deste código, adicione o
벙
comprimento do caractere (n) - vezes (ou seja, se a entrada for 7 inteiros, insira-a 7 vezes). Para cada prompt, digite um número inteiro:Experimente aqui! (copie e cole o código)
Exemplo
Para
1, 2, 3, 4, 5
:e depois digitar
1
,2
,3
,4
, e5
(haverá 5 solicita).Versão alternativa (65 bytes)
fonte
65 bytes in UTF-8
ou algo assim?Bytes C # 42
Pega um
int[]
e retorna umIEnumerable<int>
.(Na verdade, essa é apenas uma versão portada da versão da JHM ..)
fonte
TSQL, 200 bytes
Variável de tabela usada como entrada
Experimente
fonte
PHP,
605652 bytes-4 bytes graças a @ user59178
opera em argumentos de linha de comando, usa sublinhado como separador. Correr com
php -r '<code>' <space separated numbers>
fonte
$n
como variável de controle? Eu tentei uma versão como essa e era 4 bytes mais curta e parecia funcionar.Perl 6 ,
48 3330 bytesTente
Expandido:
Também
*-1
é uma expressão lambda do tipo WhateverCode, onde*
é o único parâmetro posicional.fonte
[\+]
a partir do primeiro exemplo, é triângulo reduzir[\+] 3,-1,1,-5
→(3,2,3,-2)
e[\,] 3,-1,1,-5
→((3,), (3,-1), (3,-1,1), (3,-1,1,-5))
Julia 0.4 , 32 bytes
Experimente online!
fonte
BASH, 71 bytes
fonte
C ++ 14, 103 bytes
Como lambda não identificado, que exige a sua entrada para ter
rbegin
,rend
,back
epush_back
como os recipientesvector
,deque
oulist
.Usando a abordagem da resposta de Glen O, Julia
Ungolfed e uso:
fonte
Haskell, 33 bytes
Usa a mesma lógica que JHM:
Muito legível também.
fonte
(!!0)
parahead
e usando(<$>)
paramap
: Experimente online!Convexo , 10 bytes
Experimente online!
fonte
Clojure, 101 bytes
Segue praticamente a descrição:
fonte
Java 7, 96 bytes
Explicação:
Código do teste:
Experimente aqui.
Saída:
fonte
APL (Dyalog Unicode) , 11 bytes SBCS
Função de prefixo tácito anônimo.
Experimente online!
+\
soma acumulada de⊃
o primeiro elemento do argumento,
seguido∘
pela⌽
reversão de2-⍨/
a diferença pareada de⊢
o argumentofonte