Klamki są świetne, ale kiedy otworzysz drzwi, zawsze wgniatają ściany wokół nich. Potrzebuję, abyś wziął udział w sztuce ASCII pokoju, tak jak to:
+---------+--X --X --+-----+
| \ \ |\ | \ |
| \ \ | \ | \|
| X | \ | X
| / | | \ X
| / | \ /
| / | \ / |
+---X --+-------X------+-----+
I wyślij pokój ze stoperami, tak jak to:
+---------+--X --X --+-----+
| \ . \ |\ | \.|
| \ \ | \ .| \|
| X | \ | X
| / | |. \ X
| / .| \ /
|. / | .\ / |
+---X --+-------X------+-----+
Specyfikacja:
- Pomieszczenie ASCII (wejście) składa się z
+
,-
i|
. Te postacie są czysto kosmetyczne; wszyscy mogliby być+
s, ale to wyglądałoby okropnie. Będzie także zawierać zawiasy (X
) i drzwi (/
lub\
). - Drzwi składają się z
/
lub\
. Zaczynając od znaku „zawiasu”, czyliX
idą bezpośrednio po przekątnej (zmiana 1 wx
i 1 wy
) dla 2 lub więcej jednostek (postaci). Aby dowiedzieć się, gdzie umieścić odbojnik do drzwi (zawsze jest tylko jeden odbojnik na drzwi), znajdź drzwi do drzwi. Drzwi zawsze zaczynają się od jednego zawiasu i stamtąd przechodzą taką samą liczbę miejsc, jak długość drzwi w górę, w dół, w lewo lub w prawo. Następnym miejscem po tym będzie zawsze ściana. Na przykład w tych drzwiach drzwi są oznaczone przez
D
s:\ \ ---DDX-----
Gdy znajdziesz drzwi, dowiedz się, czy musisz dotrzeć do drzwi w prawo, czy w lewo. Na przykład w powyższych przykładowych drzwiach musisz iść w kierunku zgodnym z ruchem wskazówek zegara, aw tym przypadku musisz iść w kierunku przeciwnym do ruchu wskazówek zegara:
\ <- \ ) -----X ---
Kiedy już wiesz, którą drogą iść, idź tą drogą (ignorując drzwi), aż dojdziesz do ściany.
Oto wizualizacja tego dla przykładowych drzwi powyżej:
Niebieski jest bramą, pomarańczowy stwierdza, że musisz iść w prawo, a czerwony kontynuuje w prawo, aż do ściany.
Po dotarciu do ściany przejdź (na długości drzwi) odstępy od zawiasu (
X
) na tej ścianie, odsuń jedno miejsce od ściany w kierunku drzwi (aby nie umieścić odbojnika bezpośrednio na ścianie) i włóż.
tam. Oto te same przykładowe drzwi pokazujące sposób ustawienia blokady drzwi:\ \ . ---DDX12---
Powtórz dla wszystkich drzwi i wyślij wynik! Użyj przykładowego wejścia u góry tego postu jako przypadku testowego, aby sprawdzić, czy Twój program jest prawidłowy.
Pamiętaj, że nie musisz obsługiwać drzwi, które nie pasują do ich ścian, takich jak:
| / | / | / | / +-X --
Lub:
/ / / +-X -- | |
- To jest golf-golf , więc wygra najkrótszy kod w bajtach.
Odpowiedzi:
Scala, 860 bajtów
Gra w golfa :
Bez golfa :
Z perspektywy czasu używanie OOP było zdecydowanie niewłaściwym podejściem. Gdybym mógł to zrobić jeszcze raz, zdecydowanie wybrałbym kilka zakodowanych tabel prawdy.
źródło