Die Staats- und Regierungschefs der Welt haben sich getroffen und schließlich zugegeben, dass der beste (und einzige) Weg, um die Probleme der Weltwirtschaft zu lösen, darin besteht, Bilanz darüber zu ziehen, wie viel sie sich gegenseitig schulden, und sich gegenseitig nur mit riesigen Schecks auszuzahlen. Sie haben Sie eingestellt (ironischerweise mit der niedrigsten möglichen Vertragsrate), um die besten Mittel dafür zu finden.
Nach langen Überlegungen und der Bitte, ein einfaches Beispiel zu zeichnen, haben sie die folgende Spezifikation entwickelt.
Jedes Land ist durch seinen ISO 3166-1 Alpha-2- Code vertreten: US
für die USA, AU
für Australien, JP
für Japan, CN
für China und so weiter ...
- Ein Hauptbuch besteht aus einer Reihe von Ländereinträgen und den Beträgen, die für jedes Land geschuldet werden.
- Der Eintrag jedes Landes beginnt mit der Domain-ID eines Doppelpunkts und der Höhe des Überschusses / Defizits (in Milliarden Euro), gefolgt von einem Semikolon und einer durch Kommas getrennten Liste der Länder und der Höhe (in Milliarden Euro) Euro) schulden sie.
- Wenn ein Land keinem anderen Land etwas schuldet, wird nach diesem Semikolon-Trennzeichen keine Erwähnung dieses Landes eingegeben.
- Defizite werden als negative Zahlen angegeben, Überschüsse als positive Zahlen.
- Werte können auch Floats sein.
- Das Ledger muss aus STDIN entnommen werden. Das Ende des Ledgers wird durch einen Zeilenumbruch in einer leeren Zeile angezeigt. Die Abrechnung muss an STDOUT erfolgen.
Ein Beispiel für ein Hauptbuch:
Input:
AU:8;US:10,CN:15,JP:3
US:14;AU:12,CN:27,JP:14
CN:12;AU:8,US:17,JP:4
JP:10;AU:6,US:7,CN:10
Das System berechnet dann, wie viel jedes Land schuldet und schuldet, und bestimmt seinen Überschuss / Defizit, zum Beispiel für AU:
AU = 8 (aktueller Überschuss) -10 (nach US) -15 (nach CN) -3 (nach JP) +12 (nach US) +8 (nach CN) +6 (nach JP) = 6
Wenn alle Berechnungen abgeschlossen sind, muss eine Liste angezeigt werden:
Output:
AU:6
US:-5
CN:35
JP:8
Ihre Aufgabe ist es, dieses System zu erstellen, das in der Lage ist, eine beliebige Anzahl von Buchungen für eine beliebige Anzahl von Ländern vorzunehmen und zu bestimmen, wie viel Defizit / Überschuss jedes Land aufweist, wenn alles ausgezahlt wird.
Der ultimative Test besteht darin, dass Sie Ihren Code verwenden, um die Schulden zwischen den folgenden Ländern im folgenden Testfall zu begleichen. Diese Zahlen stammen von BBC News ab Juni 2011. ( http://www.bbc.com/news/business-15748696 )
Für die Zwecke der Übung habe ich ihr jeweiliges BIP als aktuellen Überschuss verwendet ... Bitte beachten Sie, dass dies ausschließlich eine Übung der Code-Qualitätssicherung ist ... Es wird hier in dieser Frage keine Rede von einer globalen wirtschaftlichen Lösung sein ... Wenn Sie über Wirtschaft sprechen möchten, gibt es in SE sicher eine andere Subdomain, die sich darum kümmert ...
US:10800;FR:440.2,ES:170.5,JP:835.2,DE:414.5,UK:834.5
FR:1800;IT:37.6,JP:79.8,DE:123.5,UK:227,US:202.1
ES:700;PT:19.7,IT:22.3,JP:20,DE:131.7,UK:74.9,US:49.6,FR:112
PT:200;IT:2.9,DE:26.6,UK:18.9,US:3.9,FR:19.1,ES:65.7
IT:1200;JP:32.8,DE:120,UK:54.7,US:34.8,FR:309,ES:29.5
IE:200;JP:15.4,DE:82,UK:104.5,US:39.8,FR:23.8
GR:200;DE:15.9,UK:9.4,US:6.2,FR:41.4,PT:7.5,IT:2.8
JP:4100;DE:42.5,UK:101.8,US:244.8,FR:107.7
DE:2400;UK:141.1,US:174.4,FR:205.8,IT:202.7,JP:108.3
UK:1700;US:578.6,FR:209.9,ES:316.6,IE:113.5,JP:122.7,DE:379.3
Jetzt sei der wirtschaftliche Retter der Welt!
Regeln:
- Kürzester Code gewinnt ... das ist doch Code-Golf ...
- Bitte geben Sie Ihre Ausgabe des Haupttestfalls mit Ihrer Code-Antwort an ...
JP:4100
?