Oto prosty bałwan artystyczny ASCII :
_===_
(.,.)
( : )
( : )
Zróbmy mu przyjaciół. Będzie to ogólny wzorzec dla naszych śnieżnych artystów ASCII:
HHHHH
HHHHH
X(LNR)Y
X(TTT)Y
(BBB)
Wiodące miejsca i nawiasy są zawsze takie same dla wszystkich snowpeople. Różne litery reprezentują sekcje wzoru, które można indywidualnie zmieniać. Każda sekcja ma dokładnie cztery ustawienia wstępne dla tego, jakie znaki ASCII mogą ją wypełnić. Mieszając i dopasowując te ustawienia wstępne dla wszystkich ośmiu sekcji, możemy stworzyć różnych snowpeople.
Wszystkie ustawienia wstępne
(Zauważ, że spacje są umieszczane w przeciwnym razie puste linie, więc kształt przekroju jest zawsze poprawny.)
H jest dla Hat
Słomiany kapelusz
_===_
Meksykański kapelusz
___ .....
Fez
_ /_\
-
___ (_*_)
N oznacza nos / usta
Normalna
,
Kropka
.
Linia
_
Żaden
L oznacza lewe oko
Kropka
.
Większa kropka
o
Największa kropka
O
Zamknięte
-
R oznacza prawe oko
(Ta sama lista co dla lewego oka.)
X oznacza lewe ramię
Normalne ramię
<
Ramię w górę
\
Ramię w dół
/
Żaden
Y oznacza prawą rękę
Normalne ramię
>
Ramię w górę
/
Ramię w dół
\
Żaden
T jest dla tułowia
guziki
:
Kamizelka
] [
Wewnętrzne ramiona
> <
Żaden
B oznacza bazę
guziki
:
Stopy
" "
Mieszkanie
___
Żaden
Wyzwanie
Napisz program, który pobierze ośmioznakowy ciąg znaków (w formacie stdin lub wiersza poleceń) w formacie HNLRXYTB
, w którym każda litera jest cyfrą od 1 do 4, która wskazuje, które ustawienie wstępne należy zastosować dla odpowiedniej sekcji snowperson. Wydrukuj cały snowperson na stdout.
Na przykład dane wejściowe 11114411
to bałwan na górze strony. (Po pierwsze 1
: ma słomkowy kapelusz, po drugie 1
: ma normalny nos itp.)
Kolejny przykład, snowperson dla danych wejściowych 33232124
:
_
/_\
\(o_O)
(] [)>
( )
Detale
Dowolne ilości i kombinacje spacji wiodących / końcowych i nowych / wiodących znaków nowej linii są dozwolone, dopóki ...
- snowperson ma odpowiednio ustawione wszystkie sekcje względem siebie, oraz
- nigdy nie ma więcej niż 64 znaków białych znaków (ogólny wzór to tylko 7 × 5, więc prawdopodobnie nie przekroczysz tego limitu).
Nie trzeba drukować wierszy / kolumn wzoru, jeśli zawierają one tylko białe znaki. np. pusta linia słomkowego kapelusza nie jest wymagana.
Musisz użyć kolejności części, jak podano powyżej.
Zamiast programu możesz napisać funkcję, która przyjmuje ciąg cyfr jako argument. Dane wyjściowe powinny być wydrukowane normalnie lub zwrócone jako ciąg.
- Jeśli chcesz, możesz traktować dane wejściowe jako liczbę całkowitą zamiast ciągu.
Punktacja
Najkrótszy kod w bajtach wygrywa.
Pytanie dodatkowe: Który z 65536 różnych snowparian jest twoim ulubionym?