AKTUALISIERTE WERTUNG : Da diese Herausforderung schwieriger ist als erwartet, habe ich die Bewertung angepasst. Ein Programm, das eine einzelne Spiegeleingabe lösen kann, ist eine gültige Antwort. Anspruchsvollere Programme erhalten einen Bonus auf ihre Punktzahl.
Bei PPCG gab es mehrere Rätsel, um einen Laserpfad in einer Schachtel mit Spiegeln zu finden. In diesem Puzzle musst du eine Schachtel mit Spiegeln erstellen , die mit einer Reihe von Laserzielen übereinstimmen.
Sie erhalten eine Box und eine Spezifikation, in die Laser ein- und aussteigen sollen. Ihr Programm muss genau N doppelseitige Spiegel in der Box platzieren, um die Spezifikation zu erfüllen. Die Spiegel müssen um 45 Grad abgewinkelt sein, können jedoch vorwärts oder rückwärts geneigt sein.
Eingang
Ihr Programm sollte ein Box-Grid über STDIN, ein Befehlszeilenargument oder eine Datei in den folgenden Formatbeispielen akzeptieren:
+--G--+ +abcde+
G | f/////d
| /| a// c
+-----+ f |
+-b-e-+
Die Buchstabenpaare ([a-zA-Z] können verwendet werden) geben die Eingabe / Ausgabe von bis zu 52 Lasern an. In der Box wird N sein/
Spiegel. Die Boxmaße betragen 3 <= B, H <= 200. Die Box besteht aus+|-
Zeichen. Es kann eine beliebige Anzahl von Spiegeln in der Box geben, einschließlich Null.
Ausgabe
Die Ausgabe sollte mit der Eingabe übereinstimmen, außer dass die /
Zeichen verschoben und / oder in \
Zeichen geändert werden können . Ihr Programm sollte eine korrekte Mirror-Box-Zeichenfolge an STDOUT oder eine Datei senden, wobei die neue Zeile optional nachgestellt wird. Wenn keine Platzierung von Spiegeln die Eingangsspezifikation erfüllen kann, wird ausgegeben Impossible\n
. Beispiele für mögliche Lösungen:
+--G--+ +abcde+
G / | f \ \ d
| | a/ \ c
+-----+ f / //|
+-b-e-+
Testbeispiel
Eingang:
+abcdefghijklmnopqrstuvwxyA-+
|/////////////// |
|/////////////// |
| |
+-Abcdefghijklmnopqrstuvwxya+
Beispielausgabe:
+abcdefghijklmnopqrstuvwxyA-+
|\ \|
|/ / |
|\\\\\\\\\\\\\\\\\\\\\\\\\\ |
+-Abcdefghijklmnopqrstuvwxya+
Wertung (AKTUALISIERT)
Dies ist Code-Golf mit Boni. Sie sollten mit Ihrer Antwort angeben, wie viele Spiegel Ihr Programm lösen kann (N). Ihre Punktzahl ist die Länge Ihres Programms in Bytes geteilt durch N. Dies ermöglicht den Teilnehmern an einem einfachen Programm, belohnt jedoch ambitioniertere Programmierer mit einem Bonus.
Standardlücken sind nicht erlaubt.
* 2^30
Komponente