Guten Nachmittag Golfer,
Unsere heutige Herausforderung ist von den XKCD-Comics 356 und 370 inspiriert . Wir werden ein Programm schreiben, um den Widerstand einer Gruppe von Widerständen zu berechnen. Eine Warnung, dass dies fast schwierig genug ist, um eine Code-Herausforderung zu rechtfertigen, aber ich denke, dass es eine gewisse Kunst ist, etwas komplexere Programme in einem Golfformat zu schreiben. Die niedrigste Anzahl von Charakteren gewinnt.
Die Berechnung des Widerstands basiert auf den folgenden zwei Formeln:
- Wenn die Widerstände in Reihe geschaltet sind, ist der Widerstand die Summe des Widerstands jedes Widerstands
- Wenn die Widerstände parallel sind, ist der Widerstand die Umkehrung der Summe der Umkehrung des Widerstands jedes Widerstands
Also - zum Beispiel:
Ihre Herausforderung besteht darin, mit möglichst wenigen Zeichen den Widerstand einer Gruppe von bis zu 64 Widerständen zu berechnen. Ich entschuldige mich für die Komplexität, insbesondere der Eingaberegeln. Ich habe versucht, sie so zu definieren, dass jede Sprache verwendet werden kann.
Jeder Widerstand wird mit 2 oder mehr anderen Widerständen verbunden.
Die Eingabe ist garantiert gültig, mit nur einem Eingangs- und einem Austrittspunkt, die eine Verbindung herstellen
Das Netzwerk wird serienparallel sein, um zu verhindern, dass mehr Mathematik erforderlich ist als dargestellt
Die Eingabe erfolgt über Datei, Argument oder Standard, je nachdem, was für Ihre Sprache geeignet ist.
Der Eingang besteht aus einer Reihe von Zeilenumbrüchen, die aus einer Ganzzahl des Widerstands des Widerstands bestehen, und Leerzeichen, die die IDs der Widerstände trennen, mit denen eine Seite des Widerstands verbunden ist.
Die ID des ersten Widerstands ist 1 und wird für jeden aufeinanderfolgenden Widerstand um eins erhöht
Der Start hat immer eine ID von 0
Der Endwiderstand hat immer einen Widerstand von 0 Ohm und nur die in seiner Leitung definierten Anschlüsse
Zum Beispiel:
Könnte dargestellt werden als
3 0
6 1
1 0
5 0
0 2 3 4
- Die Ausgabe kann in Standard oder Datei erfolgen. Es kann auf eine der folgenden Arten dargestellt werden:
- Eine Zahl mit mindestens 2 Dezimalstellen, gefolgt von einer neuen Zeile
- Ein Bruch, der aus einer Ganzzahl (dem Zähler), einem Schrägstrich und einer weiteren Ganzzahl (dem Nenner) besteht, gefolgt von einer neuen Zeile. Die Fraktion muss nicht diejenige sein, die in ihrer niedrigsten Form vorliegt - 4/4 oder 10/8 sind beispielsweise akzeptabel. Der Bruch muss innerhalb von 1/100 genau sein. Es gibt keinen Bonus für die perfekte Genauigkeit - dies ist eine Krücke, mit der Sprachen ohne Fest- oder Gleitkommaoperationen miteinander konkurrieren können.
Ich hoffe, das deckt alle Punkte ab. Viel Glück!
1 2/1 0/0 1
gültig?
/
ist kein Backslash. Meinten Sie "\" oder einen Schrägstrich?