Sie erhalten eine Reihe von Gewichten, und Ihre Aufgabe besteht darin, mit diesen Gewichten ein kleines, ausgewogenes Mobiltelefon zu bauen.
Die Eingabe ist eine Liste von Ganzzahlgewichten im Bereich von 1 bis einschließlich 9. Möglicherweise sind Duplikate vorhanden.
Die Ausgabe ist ein ASCII-Bild eines Mobiltelefons, das beim Aufhängen ausgeglichen wird. Vielleicht am besten am Beispiel gezeigt:
Eingang
3 8 9 7 5
mögliche Ausgabe
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
Sie müssen die angegebenen ASCII-Zeichen verwenden. Die horizontalen und vertikalen Segmente können beliebig lang sein. Kein Teil des Mobiltelefons darf (horizontal oder vertikal) einen anderen nicht verbundenen Teil des Mobiltelefons berühren. Alle Gewichte müssen an einem vertikalen Segment von mindestens 1 Länge aufgehängt sein, und es muss ein vertikales Segment vorhanden sein, an dem das gesamte Mobiltelefon aufgehängt ist.
Die Größe eines Mobil ist die Gesamtzahl der +
, -
und |
Zeichen , es zu bauen erforderlich. Geringere Größen sind besser.
Sie können so viele Verbindungen in ein Segment einfügen, wie Sie möchten. Beispielsweise:
Eingang
2 3 3 5 3 9
mögliche Ausgabe
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
Das Gewinnerprogramm ist dasjenige, das den niedrigsten Durchschnitt der Mobilgrößen für einen Testsatz von Eingaben generieren kann. Der eigentliche Test ist sehr geheim, um Hardcodierung zu verhindern, aber es wird ungefähr so aussehen:
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 7 7
3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7
total_weight_hung_from_point * distance_of_point_from_pivot
auf beiden Seiten des Drehpunkts gleich sein.