Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą i drukuje lub zwraca obraz ASCII przedstawiający strzałę łuczniczą skalowaną zgodnie z danymi wejściowymi.
Jeśli wejście jest 1
wyjściem jest
/\
/ \
\__/
||
||
||
||
||
||
||
||
/||\
/ || \
/ || \
// \\
/ \
Jeśli wejście jest 2
wyjściem jest
/\
/ \
/ \
/ \
\ /
\____/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ |__| \
/ / \ \
/ / \ \
// \\
/ \
Jeśli wejście jest 3
wyjściem jest
/\
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\______/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ |____| \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
// \\
/ \
Jeśli wejście jest 4
wyjściem jest
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\________/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ |______| \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
// \\
/ \
Wzór jest kontynuowany dla większych liczb wejściowych - strzałka jest odpowiednio skalowana w górę.
Zauważ, że dla każdego wejścia N:
- Grot strzały jest pięciokątem z podkreśleniem 2 × N u podstawy, N cięciami z każdej strony rozciągającymi się od podstawy i 2 × N cięciami z dwóch stron, które tworzą końcówkę strzały.
- Wał (łącznie z częścią w ramach fletchingu) składa się z 11 × N linii dwóch pionowych prętów oddzielonych 2 × (N-1) odstępami. Ostatnia linia ma podkreślenia zamiast spacji.
- Fletching otacza dolne linie 3 × N szybu. Dwie linie cięć 2 × N rozciągają się po przekątnej w dół z każdej strony wału i są połączone pionowymi kolumnami cięć.
- Pełna strzałka ma wysokość 16 × N linii i szerokość 6 × N znaków.
W twoich wynikach nie powinno być pustych linii przed końcem strzałki i tylko do jednej końcowej nowej linii.
Żadna z linii wyjściowych nie powinna mieć niepotrzebnych spacji wiodących (lewa krawędź fletchingu powinna znajdować się jak najdalej w lewo), ale dowolna z linii może mieć dowolną liczbę spacji końcowych.
Najkrótsze przesłanie w bajtach wygrywa.
Odpowiedzi:
Pyth,
149147146144146Edytuj 2015-9-23: miał błąd, naprawiony na 2 bajty. Być może uda się skrócić, nie mam teraz czasu.
Nadal wydaje się zbyt długi, aby odpowiedzieć na Pyth.
Wyjaśnienie (prawie aktualne)
Generalnie transponuję strzałkę, ponieważ jej format linii jest znacznie prostszy. Ponadto generuję tylko połowę, a następnie odwracam ją, aby zaoszczędzić dużo bajtów.
źródło
Perl, 298 bajtów
Wieloliniowy:
Wynik:
Dziękuję Domowi Hastingsowi za pomoc w oszczędzeniu 5 (i zliczaniu) bajtów
źródło
$w=<>
deklarację do pierwszego użycia, jakfor$y(0..($w=<>)*16-1){
to się dzieje, i można usunąć wiele nawiasów (niektóre zmieniają dane wyjściowe, ale myślę, że i tak je przechodzisz!). Również twój'_'
może być dosłowny_
. Mam nadzieję, że to pomaga!Julia, 452 bajtów
Ta odpowiedź nie jest zbyt natchniona i nie grałem w nią poza oczywistymi oczywistościami. Mam nadzieję, że będzie to wynik dla innych ludzi do pokonania.
Wypróbuj to:
bez golfa:
źródło
Ruby, 233
Szczególnie cieszę się z techniki owijania, którą narysowałem
\
w głowie jednym wyrazem twarzy (i podobnie/
)Niegolfowany w programie testowym
źródło