Popatrz! To labirynt ASCII! Soo coolzors, amazeballs i takie tam.
+-+-----+---+
| | | |
| | ++ | |
| | ++ +-+ |
| | |
+-------+ | |
| | |
+---------+-+
Ale, ale, ale ... ustalenie, w którą stronę idą wszystkie części labiryntu, jest uciążliwe. Chcę tylko narysować układ, a labirynt zamieni się w kulę bez mnóstwa czasu.
Co jeśli mógłbym to narysować w ...
#############
# # # #
# # ## # #
# # ## ### #
# # #
######### # #
# # #
#############
To byłoby takie słodkie!
Reguły (ponieważ reguły są fajne):
- Napisz kod, aby przekonwertować ciąg znaków na labirynt ascii i wyślij wynik.
- Wszelkie znaki niebiałe będą odczytywane jak ściana.
- Każdy znak ściany decyduje, która postać będzie oparta na swoich sąsiadach (tylko w kierunku północnym, południowym, wschodnim i zachodnim).
- Jeśli znak nie ma sąsiadów niebędących spacjami, będzie to znak plus (+).
- Jeśli znak ma sąsiadów zarówno w kierunku pionowym (północ-południe), jak i poziomym (wschód-zachód), będzie to znak plus (+).
- Jeśli znak ma sąsiadów tylko w kierunku pionowym (północ-południe), będzie to symbol potoku (|).
- Jeśli znak ma sąsiadów tylko w kierunku poziomym (wschód-zachód), będzie to znak minus (-).
- Dane wejściowe mogą być pojedynczymi łańcuchami (z wierszami oddzielonymi znakami nowej linii lub tablicą ciągów).
- Wszystkie znaki wejściowe będą drukowalnymi znakami ASCII, nie musisz zajmować się rozszerzonymi zestawami znaków.
- Użyj dowolnego starego języka, jaki chcesz.
- Jeśli przed linią jest biała spacja, powinna ona być taka sama w każdej linii. Wszelkie spacje po każdym wierszu wyjścia są w porządku.
- Spróbuj rozwiązać go przy użyciu najmniejszej liczby bajtów.
Przypadki testowe:
1: Ramka
Wejście:
##########
# #
# #
# #
##########
Wynik:
+--------+
| |
| |
| |
+--------+
2: Klasyczny labirynt
Wejście:
#################
# #
# ##### # ##### #
# # # # # #
# # # # ##### # #
# # # # #
### # ####### # #
# # # # # #
# ### # ## # ##
# # ## #
#################
Wynik:
--------+-------+
| |
| --+-+ | ----+ |
| | | | | |
| + | | +---- | |
| | | | |
+-- | +----+- | |
| | | | | |
| --+ | ++ | -+
| | ++ |
+-----+-++----+--
3: Zielone jajka, stary.
Wejście:
I do not like green eggs and ham.
I do not like them, sam I am.
Would you like them here or there?
I would not like them anywhere!
Wynik:
| ++ +++ ++++ +++++ +++- -++ ----
| ++ +++ ++++ +++++ +++ + +++
+-+++ +++ ++++ ++++ ++++ ++ +++---
| +++-+ +++ ++++ ++-+ +++++++++
4: Sople
Wejście:
Word Icicle!
Word Icicle
Word cicle
ord cicle
ord icle
ord i le
or i le
or i l
or l
or
r
Wynik:
++++ ++++++-
++++ ++++++
++++ +++++
+++ +++++
+++ ++++
+++ | ++
++ | ++
++ | |
++ |
++
|
-s, ani dlaczego klasyczny labirynt nie ma czterech +s w dolnym rzędzie.
smallest number of characters, a nie bajty?
+pośrodku pierwszego rzędu 2) !sople lodu powinny zostać zastąpione przez -. Czy mógłbyś dokładnie sprawdzić te?
whitespace, po prostu nie myśli tylko miejsca? Nie chcę obsługiwać kart i prawdopodobnie nie chcesz, żebym również przekształcał nowe wiersze
---?