A lei de Kirchhoff diz que, quando você soma todas as correntes (positivas para as correntes que vão para uma junção e negativas para as correntes que saem de uma junção), você sempre obtém o resultado 0.
Veja o seguinte diagrama:
Usando a lei de Kirchhoff, você pode ver que i1 + i4 - i2 - i3 = 0, então i1 + i4 = i2 + i3.
Dadas duas listas, uma com todas as correntes entrando na junção e outra com todas as correntes saindo da junção, exceto uma, produz a última.
Casos de teste:
[1, 2, 3], [1, 2] = 3
[4, 5, 6], [7, 8] = 0
[5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6
A segunda lista sempre tem um item a menos que a primeira lista. A saída não pode ser negativa. O menor programa vence.
code-golf
array-manipulation
electrical-engineering
Sessenta e seis
fonte
fonte
Respostas:
Gelatina, 2 bytes
Experimente aqui!
Leva as correntes de entrada no primeiro argumento e as correntes de saída no segundo argumento.
_
subtrai-os aos pares, deixando o elemento único da lista maior como está eS
soma o resultado.fonte
Haskell, 14 bytes
Exemplo de uso:
( (.sum).(-).sum ) [5,7,3,4,5,2] [8,4,5,2,1]
->6
.Resuma cada lista e faça a diferença.
fonte
CJam,
86 bytesA entrada usa duas matrizes no estilo CJam.
Execute todos os casos de teste. (Ele lê vários casos de teste de uma só vez e inclui uma estrutura para processar cada linha individualmente, descartando o resultado esperado da entrada.)
Explicação
.-
funciona de maneira confiável, porque garantimos que a primeira lista é sempre maior que a segunda. (Caso contrário, os elementos estranhos da segunda lista seriam anexados ao resultado que os adicionaria à soma em vez de subtraí-los.)fonte
MATL , 3
4,0bytesAs entradas são: deixando as correntes primeiro e depois inserindo as correntes.
Experimente online!
fonte
Javascript, 36 bytes
Mostrar snippet de código
fonte
05AB1E , 4 bytes
Código:
Explicação:
Agradecimentos a Luis Mendo por me lembrar que eu preciso implementar uma função concatenada. Se eu o tivesse implementado mais cedo, seriam 3 bytes:
Versão não concorrente (3 bytes):
A primeira lista é a lista atual que sai, a segunda é a lista atual que entra. Código:
Explicação:
Usa a codificação CP-1252.
fonte
Mathematica,
1711 bytesBem simples.
fonte
Lisp comum, 40
fonte
Perl 6 , 11 bytes
Uso:
fonte
Python 3, 24 bytes
ou
Python 2, 19 bytes
dependendo se for necessário imprimir o resultado ou apenas criar uma função que o retorne.
fonte
ES6, 39 bytes
Porque eu queria usar
reduceRight
.fonte
Python 2, 30 bytes
fonte
Pitão, 6 bytes
Explicação
Experimente aqui
fonte
K5, 5 bytes
Diferença sobre (
-/
) soma sobre (+/
) cada ('
).Em ação:
fonte
Pitão, 5 bytes
Experimente online. Suíte de teste.
M
aps
hum em ambas as listas de entrada, em seguida,F
a subtração de idade (-
).Isso também pode ser escrito como
-sQsE
, que leva as listas em duas linhas.fonte
, 5 caracteres / 7 bytes
Try it here (Firefox only).
Que.
Explicação
sum(input1) - sum(input2)
fonte
Lisp REPL comum, SBCL
2824 bytesescreva isso no REPL:
escreva listas de entrada como estas:
Espero que esteja tudo bem em usar esse formato de lista (em vez de, por exemplo
'(2 3 4)
). Usei a resposta de coredump como fórmula para minha solução e, em seguida, alcancei seu efeito de cálculo de uma maneira diferente.Explicação
Let
e_1,...,e_n
Ser elementos da primeira lista ef_1,...,f_{n-1}
ser elementos da segunda lista. Queremos avaliar a expressão(-(+ e_1 e_2 ... e_n)f_1 f_2 ...f_{n-1})
Significaria subtrair elementos da segunda lista da soma dos elementos da primeira lista. A expressão necessária é construída da seguinte maneira:backqoute interrompe a avaliação
#1=
economiza um pouco de escrita, lembrando,@(read)
,@
interrompe os efeitos da cotação posterior (para que (leitura) seja avaliada) e retira elementos de uma lista.(read)
pede entrada#1#
"carrega" o objeto Lisp salvo por#1=
#.
faz avaliação da representação impressa de um objeto Lispfonte