Oto sztuka ASCII 4-kierunkowego skrzyżowania:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
(Zwróć uwagę, jak poziome drogi mają 3 rzędy wysokości, podczas gdy pionowe drogi mają 5 kolumn szerokości. Jest to ze względów estetycznych, ze względu na prostokątną czcionkę).
Twoim wyzwaniem jest stworzenie tej sztuki ASCII. Jednak, jak zapewne wszyscy wiecie, nie każde skrzyżowanie ma drogę biegnącą w każdym kierunku. To konkretne skrzyżowanie idzie NESW, ale niektóre skrzyżowania mogą iść na przykład NW:
| | |
| |
| | |
| |
| | |
-----+-----+
| |
- - -| |
| |
-----+-----+
Lub może pójść SWE:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
A może nawet pójść E, tylko w jednym kierunku (chociaż trudno nazwać to skrzyżowaniem , ale staraj się unikać nadmiernej pedantyczności):
+-----+-----
| |
| |- - -
| |
+-----+-----
Musisz napisać program lub funkcję, która może łatwo wygenerować dowolną z tych kombinacji. Mówiąc dokładniej, Twoim wyzwaniem jest napisanie programu lub funkcji, która pobiera ciąg kierunków, składający się z NESW, jako danych wejściowych, danych wyjściowych lub zwraca tę sztukę ASCII skrzyżowania z drogami wskazującymi w tych kierunkach. Kierunki te mogą występować w dowolnej kolejności, ale wejście nie będzie zawierać żadnych znaków z wyjątkiem N, E, S, lub W. Jeśli chcesz, możesz zamiast tego poprosić o wprowadzanie małych liter, ale musisz podać to w swojej odpowiedzi. Możesz również założyć, że wszystkie dane wejściowe będą zawierać co najmniej jeden kierunek.
Ostatni przykład miał spacje wiodące na każdej linii, ponieważ nie ma drogi prowadzącej na zachód. Jeśli nie masz drogi prowadzącej na zachód, te wiodące pola są opcjonalne. To:
+-----+-----
| |
| |- - -
| |
+-----+-----
Byłby również akceptowalnym wyjściem. Podobnie, jeśli Nlub Szniknie, puste linie tam są opcjonalne. Dozwolony jest jeden końcowy znak nowej linii, a końcowe spacje są dozwolone, o ile wynik jest wizualnie taki sam.
Możesz pobierać dane wejściowe i wyjściowe w dowolnym rozsądnym formacie, takim jak STDIN / STDOUT, argumenty wiersza poleceń, pliki, argumenty funkcji / zwracane wartości itp.
Jak zwykle jest to gra w golfa , więc postaraj się uzyskać możliwie najkrótszą odpowiedź w jakimkolwiek języku, którego używasz!
Próbka IO:
NESW:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
NS:
| | |
| |
| | |
| |
| | |
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
S:
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
EW:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
SE:
+-----+-----
| |
| |- - -
| |
+-----+-----
| | |
| |
| | |
| |
| | |

Ena przykład jeśli nie ma )? Czy dozwolone są wiodące i końcowe puste linie, jeśli nie maNlubS?