La ley de Kirchhoff dice que cuando sumas todas las corrientes (positivas para las corrientes que van a un cruce, y negativas para la corriente que sale de un cruce), siempre obtendrás como resultado 0.
Mira el siguiente diagrama:
Usando la ley de Kirchhoff, puede ver que i1 + i4 - i2 - i3 = 0, entonces i1 + i4 = i2 + i3.
Dadas dos listas, una con todas las corrientes que entran en la unión y otra con todas las corrientes que salen de la unión, excepto una, emite la última.
Casos de prueba:
[1, 2, 3], [1, 2] = 3
[4, 5, 6], [7, 8] = 0
[5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6
La segunda lista siempre tiene un elemento menos que la primera lista. La salida no puede ser negativa. El programa más pequeño gana.
code-golf
array-manipulation
electrical-engineering
Sesenta y seis
fuente
fuente
Respuestas:
Jalea, 2 bytes
Pruébalo aquí!
Toma las corrientes entrantes en el primer argumento y las corrientes salientes en el segundo argumento.
_
los resta por pares, dejando el elemento individual de la lista más larga tal cual, yS
suma el resultado.fuente
Haskell, 14 bytes
Ejemplo de uso:
( (.sum).(-).sum ) [5,7,3,4,5,2] [8,4,5,2,1]
->6
.Suma cada lista y toma la diferencia.
fuente
CJam,
86 bytesLa entrada usa dos matrices de estilo CJam.
Ejecute todos los casos de prueba. (Esto lee múltiples casos de prueba a la vez e incluye un marco para procesar cada línea individualmente, descartando el resultado esperado de la entrada).
Explicación
.-
funciona de manera confiable porque estamos garantizados de que la primera lista siempre es más larga que la segunda. (De lo contrario, los elementos extraños de la segunda lista se agregarían al resultado que los agregaría a la suma en lugar de restarlos).fuente
MATL , 3
4.0bytesLas entradas son: dejar las corrientes primero, luego ingresar las corrientes.
Pruébalo en línea!
fuente
Javascript, 36 bytes
Mostrar fragmento de código
fuente
05AB1E , 4 bytes
Código:
Explicación:
Gracias a Luis Mendo por recordarme que necesito implementar una función concatenada. Si lo hubiera implementado antes, habría sido de 3 bytes:
Versión no competitiva (3 bytes):
La primera lista es la lista actual que sale, la segunda es la lista actual entrante. Código:
Explicación:
Utiliza la codificación CP-1252.
fuente
Mathematica,
1711 bytesBastante sencillo.
fuente
Lisp común, 40
fuente
Perl 6 , 11 bytes
Uso:
fuente
Python 3, 24 bytes
o
Python 2, 19 bytes
dependiendo de si debo imprimir el resultado o simplemente crear una función que lo devuelva.
fuente
ES6, 39 bytes
Debido a que quería utilizar
reduceRight
.fuente
Python 2, 30 bytes
fuente
Pyth, 6 bytes
Explicación
Pruébalo aquí
fuente
K5, 5 bytes
Diferencia sobre (
-/
) suma sobre (+/
) cada ('
).En acción:
fuente
Pyth, 5 bytes
Pruébalo en línea. Banco de pruebas.
M
aps
um en ambas listas de entrada, luegoF
resta antigua (-
).Esto también podría escribirse como
-sQsE
, que toma las listas en dos líneas.fuente
𝔼𝕊𝕄𝕚𝕟, 5 caracteres / 7 bytes
Try it here (Firefox only).
Wut
Explicación
sum(input1) - sum(input2)
fuente
Common Lisp REPL, SBCL
2824 bytesescribe esto en REPL:
luego escriba listas de entrada como esta:
Espero que esté bien usar ese formato de lista (en lugar de, por ejemplo
'(2 3 4)
). Utilicé la respuesta de coredump como fórmula para mi solución y luego logré su efecto de cálculo de una manera diferente.Explicación
Dejar
e_1,...,e_n
ser elementos de la primera lista yf_1,...,f_{n-1}
ser elementos de la segunda lista. Queremos evaluar la expresión(-(+ e_1 e_2 ... e_n)f_1 f_2 ...f_{n-1})
Significaría restar elementos de la segunda lista de la suma de elementos de la primera lista. La expresión necesaria se construye así:backqoute detiene la evaluación
#1=
ahorra un poco de escritura, recordando,@(read)
,@
detiene los efectos de la cita inversa (para que se evalúe (leer)) y elimina elementos de una lista.(read)
pide entrada#1#
"carga" el objeto Lisp guardado por#1=
#.
evalúa la representación impresa de un objeto Lispfuente