(Zainspirowany tym pytaniem )
Cel
Twoim zadaniem jest napisanie programu lub funkcji do wydrukowania wersji ASCII logo Stack Overflow w STDOUT
\|/
(-)
(-)
(-)
(-)
Twój program powinien przyjmować dwa dane wejściowe, określane tutaj jako H i N. Wysokość „kontenera” stosu (nawiasy) jest określana przez H. Liczba elementów w stosie jest określana przez N. Jeśli N> H, stos „przepełni się”.
Wejście wyjście
H określi wysokość pojemników
Na przykład:
H = 1:
( )
H = 2:
( )
( )
H = 3:
( )
( )
( )
H zawsze będzie wynosić co najmniej 1
N określi liczbę przedmiotów na stosie. Wszystkie poniższe przykłady to H = 2:
N = 0
( )
( )
N = 1
( )
(-)
N = 2
(-)
(-)
N = 3
\
(-)
(-)
N = 4
\|
(-)
(-)
N = 5
\|/
(-)
(-)
N = 6
\|/
(-)-
(-)
N = 7
\|/
(-)-
(-)-
N nigdy nie będzie więcej niż 2H+3
(innymi słowy, stos nigdy nie przejdzie przez ziemię).
Zasady
- Brak standardowych luk.
- Twój program nie może generować żadnych błędów.
- Wszystkie przypadki testowe muszą przejść pomyślnie.
- Możesz wprowadzić H i N w dowolny sposób.
- Poważnie wątpię, czy twój język ma do tego wbudowaną funkcję.
- Każda linia może opcjonalnie mieć dodatkową spację na końcu. Pusta linia powyżej stosu, gdzie N <= H jest opcjonalna, podobnie jak końcowy znak nowej linii.
- To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
Przypadki testowe
Oprócz wszystkich przypadków testowych H = 2 z sekcji Wejście / Wyjście muszą przejść wszystkie następujące przypadki testowe:
H = 1, N = 1
(-)
H = 1, N = 5
\|/
(-)-
H = 4, N = 7
\|/
(-)
(-)
(-)
(-)
H = 5, N = 0
( )
( )
( )
( )
( )
Liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Odpowiedzi:
Pyth,
434140 bajtówWypróbuj online. Zestaw testowy.
Pierwsze przejście, szybkie i brudne. Dane wejściowe do STDIN as
N\nH
.Wyjaśnienie
J
(JE
) i odejmij je od pierwszego wejścia (liczba elementów). (-QJE
)K
. (K-QJE
)hK-QJE
)max(0, previous)
. Jest to wymagane, ponieważ liczby ujemne przerwałyby następny krok. (g#0hK-QJE
)" \|/"
aby uzyskać pierwszą linię i wydrukować. (<" \|/"g#0hK-QJE
)N
nadrange(0, J)
. (VJ
) Dla każdegoN
wydruku konkatenacja następujących elementów: (s[
)"("
(\(
)" "
jeśliN+1
na stosie (<N_K
) są przynajmniej wolne miejsca, w"-"
przeciwnym razie. (?<N_Kd\-
)")"
(\)
)"-"
jeśliN+4
na stosie (<N-K3
) znajdują się przynajmniej przepełnione elementy, w""
przeciwnym razie. (*<N-K3\-
)źródło
JavaScript (ES6),
105102 bajtów@Edit: Zapisano 3 bajty dzięki @PatrickRoberts.
źródło
substring
zsubstr
zaoszczędzić 3 bajty, i wymienići+n<h?' ':'-'
z'- '[i+n<h]
aby zapisać 2 bajty i wymienići+h+3<n?'-':''
z' -'[i+h+3<n]
zaoszczędzić 1 bajt. To sprawi, że nie będziesz mieć 100 latsubstr
zignorowałem negatywne indeksy dolne, ale nie mogę użyć innych wskazówek, ponieważ indeksy łańcuchowe są łańcuchami, więc booleany nie są wystarczająco dobre.JavaScript (ES6),
126122112 bajtówTest
Test alternatywny (jeśli twoja przeglądarka nie obsługuje ES6)
Zobacz test na Babeljs.io i zaznacz „oceń”.
Ciekawe alternatywne podejście przy 136 bajtach
To przenosi ilości powtórzeń do ciągu szablonu i używa wyrażenia regularnego i zamienia, aby wstrzyknąć powtarzające się grupy. Niestety podpis
.replace()
jest po prostu za długi.źródło
C ++ 14 (funkcja lambda), 196
Zaoszczędzono 1 bajt dzięki Quentin.
Zaoszczędził 2 bajty dzięki Adamowi Martinowi.
Sama funkcja zajmuje 157 bajtów.
Zobacz to w akcji tutaj .
Wersja bez golfa:
źródło
include
s iusing namespace std;
liczeniu bajtów, chyba że twoja odpowiedź jest kompletnym programem (co nie jest).CJam, 57 bajtów
Sprawdź to tutaj.
Zdecydowanie przydałaby się poprawa. Chodzi o zbudowanie siatki, w której
-\|/-
komórki zostaną zastąpione kolejnymi liczbami całkowitymi, npA następnie zamień je na prawidłowe znaki (potencjalnie spacje) na końcu.
źródło
Python 2,
10110098 bajtówźródło
print
są niepotrzebneJavaScript (ES6),
8780 bajtówUżywa rekurencji do utworzenia ciągu wyjściowego od dołu do góry.
EDYCJA : Dzięki @Neil za golenie 7 bajtów z 87 bajtów
Oryginał
Fragment testowy:
źródło
SyntaxError
mi.JavaScript (ES6),
149139137 bajtówPodobał mi się pomysł MartinEndera dotyczący indeksowania
-\|/
znaków i chciałem zobaczyć, jak sobie poradzi w ES6. Najwyraźniej nie zrobiłem tego zbyt dobrze. Próbuję dowiedzieć się, czy można to poprawić za pomocąfor...of
.Edycje
.replace
, przenosząc indeksowanie bezpośrednio dog()
.f=
w drugim bajcieTest
źródło
Java,
186177 bajtówUngolfed spróbuj online
źródło
Excel, 131 bajtów
Wejście traktowane jako krotki, wysokość
H
wA1
,N
wB1
. Formuła zawierająca komórkę musi mieć włączone zawijanie tekstu. Zaproponuj użycie czcionki z odstępem mono.źródło
A1
iB1
dodaje prostą notatkę, że wymaga to, aby komórka wywołująca miała opcję zawijania tekstu, aby była prawdziwa. Być może również, aby uzyskać prawidłowe wyrównanie, powinna mieć czcionkę o jednolitych odstępach, taką jak Courier New lub Lucidia ConsoleC ++ 11,
155148145 bajtówNie golfowany :
Zastosowanie :
źródło
Python 3,
134121118111 bajtówPrzetestuj tutaj: https://repl.it/CYL1/0
Bez golfa:
Chciałbym dodać przepełnienie boczne do opisu listy, ale nie mogłem go wcisnąć, więc musiałem skorzystać z pętli while.Zapisano 13 bajtów!źródło
'\|/'[:max(0,n-h)]
aby było podobne do rozwiązania Python 2.Perl 5 , 91 bajtów
Wypróbuj online!
źródło
Pip , 50 bajtów
Wypróbuj online!
Ugh, to za długo ... nie wiem już, jak to skrócić. Tym razem cykliczne indeksowanie, które zwykle jest pomocne, kosztuje dodatkowe bajty.
źródło
PowerShell ,
109108104 bajtówWypróbuj online!
Wiele straciłem na kosztownym indeksowaniu, ale nadal przyzwoitym. Nie jestem jednak pewien, czy moja matematyka indeksu jest optymalna. Ukryj logikę z innych odpowiedzi, aby zapisać bajt. Pamiętano również o pierwszeństwie przed wstawieniem niektórych parenów dla -4 bajtów.
źródło
05AB1E , 45 bajtów
Zdecydowanie można grać w golfa .. Niezbyt szczęśliwy z tego powodu w obecnej formie tbh.
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
LR'(ì')«¹x‚3+¬UŸ¦ζJ¹XŸJ¦1úr)˜»
i to tylko w połowie zrobione.