Poniższy wzór będzie stanowił podstawę tego wyzwania.
/\
\/
/\
/ \
/ \
/\/ \/\
\/\ /\/
\ /
\ /
\/
/\
\/
Biorąc pod uwagę szerokość i wysokość wejściową, każdy z nich >=1
, wyjściowy wzór artystyczny ASCII powtórzył to wiele razy, łącząc (i nakładając się) na małe diamenty.
Na przykład oto dane wejściowe za pomocą width = 2
i height = 1
:
/\ /\
\/ \/
/\ /\
/ \ / \
/ \ / \
/\/ \/\/ \/\
\/\ /\/\ /\/
\ / \ /
\ / \ /
\/ \/
/\ /\
\/ \/
Oto dane wejściowe width = 3
i height = 2
:
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
Reguły i I / O
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Możesz wydrukować go do STDOUT lub zwrócić jako wynik funkcji.
- Dopuszczalny jest pełny program lub funkcja.
- Dopuszczalna jest dowolna ilość obcych białych znaków, o ile znaki są odpowiednio ustawione w jednej linii.
- 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).
Odpowiedzi:
Płótno ,
2625242118 bajtówWypróbuj tutaj!
-3 bajty poprzez naprawienie
m
nie powtarzającego się płótnaWyjaśnienie:
źródło
JavaScript (ES8),
167161159 bajtówNB: To koduje wzorzec. Zobacz moją drugą odpowiedź na krótsze podejście matematyczne.
Pobiera dane wejściowe jako
(width)(height)
.Wypróbuj online!
W jaki sposób?
Górną połowę wzoru kodujemy cyframi:
\
/
To daje:
W dolnej połowie używamy wierszy4 , 3 , 2 , 0 z
/
i\
odwróconych.źródło
JavaScript (ES6), 139 bajtów
Używa to zupełnie innego podejścia niż moja pierwotna odpowiedź, więc zamieszczam to osobno.
Pobiera dane wejściowe jako
(width)(height)
.Wypróbuj online!
W jaki sposób?
Biorąc pod uwagę szerokośćw wysokość h , znak wyjściowy znak po znaku rysujemy na siatce, która jest:
Dla wszystkich innych komórek obliczamy:
Rysujemy,
"/"
jeśli:Rysujemy,
"\"
jeśli:Lub rysujemy miejsce, jeśli żaden z tych warunków nie jest spełniony.
źródło
C ++ (gcc) , 137 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
#include
Haskell , 179 bajtów
Wypróbuj online!
Haskell , 181 bajtów
Wypróbuj online!
źródło
reverse.map(map k)<>id
over(++).reverse=<<map(map k)
pozwala zaoszczędzić 3 bajty w obu rozwiązaniach.map t
można stać sięt<$>
itake$10*x+2
oszczędzać kolejny bajt, a na koniec możesz użyćcycle"\\ /"!!n
więcej"\\ /"!!mod n 3
- teraz drugi jest krótszy :) Wypróbuj online!Węgiel drzewny ,
242220 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Narysuj jedną ósmą oryginalnego wzoru.
Powiel go trzy razy, aby ukończyć oryginalny wzór.
Skopiuj wymaganą liczbę razy w poziomie.
Skopiuj wymaganą liczbę razy w pionie.
źródło
PowerShell, 146 bajtów
Wyjaśnienie
Wzór ma tablicę 10x10 znaków:
Scenariusz:
Dwie rzeczy do golfa:
replace
.źródło
Perl 5
-p
, 148 bajtówWypróbuj online!
źródło
PHP, 159 bajtów
wzór zaczerpnięty z mazzy; przetłumaczone na 1-2-3, przekonwertowane na base26 -> zdekodowane przez program
wymaga PHP 5.5 lub nowszego. Uruchom
-nr
lub wypróbuj online .obliczenia mogą być krótsze (jak w przypadku Arnaulda). Mogę spojrzeć na to.
źródło
Kotlin ,
196135 bajtówZaoszczędzono 61 bajtów dzięki sugestii ASCII-only, aby użyć algorytmu C ++ AZTECCO.
Wypróbuj online!
źródło
Python 3 ,
194192187127 bajtówRozwiązanie @ ASCII-only:
Wypróbuj online!
Oryginalne rozwiązanie
Wypróbuj online!
-2 bajty dzięki @Black Owl Kai pokazując, że dostęp do górnych i dolnych części można uzyskać z wygenerowanej tablicy zamiast w osobnych zmiennych.
-5 więcej bajtów dzięki @Black Owl Kai wykorzystującym bardziej kreatywny sposób przechowywania diamentów
Generuje tę część każdego diamentu:
/\
Dodany na końcu każdego rzędu w celu jej zakończenia. Następnie,/
s i\
s są zamieniane, aby utworzyć górę każdego diamentu, a kolejność linii jest odwrócona, aby utworzyć dolną połowę. Na koniec dodaje w samym górnym wierszu/\
s i w dolnym rzędzie\/
s, aby uzupełnić obraz.źródło
+=
/*=
przypisań i odwrócenie całego diamentu do góry nogami, co ułatwia przechowywanie ostatniego ciągu