Dzisiaj, 11 listopada, znany jest jako Dzień Pamięci , Dzień Zawieszenia Broni , lub Veterans Day (w zależności od kraju), i to dzień refleksji i wdzięczności dla członków sił zbrojnych i ich usług, a konkretnie zaczęły odzwierciedlać zakończeniu działań wojennych europejskich w pierwszej wojnie światowej. Zastanówmy się nad tym dzięki prostemu wyjściu ASCII-art 11/11
.
Biorąc pod uwagę dane n
wyjściowe, wyprowadza interpretację ASCII-art, 11/11
która jest n
jednostkami wysokości. W szczególności każda z nich 1
składa się z pionowych rur ||
, ukośnik składa się z ukośników //
, a każda postać ma dwie spacje. Zauważ, że oznacza to różne szerokości wyjściowe - na przykład n=3
poniżej zobacz, jak „dół” ukośnika to dwie spacje od 1
jego lewej strony, ale cztery spacje od 1
jego prawej, tak że góra slashu ustawia się odpowiednio w linii i ma dwie spacje od 1
prawej.
n = 1
|| || // || ||
n = 2
|| || // || ||
|| || // || ||
n = 3
|| || // || ||
|| || // || ||
|| || // || ||
n = 4
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
n = 5
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
i tak dalej.
Wkład
Pojedyncza dodatnia w dowolnym, wygodnym formacie , n > 0
.
Wydajność
Reprezentacja ASCII 11/11
, zgodnie z powyższymi zasadami i przykładami. Wiodące / końcowe znaki nowej linii lub inne białe znaki są opcjonalne, pod warunkiem, że znaki są odpowiednio ustawione.
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).
$'
, a$`
w regex? Nigdy wcześniej tego nie widziałem i chciałbym to lepiej zrozumieć.$&
byłoby to dopasowanie).05AB1E , 24 bajty
Wypróbuj online!
Wyjaśnienie
Poprzednia 26 bajtowa wersja
Wypróbuj online!
źródło
" "×"//"«.s¦R"|| || "s«vyû}»
, okazuje się, że palendromize nie jest dobrym dopasowaniem, z bardziej oczywistych powodów teraz ... i i tak pokonujesz moją liczbę bajtów hej.Perl, 45 bajtów
-9 bajtów dzięki @Gabriel Benamy
47 bajtów kodu + 1 bajt na
-n
flagę.Uruchom z
-nE
flagami:źródło
"|| ||"
na,"|| "x2
a następnie zamieniając się(2+$_)
w$_
+( .. )
całego$@
zadania. Przynajmniej działa na moim komputerze.+( .. )
, dzięki. Jednak nie mogę zmienić"|| ||"
na,"|| "x2
ponieważ potrzebuję dwóch spacji między||
."|| "
ma dwie spacje za potokami (z jakiegoś powodu po prostu nie renderuje się tutaj poprawnie), a ty"|| || "
$"x(2+$_)
||
gdy były dwie.JavaScript (ES6),
8877 bajtówPodejście rekurencyjne
może nie byćnajkrótsze ..map
wersja (88 bajtów):Zrozumienie tablicy (86 bajtów):
for
wersja pętli (89 bajtów):.replace
wersja (85 bajtów):źródło
Siatkówka, 29 bajtów
Port mojego rozwiązania JavaScript. Zwróć uwagę na spację po
$*
i dwie spacje po||
.źródło
V , 30 bajtów
Wypróbuj online!
Jak zwykle, zrzut heksowy:
źródło
5i|| <esc>3b2r/
. Będziesz jednak w nieco innym miejscu i nie mogę odczytać V, więc nie jestem pewien, czy to ma znaczenie.Partia, 130 bajtów
Nie jest to port mojego rozwiązania JavaScript. Ponieważ w
|
Batchu trudno manipulowaćx
s, używam s jako symboli zastępczych i zastępuję je na wyjściu, to wygodnie zmniejsza również mój kod. Zaczyna się od ustawienias
żądanego wyniku dlan=1
(n
jest przekazywany w wierszu poleceń), a następnie wstawia spacje w celu uzyskania pierwszego wiersza rzeczywistej wartościn
, a następnie wykonuje pętle poprzez drukowanie łańcucha i każdorazowo przesuwając ukośnik w lewo o jeden znak.źródło
BaCon , 71 bajtów
Kompletny program BASIC w jednym wierszu.
źródło
1 TO
?Common Lisp, 216 bajtów
Od razu stwierdzę, że jest to okropne rozwiązanie tego wyzwania. Niemniej jednak działa i jestem zmęczony.
Stosowanie:
Z jakiegoś powodu, zamiast robić coś rozsądnego, postanowiłem podejść do tego z pętlą wewnątrz
format
połączenia. Ta pętla dokonuje iteracji przez zawartość zwracaną przez inną rzeczywistą konstrukcję pętli na samym końcu, z usuniętymi ostatnimi sześcioma elementami (a więc powtórzeniamibutlast
s). Zawartość wartości zwróconej przez tę konstrukcję pętli składa się z liczby dopełnień na początku ukośników, znaków dopełniania (spacji), liczby dopełnień na odwrocie ukośników i wreszcie tych samych znaków dopełniania.Jestem raczej nowy w Lisp i rozumiem, że zdecydowanie jest tu dużo miejsca na ulepszenia.
źródło
Python 2,
767571 bajtówNadal pracuję nad krótszą wersją, ale nie jest tak źle.
dzięki mbomb007 za złapanie błędu!
źródło
x='|| '*2;print x+(n-i)*' '+'//'+' '*i+x[::-1]
//
w ostatnim wierszu znajdują się trzy spacje przed i dwa spacje po//
pierwszym wierszu. W obu przypadkach powinny to być dwie spacje.R, 86 bajtów
Po prostu proste
for
podejście do pętli:źródło
Siatkówka , 40 bajtów
Wypróbuj online!
Wyjaśnienie
To zmienia dane wejściowe
N
wGdzie
S
odpowiadaN
spacjom.Tutaj dzieją się dwie rzeczy.
;{:
wskazuje, że ten etap i ostatni powinny być uruchamiane w pętli, dopóki nie zmienią ciągu.:
wskazuje, że wynik tego etapu powinien być drukowany po każdej iteracji i;
wskazuje, że końcowy wynik pętli (a zatem całego programu) nie powinien być drukowany. Sam etap po prostu zastępujex
s przy|| ||
pierwszej iteracji (i nie robi nic potem), dzięki czemu mamy teraz pierwszy wiersz wymaganego wyniku (i go drukujemy).W końcu przesuwa to
//
jedną postać w lewo, pod warunkiem, że pozostaną co najmniej trzy spacje od//
. Następnie wracamy do poprzedniego etapu (który teraz drukuje tylko bieżącą linię, ponieważ nie ma więcejx
s), a następnie powtarzamy.źródło
Rubinowy, 60 bajtów
źródło
C,
116 9489 bajtówWypróbuj na Ideone
źródło
Rubinowy,
767473 bajtówJako funkcja zajmuje
7372 bajty, licząc definicję:źródło
PowerShell, 66 bajtów
źródło
read-host
-param($a)1..$a|%{$s="|| ";$s*2+" "*($a-$_)+"// "+" "*$_+$s*2}
C #, 150 bajtów
Gra w golfa:
Nie golfowany:
Testowanie:
Wydajność:
źródło
Groovy, 63 znaki / bajty
Oto moja próba z Groovy, używając anonimowego zamknięcia i prostych pętli, aby wydrukować grafikę ASCII na standardowe wyjście:
{n->n.times{println'|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2}}
Możesz spróbować online tutaj . Wystarczy kliknąć „Edytuj w konsoli”, a następnie „Wykonaj skrypt”.
Próbując zrobić to samo i zwrócić ciąg zamiast drukowania, nie mogłem dostać poniżej 71 bajtów:
{n->a='';n.times{a+='|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2+'\n'};a}
źródło
Python 3, 78 bajtów
Wciąż próbuję skrócić ...
źródło
for
na tę samą linię codef
? (W ten sposóbdef m(n):for e in range(n):print(a," "*(n-e),"//"," "*(e+1),a)
:) Ponadto można zapisać dwa bajty, zastępując(e+1)
je-~e
.