In der Physik stoßen sich elektrische Ladungen ab und ziehen sich anders als Ladungen an.
Die potentielle Energie zwischen zwei Einheitsladungen, die durch eine Entfernung voneinander getrennt sind, d
gilt 1/d
für gleiche Ladungen und -1/d
für ungleiche Ladungen. Die potentielle Energie eines Ladungssystems ist die Summe der potentiellen Energien zwischen allen Ladungspaaren.
Herausforderung
Bestimmen Sie die potenzielle Energie eines Systems von Einheitsgebühren, die durch eine Zeichenfolge dargestellt werden.
Das ist Code-Golf , also gewinnt die kürzeste Lösung in Bytes.
Eingang
Ein nicht - leerer mehrzeilige Zeichenfolge, die nur aus +
, -
,
und neue Zeilen, wobei jede Zeile mit einer konstanten Breite. Die +
und -
repräsentieren Ladungen von +1 bzw. -1. Zum Beispiel die folgende Zeichenfolge:
+ -
+
(unter Berücksichtigung des Ursprungs von links oben) repräsentiert ein System mit positiven Ladungen bei (4,0) und (1, -1) und einer negativen Ladung bei (6,0).
Alternativ können Sie Eingaben als Zeilenliste übernehmen.
Ausgabe
Eine vorzeichenbehaftete reelle Zahl, die die potenzielle Energie des Ladesystems darstellt. Die Ausgabe sollte auf vier signifikante Stellen oder 10 -4 (je nachdem, welcher Wert niedriger ist) korrekt sein .
Testfälle:
-
Sollte ausgeben 0
. Es gibt keine Ladungspaare, die sich abstoßen oder anziehen lassen, und das Leerzeichen ändert nichts.
+
-
Es gibt nur zwei Gebühren; Sie sind 1 Einheit in vertikaler Richtung und 2 Einheiten in horizontaler Richtung entfernt, sodass ihr Abstand sqrt (5) beträgt. Die Ausgabe sollte -1 / sqrt (5) = sein -0.447213595
.
+ -
- +
Sollte geben -2.001930531
.
- -- -+ - - -+-++-+
+-- + +-- + ++-++ -
---++-+-+- -+- - +-
-- - -++-+ --+ +
- + --+ ++-+ +-
-- ++- + + -+--+
+ +++-+--+ +--+++ +
-+- +-+-+-+ -+ +--+
- +-+- + ---+
- - ++ -+- --+--
Sollte geben -22.030557890
.
---+--- ++-+++- -+ +
-+ ---+++-+- +- + +
---+-+ - ---- +-- -
- + +--+ -++- - -
--+ - --- - -+---+ -
+---+----++ - + +
-+ - ++-- ++- -+++
+----+- ++-+-+ -
++- -+ -+---+ -- -+
+-+++ ++-+-+ -+- +-
Sollte geben 26.231088767
.