Napisz program lub funkcję, która rysuje pasmo górskie, w którym każdy kolejny większy szczyt jest „za” tymi z przodu i naprzemiennie, która strona jest widoczna.
Jest to pasmo górskie wielkości 1
/\
Jest to pasmo górskie wielkości 2
/\
/\ \
Jest to pasmo górskie wielkości 3
/\
/ /\
/ /\ \
Jest to pasmo górskie wielkości 4
/\
/\ \
/ /\ \
/ /\ \ \
Jest to pasmo górskie wielkości 5
/\
/ /\
/ /\ \
/ / /\ \
/ / /\ \ \
I tak dalej.
Wkład
Pojedyncza dodatnia w dowolnym, wygodnym formacie , n > 0
.
Wydajność
Reprezentacja ASCII pasma górskiego zgodnie z powyższymi zasadami. Wiodące / końcowe znaki nowej linii lub inne białe znaki są opcjonalne, pod warunkiem, że piki odpowiednio się wyrównują.
Zasady
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- 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).
JavaScript (ES6), 75 bajtów
Pełny program jest obecnie nieco krótszy niż funkcja rekurencyjna:
źródło
Python 2, 67 bajtów
Drukuje wiersz po wierszu, akumulując ciąg
s
przez naprzemienne dodawanie ukośnika w lewo lub w prawo w oparciu o bieżący parzystośćn
. Przedrostki zen
spacjami.Alternatywnym sposobem aktualizacji była ta sama długość:
Metoda rekurencyjna była dłuższa (70 bajtów).
źródło
Haskell, 77 bajtów
Stosowanie:
Drukuje wiersz po wierszu, kumulując ciąg s, naprzemiennie dodając ukośnik w lewo lub w prawo na podstawie bieżącej parzystości n. Przedrostki ze spacjami n-1.
źródło
Partia, 202 bajty
Pobiera dane wejściowe jako parametr wiersza polecenia. Wpada, aby wykonać ostatnią pętlę.
źródło
Rubin, 61 bajtów
Dość prosty port odpowiedzi JavaScript ETHproductions .
Zobacz na repl.it: https://repl.it/EPU5/1
Bez golfa
źródło
Haskell,
117 107 105 9790 bajtówWypróbuj na Ideone. Edycja: Zapisano 8 bajtów dzięki pomysłowi Neila.
Wersja bez golfa:
Podejście rekurencyjne. Kształt dla
n
jest generowany przez dodanie spacji przed każdą liniąn-1
kształtu i pobranie ostatniego wierszan-1
i dodanie"/ "
przed, jeślin
jest nieparzyste lub" \"
po, jeślin
jest parzyste ... tak przynajmniej pomyślałem, zanim zauważyłem, że ten ostatni krok jest odwrócony dla wszystkie rekurencyjne kroki, gdy finałn
jest nieparzysty. Dlategob
przekazywana jest flaga, która naprzemiennie wywołuje rekurencję i określa, czy następna część góry zostanie dodana w lewo czy w prawo.źródło
b
zaodd n
każdym razem, nie możesz po prostu przekazać flagi na początku i odwrócić ją przy każdym rekurencyjnym połączeniu? Coś jakf n = unlines(p 0 n)
ilet m = p (1-b) (n-1)
.-b
jest kolejnym char-offem.b
być0
lub1
.Java 7130 bajtów
Bez golfa
źródło
n%2
don--%2
i oba--n
don
. EDYCJA: I jeszcze 1, dodając,x=s+"\n"
i zmieniając obas+"\n"
nax
. (Więc w sumie:String f(int n,String s){String l="",x=s+"\n";for(int i=1;i++<n;l+=" ");return n>1?n--%2<1?l+x+f(n,s+" \\"):l+x+f(n,"/ "+s):s;}
127 bajtów )C ++ 138 (funkcja)
Funkcja: -
Pełny program: -
UWAGA: funkcja
_getch()
może mieć różne nazwy prototypów w różnych kompilatorach.źródło