Biorąc pod uwagę spiralę wielkości S
i stopień N
, wyjmij „kwadratową” S*S
spiralę mającą N
gwiazdki, zbudowaną z zewnętrznego do wewnętrznego promienia zgodnie z ruchem wskazówek zegara.
Przypadki testowe (przykłady) poniżej.
Wkład:
4 3
Wydajność:
***
Wkład:
4 6
Wydajność:
**** * *
Wkład:
4 11
Wydajność:
**** * * * ****
Wkład:
6 18
Wydajność:
****** * * * * * * ******
Wkład:
6 22
Wydajność:
****** *** * * * * * * * ******
Wkład:
6 27
Wydajność:
****** ****** * ** * ** * ** ******
Wkład:
1 1
Wydajność:
*
Nie jest konieczne zajmowanie się przypadkami, gdy:
pod warunkiem, że
N
gwiazdki nie mieszczą się w spirali danychS*S
wymiarów.albo
N
alboS
wynosi zero.
Wyzwanie polega na grze w golfa, wygrywanie krótszych bajtów odpowiedzi, można użyć dowolnego języka.
Twój wynik może mieć tyle końcowych (ale nie wiodących) spacji / znaków nowej linii, jak chcesz.
S
rozmiarem (a przynajmniej średnicą ) niż promieniemOdpowiedzi:
MATL ,
1716 bajtówWypróbuj online!
Objaśnienie (z przykładem)
Rozważ dane wejściowe
4
i11
jako przykład.źródło
Stax , 19 bajtów
Uruchom i debuguj
Zaczyna się od zbudowania łańcucha zawierającego wszystkie znaki w wyniku ze wszystkimi gwiazdkami wyrównanymi do lewej. Następnie pobiera coraz większe plastry z końca sznurka i „owija” je wokół siatki podczas obracania siatki.
Oto ten sam program, rozpakowany, nieposortowany i skomentowany.
Uruchom i debuguj
źródło
Python 2 , 117 bajtów
Wypróbuj online!
źródło
APL (Dyalog) , 65 bajtów
Wypróbuj online!
Kod macierzy spiralnej pochodzi z innej mojej odpowiedzi .
źródło
N
jest nieparzysty :)PHP, 118 bajtów
dostosowałem i grałem w golfa moje rozwiązanie dla Spirali Alfabetu .
Uruchom
php -nr '<code>' <S> <N>
lub wypróbuj online .źródło
Python 2 , 150 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 34 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wejście
N
.Długości ramion spiralnych (z wyłączeniem rogach) są
S-1
,S-1
,S-1
,S-2
,S-2
,S-3
, ...,3
,2
,2
,1
,1
,1
. Tworzy się to, zaczynając od zakresu od0
do, ale wykluczając2S
, zmieniając 0 na 1, odwracając go, dodając 1 do każdego elementu po pierwszym, a na koniec liczbę całkowitą dzielącą wszystkie elementy przez 2. Ta lista jest następnie zapętlana.Jeśli do losowania pozostało mniej gwiazdek niż długość następnego ramienia, zmniejsz ramię do tej długości.
Narysuj odpowiednią liczbę gwiazdek.
Odejmij od liczby pozostałych gwiazdek.
Obróć kierunek rysowania o 90 ° zgodnie z ruchem wskazówek zegara.
źródło
J,
6056 bajtów-4 Bajty poprzez modyfikację procesu kompilacji spirali, aby odejmowanie jej od y ^ 2 było niepotrzebne
Wypróbuj online!
Wyjaśnienie już
wkrótce.Wyjaśnienie:
Przykłady:
źródło
Kotlin ,
361355353334 bajty6 bajtów zaoszczędzonych dzięki Jonathanowi
2 bajty zapisane, zmiana na kiedy
19 bajtów oszczędzało przejście na lambda i śledzenie zewnętrznych krawędzi
Wypróbuj online!
źródło
==' '
można go zastąpić<'*'
. Równieżd==0
zd<1
id==3
zd>2
. Te wydają się być dość podstawowymi golfami, więc prawdopodobnie są też inne!Java 10,
284282281263 bajtówZabawne wyzwanie!
Wypróbuj online tutaj .
Dzięki Kevin Cruijssen za grę w golfa 18 bajtów.
Wersja bez golfa:
źródło
var b
dodaje więc trzeba tylko zrobićx>0?i<u:i>l
iy>0?j<u:j>l
raz każdy, zamiast dwa razy.JavaScript (Node.js) ,
167164163 bajtów,
zamiast podświetlenia (1 bajt)Wypróbuj online!
źródło
return a.join` `.split`,`.join``
..split
, `.join`` wyjście robi spirala„ładnie”(z nowych linii), więc myślę, że jego problem