ZAKTUALIZOWANY PUNKTACJA : Ponieważ to wyzwanie jest trudniejsze niż się spodziewałem, poprawiłem punktację. Program, który może rozwiązać pojedyncze wejście lustrzane, jest poprawną odpowiedzią. Bardziej wyrafinowane programy otrzymują premię do swojego wyniku.
Na PPCG pojawiło się kilka zagadek pozwalających znaleźć ścieżkę lasera w pudełku z lustrami. W tej układance musisz stworzyć pudełko luster, które pasują do wielu miejsc laserowych.
Dostajesz pudełko i specyfikację, w której lasery mają wchodzić i wychodzić. Twój program musi umieścić dokładnie N dwustronnych lusterek w pudełku, aby spełnić specyfikację. Lustra muszą być ustawione pod kątem 45 stopni, ale mogą być nachylone do przodu lub do tyłu.
Wejście
Twój program powinien zaakceptować siatkę pól poprzez STDIN, argument wiersza poleceń lub plik w następujących przykładach formatu:
+--G--+ +abcde+
G | f/////d
| /| a// c
+-----+ f |
+-b-e-+
Pary liter (można zastosować [a-zA-Z]) wskazują wejście / wyjście do 52 laserów. Wewnątrz pudełka będzie N /
lusterek. Wymiary pudełka będą wynosić 3 <= W, H <= 200. Pudełko składa się ze +|-
znaków. W pudełku może znajdować się dowolna liczba kopii lustrzanych, w tym zero.
Wynik
Dane wyjściowe powinny pasować do danych wejściowych, z tym wyjątkiem, że /
znaki można przenosić i / lub zamieniać na \
znaki. Twój program powinien wysłać poprawny ciąg kopii lustrzanej do STDOUT lub pliku, opcjonalnie wstawić nowy wiersz. Jeśli żadne umieszczenie serwerów lustrzanych nie może spełnić specyfikacji wejściowej, wyjdź Impossible\n
. Przykłady możliwych rozwiązań:
+--G--+ +abcde+
G / | f \ \ d
| | a/ \ c
+-----+ f / //|
+-b-e-+
Przykład testowy
Wejście:
+abcdefghijklmnopqrstuvwxyA-+
|/////////////// |
|/////////////// |
| |
+-Abcdefghijklmnopqrstuvwxya+
Przykładowe dane wyjściowe:
+abcdefghijklmnopqrstuvwxyA-+
|\ \|
|/ / |
|\\\\\\\\\\\\\\\\\\\\\\\\\\ |
+-Abcdefghijklmnopqrstuvwxya+
Punktacja (AKTUALIZACJA)
To jest golf golfowy z bonusami. Powinieneś wskazać swoją odpowiedzią liczbę kopii lustrzanych, które Twój program może rozwiązać (N). Twój wynik to długość twojego programu w bajtach podzielona przez N. To pozwala ludziom wejść z prostym programem, ale nagradza więcej programistów ambicji premią.
Standardowe luki zabronione.
* 2^30
komponentu