Kirchhoffs Gesetz besagt, dass Sie immer als Ergebnis 0 erhalten, wenn Sie alle Ströme (positiv für die Ströme, die zu einer Kreuzung gehen, und negativ für den Strom, der eine Kreuzung verlässt) summieren.
Schauen Sie sich das folgende Diagramm an:
Mit dem Kirchhoffschen Gesetz können Sie sehen, dass i1 + i4 - i2 - i3 = 0, also i1 + i4 = i2 + i3.
Wenn zwei Listen gegeben sind, eine mit allen Strömen, die in die Verbindungsstelle eintreten, und eine mit allen Strömen, die die Verbindungsstelle mit Ausnahme einer verlassen, wird die letzte ausgegeben.
Testfälle:
[1, 2, 3], [1, 2] = 3
[4, 5, 6], [7, 8] = 0
[5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6
Die zweite Liste enthält immer ein Element weniger als die erste Liste. Der Ausgang kann nicht negativ sein. Das kleinste Programm gewinnt.
code-golf
array-manipulation
electrical-engineering
Sechsundsechzig
quelle
quelle
Antworten:
Gelee, 2 Bytes
Probieren Sie es hier aus!
Nimmt die Eingangsströme im ersten Argument und die Ausgangsströme im zweiten Argument.
_
Subtrahiert sie paarweise, lässt das einzelne Element unverändert von der längeren Liste undS
summiert das Ergebnis.quelle
Haskell, 14 Bytes
Anwendungsbeispiel:
( (.sum).(-).sum ) [5,7,3,4,5,2] [8,4,5,2,1]
->6
.Summiere jede Liste und nimm die Differenz.
quelle
CJam,
86 BytesDie Eingabe verwendet zwei Arrays im CJam-Stil.
Führen Sie alle Testfälle aus. (Dies liest mehrere Testfälle gleichzeitig und beinhaltet ein Framework, um jede Zeile einzeln zu verarbeiten und das erwartete Ergebnis aus der Eingabe zu verwerfen.)
Erläuterung
.-
funktioniert zuverlässig, weil wir garantiert sind, dass die erste Liste immer länger als die zweite ist. (Andernfalls werden die überflüssigen Elemente der zweiten Liste an das Ergebnis angehängt, wodurch sie zur Summe addiert werden, anstatt sie zu subtrahieren.)quelle
MATL , 3
4,0BytesEingaben sind: zuerst Ströme verlassen, dann Ströme eingeben.
Probieren Sie es online!
quelle
Javascript, 36 Bytes
Code-Snippet anzeigen
quelle
05AB1E , 4 Bytes
Code:
Erläuterung:
Vielen Dank an Luis Mendo , der mich daran erinnert hat, dass ich eine Verkettungsfunktion implementieren muss. Wenn ich es früher implementiert hätte, wären es 3 Bytes gewesen:
Nicht konkurrierende Version (3 Bytes):
Die erste Liste ist die abgehende aktuelle Liste, die zweite die eintretende aktuelle Liste. Code:
Erläuterung:
Verwendet die CP-1252-Codierung.
quelle
Mathematica,
1711 BytesZiemlich einfach.
quelle
Gemeiner Lisp, 40
quelle
Perl 6 , 11 Bytes
Verwendung:
quelle
Python 3, 24 Bytes
oder
Python 2, 19 Bytes
je nachdem, ob ich das Ergebnis ausdrucken oder nur eine Funktion erstellen muss, die es zurückgibt.
quelle
ES6, 39 Bytes
Weil ich nutzen wollte
reduceRight
.quelle
Python 2, 30 Bytes
quelle
Pyth, 6 Bytes
Erläuterung
Probieren Sie es hier aus
quelle
K5, 5 Bytes
Differenz über (
-/
) Summe über (+/
) je ('
).In Aktion:
quelle
Pyth, 5 Bytes
Probieren Sie es online aus. Testsuite.
M
aps
um auf beiden Eingangslisten, dannF
alte Subtraktion (-
).Dies könnte auch so geschrieben werden
-sQsE
, dass die Listen in zwei Zeilen erscheinen.quelle
𝔼𝕊𝕄𝕚𝕟, 5 Zeichen / 7 Bytes
Try it here (Firefox only).
Wut.
Erläuterung
sum(input1) - sum(input2)
quelle
Common Lisp REPL, SBCL
2824 Bytesschreibe dies in REPL:
dann schreibe Eingabelisten wie diese:
Ich hoffe, es ist in Ordnung, ein solches Listenformat zu verwenden (anstelle von z. B.
'(2 3 4)
). Ich habe die Antwort von coredump als Formel für meine Lösung verwendet und dann seinen Berechnungseffekt auf eine andere Weise erzielt.Erläuterung
Sei
e_1,...,e_n
Elemente der ersten Liste undf_1,...,f_{n-1}
seien Elemente der zweiten Liste. Wir wollen den Ausdruck auswerten.(-(+ e_1 e_2 ... e_n)f_1 f_2 ...f_{n-1})
Es würde bedeuten, Elemente der zweiten Liste von der Summe der Elemente der ersten Liste zu subtrahieren. Der benötigte Ausdruck ist folgendermaßen aufgebaut:backqoute stoppt die Auswertung
#1=
Spart ein bisschen Schreiben, Erinnern,@(read)
,@
Stoppt die Effekte von backquote (damit (read) ausgewertet wird) und entfernt Elemente aus einer Liste.(read)
fragt nach Eingabe#1#
"lädt" Lisp-Objekt, das von gespeichert wurde#1=
#.
Bewertung der gedruckten Darstellung eines Lisp-Objektsquelle