Załóżmy, że nieskończone płytki sześciokątów złożonych z |/\
postaci.
/ \ / \ / \ / \
| | | | |
\ / \ / \ / \ / etc.
| | | |
\ / \ / \ /
Biorąc pod uwagę dane n > 0
wyjściowe, wyślij trójkątną część tego kafelka, jak pokazano w poniższych przykładach, zakotwiczone za pomocą _
w środku sześciokąta:
n=1
\_/
n=2
\/ \/
\_/
n=3
\ | /
\/ \/
\_/
n=4
\/ \ / \/
\ | /
\/ \/
\_/
n=5
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=6
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=7
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=8
\/ \ / \ / \ / \/
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
and so on
Zasady
- Wiodące / końcowe znaki nowej linii lub inne białe znaki są opcjonalne, pod warunkiem, że znaki są odpowiednio ustawione.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Dane wyjściowe mogą być przesyłane do konsoli, zapisane jako obraz, zwrócone jako lista ciągów znaków itp.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Odpowiedzi:
Python 2 , 86 bajtów
Wypróbuj online!
Jedna z sztuczek Erika pozwoliła mi zagrać w golfa 3 bajty! Zaoszczędź 3 bajty dzięki Jonathanowi Allanowi.
Jak to działa
Po pierwsze, pobiera dane wejściowe ze STDIN i przypisuje je do dwóch oddzielnych zmiennych
i
ik
. Następnie, podczas gdy zmiennai
jest prawdziwa, zmniejszamy ją i odpowiednio generujemy ciągi; jest to skrót od pętli od wejścia - 1 aż do zera.Generowanie ciągów
Podzielę to na więcej części:
Po pierwsze, można uzyskać wiodące odstępy
" "*(k+~i)
. Ponieważi
jest mapowany przez zakres (wejście, 0] , musimy go odjąćk
(nasze bezpiecznie przechowywane oryginalne wejście), zmniejszyć i powtórzyć spację wiele razy.+"\\"
- Dodaje znak"\"
do powyższych pól.' / |\ '[i%2::2]
- Generuje nasze dwa ciągi, a mianowicie"/ \ "
i" | "
w następujący sposób:Jeśli
i
jest nieparzyste, i% 2 wynosi 1 , a zatem[i%2::2]
zwraca każde 2 znaki naszego większego łańcucha, zaczynając od indeksu 1 (indeksowane 0).Jeśli
i
jest parzysty, i% 2 to 1 , więc powyższy mechanizm robi to samo, z tym że zaczyna się od indeksu 0 .+~-i*
- Powtarza ciąg generowany powyżej, albo"/ \ "
albo" | "
, I-1 razy, i dołącza go do innych ciągów. Korzyścią operatora bitowego (~
- Komplementacja bitowa, ekwiwalent i odjęty od -1 ) jest to, że nie wymaga nawiasów w tym kontekście.[:k-~i]
- Pobiera wszystkie znaki ciągów połączonych powyżej, aż indeks k- ~ i = k - (-1 - i) = k + 1 + i .+"_/"[i>0:]
- Dodaje to tylko,"/"
jeśli i ≥ 1 , w przeciwnym razie dodaje_/
.Pełny przykład / szczegóły wykonania
Weźmy przykład, jak działają rzeczy dla wejścia 4 :
źródło
i-=1
początek pętli i użyj nieco innej formacji po prawej stronie, aby sprowadzić ją do 87 bajtów .Python 2 , 90 bajtów
Wypróbuj online!
źródło
05AB1E , 33 bajty
Wypróbuj online!
źródło
Mathematica, 131 bajtów
zwraca listę ciągów znaków
Wypróbuj online!
źródło
Retina ,
129119112 bajtówWypróbuj online!
źródło
Węgiel drzewny , 26 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu.
źródło
Python 2 ,
1231121101091009896 bajtówWypróbuj online!
źródło
-1-a
je~a
(tak jak zrobiłem w mojej odpowiedzi).Python 2 , 103 bajty
Wypróbuj online!
źródło
APL (Dyalog) ,
9793 bajtówWypróbuj online!
źródło
SOGL V0.12 ,
2827 bajtówWypróbuj tutaj!
źródło
Haskell ,
9695 bajtówWypróbuj online!
Indeksowane 0 i zwraca listę linii.
źródło
Haskell,
10199 bajtówZwraca listę wierszy.
Wypróbuj online!
Jak to działa:
Edycja: @Laikoni zapisał dwa bajty. Dzięki!
źródło
([1,3..n-1]>>)
można użyć zamiast([1..div n 2]>>)
.Java (OpenJDK 8) ,
315306 bajtówWypróbuj online!
źródło
Java (OpenJDK 8) , 198 bajtów
W końcu otrzymałem poniżej 200 bajtów. Prawdopodobnie opublikuje wyjaśnienie później.
Wypróbuj online!
źródło
JavaScript (ES6),
8985 bajtówPróbny
Pokaż fragment kodu
źródło
CJam, 43
Wypróbuj online
źródło
PHP, 89 + 1 bajtów
Uruchom jako potok z
-nR
lub spróbuj online .źródło
Pyth ,
4644 bajtówWypróbuj tutaj!
źródło