Twoim zadaniem jest stworzenie programu lub funkcji, która przyjmuje jako liczbę naturalną ( n
) od 1 do 25 (włącznie) i drukuje izometryczną reprezentację slajdu i drabiny z n
liczbą szczebli.
Specyfikacja drabiny i zjeżdżalni
Drabina jest zawsze ustawiona z lewej strony, a zjeżdżalnia z prawej strony. Oglądamy go od strony drabiny, więc część slajdu jest zasłonięta na trzech najwyższych poziomach. Szczeble są reprezentowane przez cztery myślniki ( ----
), a boki drabiny i przesuwane przez myślniki ( /
i \
). Poniżej znajduje się schemat przedstawiający wzory przestrzeni potrzebnych do slajdu z pięcioma szczeblami.
Slide Blank space count
/----/\ 1234/----/\
/----/ \ 123/----/12\
/----/ \ 12/----/1234\
/----/ \ \ 1/----/1\1234\
/----/ \ \ /----/123\1234\
Przykłady
>>1
/----/\
>>3
/----/\
/----/ \
/----/ \
>>4
/----/\
/----/ \
/----/ \
/----/ \ \
>>10
/----/\
/----/ \
/----/ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
To jest golf golfowy, więc wygrywa odpowiedź z najmniejszą liczbą bajtów.
Uwaga: końcowe białe znaki są dopuszczalne na wyjściu, o ile nie przekraczają długości linii.
Odpowiedzi:
Retina ,
817252 bajtówLiczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
Wyjaśnienie
Program składa się z czterech etapów, z których wszystkie są substytucjami wyrażeń regularnych (z kilkoma funkcjami specyficznymi dla siatkówki).
5
Jako wyjaśnienia użyję danych wejściowych .Scena 1
To zamienia dane wejściowe
n
wn
spacje, po/\ \
których stanie się szczyt drabiny / zjeżdżalni:Na razie pokażemy slajd w całości i przedstawimy drabinę tylko lewą ręką
/
.Etap 2
Niestety,
n
spacje są o jeden więcej, niż potrzebujemy, więc ponownie usuwamy pierwszą postać. Mamy teraz:Etap 3
Czas rozwinąć pełną strukturę. Wiedza, gdzie jest góra, jest wystarczająca, aby zbudować całość, ponieważ możemy po prostu przedłużyć ją o jedną linię na raz, przesuwając drabinę i zjeżdżalnię o dwie spacje.
+
Mówi Retina powtórzyć ten etap w pętli aż wyjście przestaje zmianę (w tym przypadku, ponieważ regex zatrzymuje dopasowanie). Jeśli chodzi o sam regex, po prostu dopasowujemy/
ostatnią linię i wszystko po niej, a także dopasowujemy jedną spację przed nią, co oznacza, że nie może ona już pasować po/
osiągnięciu pierwszej kolumny.Oto, co zastępujemy:
Tak więc przy każdej iteracji dodaje to jedną linię do łańcucha, aż do tego:
Etap 4
Wszystko, co pozostało, to dobrze ustawić drabinę. To naprawdę proste, po prostu dopasowujemy
/
i kolejne 5 znaków i wstawiamy poprawną reprezentację drabinki, zastępując w ten sposób slajd lub spacje, które już tam są:źródło
V ,
38, 37, 36, 34, 33, 32, 31, 3029 bajtówWypróbuj online!
I może dogonić Osabie. Jeden bajt krótszy niż Osabie.Jeden bajt krótszy!\o/
Związany z 2sable!W innych wiadomościach jest to zdecydowanie najdłuższy przekreślony nagłówek, jaki kiedykolwiek zrobiłem.
Wyjaśnienie:
Będzie to działało do momentu wystąpienia błędu, który dzięki poleceniu „przesuń w lewo” („h”) będzie razy „arg1”.
Teraz musimy tylko dodać wewnętrzną nogę
Wersja niekonkurencyjna (28 bajtów)
źródło
Pyth,
3935 bajtówWyjaśnienie:
Przetestuj tutaj
źródło
2sable ,
40363230 bajtówHmmm, V zbliża się okropnie blisko ...
Wykorzystuje kodowanie CP-1252 . Wypróbuj wersję zgodną z 05AB1E! .
źródło
:P
PowerShell v2 +,
999082 bajtówPobiera dane wejściowe
$n
, rozpoczyna pętlę od1
do$n
z|%{...}
. W każdej iteracji tworzymy ciąg. Zaczynamy od odpowiedniej liczby pól" "*($n-$_)
i drabiny"/----/"
.Do tego dodajemy kolejny ciąg, który został pocięty na plasterki
[...]
i z-join
powrotem połączony. Drugi ciąg to slajd i zakładamy, że cały slajd jest zawsze widoczny. Jest to liczba spacji przed rozpoczęciem slajdu" "*($_+$i++)
, a następnie sam slajd"\ \"
. Jest to podzielone na zakres obliczony jako część „spacji plus zjeżdżalni”, która jest częściowo ukryta przez drabinę.Przykłady
źródło
:D
\golfing
folder musi być bardzo zorganizowany._.
Python 2 -
797675 bajtówDziękuję Hubertowi Grzeskowiakowi za „dyskwalifikację” mnie, ponieważ mój program wydrukował tak naprawdę 3 bajty! Dziękujemy również Eʀɪᴋ ᴛʜᴇ Gᴏʟғᴇʀ za oszczędność 1 bajtu więcej!
źródło
def f(x):
zx=input()
i usunąć wcięcie w drugim wierszu. To oszczędza 1 bajt.Vim, 71 naciśnięć klawiszy
To taki głupi sposób, ale to trochę zabawne. Dane wejściowe są podawane jako plik tekstowy z pojedynczym wierszem zawierającym liczbę całkowitą. Jest to prawdopodobnie gra w golfa, ale na razie wystarczy ( edytuj: zmiana stylu znaków kontrolnych na żądanie ):
<c-v>
,<esc>
I<cr>
są wszystkie pojedyncze naciśnięcia klawiszy; ctrl + v, escape i return return (enter) odpowiednio. Dla wersji łatwej do strawienia z odpowiednimi literałami, oto plikladder.keys
uruchamiamyxxd
:Aby to wypróbować (zakładając, że nix z odpowiednimi narzędziami) weź powyższe, uruchom je
xxd -r
i umieść w plikuladder.keys
. Utwórz plikladder.txt
z liczbą całkowitą. Następnie wykonaj:źródło
^V
jak<c-v>
tutaj.bash, 61
gdzie
^M
jest dosłowny powrót karetkiźródło
/
i `\ w czwartym rzędzie i 1 mniej miejsca między krawędziami suwaka.JavaScript (ES6), 79 bajtów
Działa poprzez zajęcie szeregu
n
spacji, następnie wykonanie egzotycznej zamiany, aby uzyskać slajd ze wspornikiem, a następnie zastąpienie podpory drabiną.źródło
Rubin, 61 bajtów
Bez golfa
Mógłbym zapisać dwa bajty, używając
'%*s\ \^M%*s----/'
(gdzie^M
jest dosłowny znak powrotu karetki) dla ciągu formatu, ale wtedy Ruby wypisuje ostrzeżenie „warning: encountered \r in middle of line, treated as a mere space
”. ¯ \ _ (ツ) _ / ¯Poprzednie rozwiązanie (64 bajty)
źródło
Partia, 194 bajty
Okazało się dość proste: wcięcie slajdu, usunięcie pierwszych 7 znaków, wcięcie drabiny, usunięcie spacji wiodącej. Ten ostatni kawałek wymaga jednak trochę podstępu!
źródło
Java, 116 bajtów
Niestety nie można [łatwo] powielić łańcuchów w Javie, więc ostatecznie nadużywam funkcji formatowania.
źródło
Scala, 95 bajtów
źródło
Haskell, 81 bajtów
źródło
do i<-[1..n];a(n-i)++"/----/"++drop 7(a(2*i)++"\\ \\\n")
oszczędza dwa bajty.eacal , niekonkurencyjny, 386 bajtów
Oficjalnie stworzyłem możliwie najbardziej szczegółowy język.Komentowałem to żartem i sarkazmem. Proszę, uspokój się. Instrukcje uruchamiania w repozytorium github połączone w nagłówku.Bez golfa
źródło