5 kwietnia jest National Deep DIsh Pizza Day, tematem tego wyzwania. Biorąc pod uwagę dodatnią liczbę całkowitą n
( n
większą niż 0), utwórz pizzę z głębokim daniem ASCII. Pokazana rzeczywista pizza z głębokim daniem:
Jak widać, na spodzie znajduje się warstwa skórki i otaczająca resztę pizzy.
Jak zrobić pizzę
Skórka składa się z dwóch warstw. Pierwsza warstwa będzie n
wysoka i n*3
długa. Długość to liczba znaków (łącznie ze spacjami) w najwyższym wierszu. Więc biorąc pod uwagę n
1, pierwsza warstwa wyglądałaby następująco:
\_/ 1 character tall
3 characters long
Jeśli n
jest dwa:
\ / 2 characters tall
\__/
6 characters long
Teraz druga warstwa skórki. Wyjdzie poza pierwszą, wewnętrzną skorupę, więc będzie to n+2
postacie wysokie i (n*3)+6)
postacie długie. Podany n
jest jeden:
\ / 3 characters tall
\ /
\___/
9 characters long (3 underscores, 3 slashes on either side)
Jeśli n
jest dwa:
\ / 4 characters high
\ /
\ /
\____/
12 characters long
Następnie dopasujesz do siebie dwie najwyższe pary \/
dla skorupy wewnętrznej i zewnętrznej. W n
jest 1:
\ \ / /
\ \_/ /
\___/
Jeśli zostanie to wykonane poprawnie, wyglądałoby to jak V bez wierzchołków z jedną różnicą znaków między każdą warstwą. Mówiąc o szczytach, skorupa zostanie połączona ze sobą parą /\
, oddzieloną linią podkreślników (n*3)+2
długich, aby ukończyć skórkę i pizzę.
Przykłady
Jeśli n
wynosi 1:
/\_____/\
\ \ / /
\ \_/ /
\___/
n
jest 2:
/\________/\
\ \ / /
\ \ / /
\ \__/ /
\____/
n
wynosi 3:
/\___________/\
\ \ / /
\ \ / /
\ \ / /
\ \___/ /
\_____/
Zwycięskie kryterium
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
-
zamiast zamiast_
?Odpowiedzi:
Węgiel drzewny , 35 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Podaj rozmiar pizzy.
Wydrukuj część zewnętrznej podstawy skorupy.
Wydrukuj zewnętrzną skórkę po lewej stronie.
Wydrukuj część górnej skorupy.
Wydrukuj wewnętrzną skórkę po lewej stronie.
Wydrukuj część wewnętrznej podstawy skorupy.
Zastanów się, aby dokończyć pizzę.
Pamiętaj, że nowoczesne dodatki do węgla drzewnego zmniejszają rozmiar do 31 bajtów:
Wypróbuj online! Link jest do pełnej wersji kodu.
źródło
JavaScript (ES6), 136 bajtów
Cała pizza jest bardzo powtarzalna, więc
r
funkcja (zaprojektowana jako dosłownie oznaczony szablon) powtarza pierwszy znakn
czasów wprowadzania . To obsługuje dwie górne i dolne linie pizzy. Środek powtarza się, zastępując ciąg pustych miejsc; się$`
i$'
subsitutions automatycznie odpowiada zwiększania i zmniejszania ilości półfabrykatów w ten sposób odkładania\ \
i/ /
odpowiednio.źródło
Python 2,
153151 bajtówWypróbuj online
-2 bajty poprzez podstawienie powtarzanych wartości zmiennymi dzięki @KoishoreRoy
źródło
print' '*=~n+'\\'+'_'*-~n+'_/'
nie możesz pisaćprint' '*i+' \\_'+'_'*n+'_/'
? (Lubn
zamiasti
, ale kopiowałem poprzednią linię.)-~n
sięi
, ponieważ w tym momenciei==n
. Ale druga zmiana jest dobra. Również skróciłem-~n
, dzięki twojemu pomysłowi-~n
sięi
, bo dodając przestrzeń. (Ale i tak wydaje się, że sam to wypracowałeś. Już też to zauważyłemn
ii
w tym momencie są takie same.)MATLAB, 333 bajty
(Leniwa próba)
Sformatowany:
Podstawową ideą jest to, że mam uchwyty funkcyjne do drukowania wszystkiego, a potem po prostu używam siły. Ta dla pętli dotyczy
n
warstw między samą górną i dolną warstwą wewnętrzną. Powtarzanie(spacji)
_
odbywa się zaarrayfun
pomocą danych wejściowych z tablicy. Spróbuję wymyślić ciekawsze sposoby na zrobienie tego, jeśli otrzymam więcej czasu później.źródło
Węgiel drzewny ,
5452 bajtyWyjaśnienie:
Moja poprzednia odpowiedź była w Retina, języku, na który jeszcze nie opublikowałem odpowiedzi. Teraz masz odpowiedź w języku węgiel drzewny, na który wcześniej nie zamieściłem odpowiedzi.
Wypróbuj online!
źródło
PHP,
209 200 137135 bajtóww końcu pokonując JS :)
Pobiera dane wejściowe z STDIN; uruchomić
-nR
lub zamówić pizzę rodzinną .awaria
źródło
JavaScript (ES6), 205 bajtów
To mój pierwszy post ascii-art !
Dodaj
f=
na początku i wywołaj jakf(arg)
.Uwaga: wszystkie podziały linii są konieczne!
Wyjaśnienie
Kod najpierw deklaruje tablicę
a
. Następnie deklarujew
iu
ma odpowiednio wartość białych znaków i podkreślenia. Następnie deklaruje zmienną String, która przechowuje wartość skorupy (którą można obliczyć/\+(n*3+2 underscores)+/\
, jak wspomniano w Wyzwaniu). Następnie, za pomocąfor
pętli i aTemplate Literal
, tworzony jest środek pizzy (każda warstwa mai
białe spacje na początku i(n+1-i*2)+n+(n-1)
białe spacje między\ \
i/ /
, gdziei
reprezentuje indeksfor
pętli). W końcu tworzona jest dolna część pizzy ((i whitespaces)+\+(n+2 underscores)+/
). Wszystkie części są ze sobą połączone i wyprowadzane (ted).Jeśli z jakiegoś powodu fragment kodu nie wyświetla poprawnie grafiki ASCII, zajrzyj tutaj .
Szczęśliwy Dzień Pizzy dla wszystkich!
źródło
Partia, 200 bajtów
t
zawiera lewe wcięcie, podczas gdys
zawiera wnętrze; jego_
s są podstawione spacjami w środkowych rzędach.l
po prostu istnieje, aby uniknąć powtórzeń.źródło
V , 57 bajtów
Wypróbuj online!
Ponieważ (jak zwykle) zawiera wiele nieprzyjemnych znaków spoza zestawu ASCII i nie można go wydrukować, oto zrzut heksowy:
Wkrótce opublikuję bardziej szczegółowe wyjaśnienie, ale oto ogólny przegląd:
źródło
C (brzęk) ,
211215 bajtówWypróbuj online!
Ładny kod:
Edycje:
źródło
CJam, 74 bajty
O wiele za długo. Spróbuję innego podejścia.
Buduje ciąg po linii. Nic zbyt szalonego.
źródło
CJam, 89 bajtów
Cóż, w rzeczywistości jest to dłużej niż moje inne rozwiązanie w tej chwili, ale myślę, że jest bardziej golfowy:
Ślad stosu:
źródło