Wyzwanie
Twój program lub funkcja zaakceptuje pojedynczy ciąg wejściowy ze STDIN lub parametr funkcji. Możesz założyć, że dane wejściowe będą zawierać tylko znaki alfabetyczne (a-zA-Z), spacje i kropki. W danych wejściowych nie jest rozróżniana wielkość liter, więc powinieneś traktować „a” dokładnie tak samo, jak traktowałbyś „A”.
Dla każdego znaku w ciągu wyświetlisz reprezentację budynku zgodnie z następującą specyfikacją.
Każdy budynek musi mieć dach oznaczony znakiem podkreślenia w górnej linii, a następnie ukośnikiem, spacją i ukośnikiem w drugiej linii.
_
/ \
Będziesz wtedy miał kilka pięter, pasujących do litery (a = 1, b = 2, c = 3 itd.), Które są reprezentowane przez ścianę (|) po każdej stronie i spację w środku. Dolna podłoga (i tylko dolna podłoga) powinna mieć fundament, który jest podkreśleniem między ścianami. Lubię to...
|_|
Na przykład „b” wyglądałoby tak
_
/ \
| |
|_|
Teraz wiemy, że bardzo wysokie, wąskie budynki nie mogą stać i muszą się poszerzyć u podstawy, więc żaden budynek nie może stanąć wyżej niż trzy piętra bez dodatkowego wsparcia. Więc co trzy poziomy (nie mniej) powinieneś dodać „warstwę rozszerzającą”. Warstwa poszerzająca składa się z ukośnika i odwrotnego ukośnika bezpośrednio nad ścianami sekcji poniżej, a sekcja poniżej powinna być o dwie przestrzenie szersza niż sekcja powyżej. Dodatkowa warstwa nie wlicza się do wysokości budynku.
Budynki nie powinny się pokrywać, ale nie powinny mieć między nimi niepotrzebnych przestrzeni, a ziemia jest zawsze płaska, więc wszystkie budynki powinny mieć bazę na tym samym poziomie.
Na przykład „abcdefga” będzie wyglądać tak.
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
Spacje na wejściu łańcucha powinny być reprezentowane przez podwójną spację.
Kropki na wejściu łańcucha powinny być reprezentowane przez taki gruz.
/\/\
Dalsze przykłady
Dane wejściowe = Hello world.
Wyjście =
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
Dane wejściowe = lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
Dane wejściowe = a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
Zasady
- Oczywiście jest to kod golfowy, wygrywa najniższy wynik w bajtach
- Obowiązują standardowe zasady dotyczące luk
- Dozwolona jest dowolna liczba dodatkowych pustych wierszy przed wyjściem lub po nim
- Możesz wybrać, aby wydrukować cały wynik w jednym ciągu lub zaoferować wynik jako tablicę, w której każdy element reprezentuje jeden wiersz wyniku, lub wysłać do STDOUT
Uwaga
To jest mój pierwszy post na PPCG, więc nie przejmuj się. To było przez piaskownicę. Wszelkie negatywne punkty lub możliwe ulepszenia prosimy pisać jako komentarz, a ja zrobię, co mogę
[a,z]
, [1.26]
Parts Mego wymienione. Opcjonalne jest często najlepsze (chyba że jest to kluczowa część wyzwania (nie ma go tutaj).
[a,z]
i[A,Z]
do[1,26]
wydaje się wymóg bezcelowe. O wiele lepiej byłoby po prostu użyć liczb całkowitych z listy jako danych wejściowych (jako danych0
wejściowych dla gruzu). Również publikowanie wyzwania po tym, jak zostało w piaskownicy tylko przez 21 godzin , bez oczekiwania na głosy lub opinie od więcej niż jednego użytkownika, nie jest liczone jako „przejście przez piaskownicę”. Zaleca się pozostawianie wyzwań w piaskownicy na co najmniej 48-72 godziny, aby dać ludziom dużo czasu na ich przejrzenie.