To wyzwanie jest prostym wyzwaniem w stylu ASCII zainspirowanym zaćmieniem Słońca, które miało miejsce 21 sierpnia 2017 r. Biorąc pod uwagę dane 0 <= n <= 4
wyjściowe, wygeneruj odpowiedni etap zaćmienia opisany poniżej:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
Zasady
- Możesz 0 lub 1 indeks, określić, co wybrałeś.
- Używane znaki to spacja i
*
możesz użyć dowolnego znaku do druku*
(innego niż spacja). - Końcowe spacje są opcjonalne (możesz je mieć lub nie).
- To jest golf golfowy , zwycięzcą jest najniższa liczba bajtów.
*
” ... w tym spacji? ;)Odpowiedzi:
Python 2 ,
161149142135 bajtówWypróbuj online!
-7 dzięki Mr. Xcoder .
źródło
Węgiel drzewny ,
82815543 bajtów-38 bajtów dzięki Neilowi!
Wypróbuj online! Link jest do pełnej wersji.
Zrobiłem dla cholery tego. : P
Prawdopodobnie zostanę pokonany przez 40 bajtów.2638 bajtów ... Wystarczająco blisko?źródło
PolygonHollow
. : P 2) Och, miło. Dzięki!Guma cynamonowa , 70 bajtów
Hexdump:
Wypróbuj online!
Tak długo czekałem , aby dowiedzieć się, jak korzystać z tego języka. : P
Tak więc guma cynamonowa to guma do żucia, ale jest to bardziej „prawdziwy” język niż guma do żucia.
Pierwszy bajt (
l
) ustawia tryb na tryb słownika. Reszta bajtów to skompresowany następujący ciąg.Zasadniczo tworzy to tabelę odnośników z każdym tekstem przypisanym do liczby. Program pobiera następnie dane wejściowe i wyjściowe odpowiedniego tekstu.
źródło
argument%4
alboargument&3
zapisać bajtów?JavaScript (ES6),
103102 bajtówEdycja: Zapisano 1 bajt dzięki @darrylyeo.
źródło
*666777333*\n
w zmiennej.SOGL V0.12 ,
4039 bajtówWypróbuj tutaj!
źródło
VI, 108 bajtów
<CR>
jestEnter
udar mózgu,<C-?>
odpowiadaControl + ?
, i<Esc>
doEscape
oczywiście. Każdy z nich liczy się dla 1 bajtu (patrz meta ). Podziały linii w rozwiązaniu służą do czytelności.<CR>
Reprezentuje tylko prawdziweEnter
uderzenia.Wkład
Plik wejściowy powinien zawierać tylko 1 znak reprezentujący
n
.Uruchomić
VI należy rozpocząć tak:
Objaśnienia
Rozwiązanie zawiera 3 części. Opiszę pierwszą część 2. (2. wiersz), ponieważ jest najłatwiejsza do wyjaśnienia.
Rysowanie słońca
Polecenie narysowania słońca to:
Słońce musi być sporządzony z
,
*
,0
,1
i3
, podobnie jak to:Symetria pomogłaby zmniejszyć rozmiar tej części w bajtach, ale nie jest to takie ważne. Nie wyjaśnię pełnej linii, ale wzorzec
*****
służy do łatwego wygenerowania ostatniego wiersza, a wzorzec**1110333**
został przyjęty jako odniesienie do wygenerowania 3 innych wierszy zawierających0
,1
i3
.Ważne jest, aby używać
0
,1
a3
dla części słonecznych, które mogą być wypełnione (patrz następny wyjaśnień). Narysowanie tego słońca zajmuje 55 bajtów i prawdopodobnie można go zagrać w golfa za pomocą niektórych sztuczek.Wypełnianie słońca zgodnie z
n
Aby prawidłowo wypełnić słońce, postępuj zgodnie z instrukcjami:
n = 0
, to0
,1
i3
(wszystkie cyfry) powinny być zastąpionen = 1
, to1
należy zastąpićinnymi cyframi
*
n = 2
, to0
,1
i3
(wszystkie cyfry) powinny być zastąpione*
n = 3
, to3
należy zastąpićinnymi cyframi
*
n = 4
, to0
,1
i3
(wszystkie cyfry) należy zastąpić(jak
n = 0
)Z tego możemy wywnioskować, że wymagane podstawienia to:
( pierwsza zamiana )
*
( druga zamiana )Zauważ, że „niektóre cyfry” mogą oznaczać „brak cyfr” (
n = 2
na przykład). „Wszystkie pozostałe cyfry” mogą również oznaczać „brak cyfr”, jeśli wszystkie cyfry zostały już zastąpione pierwszym zastąpieniem (n = 0
na przykład).Drugiej zmiany mogą być łatwo napisany w 11 bajtów :
Najpierw podstawienie zależy
n
, więc najpierw musimy obliczyć, jakie cyfry zostaną zastąpione. Jeśli zastąpione znaki są przechowywane w rejestrzea
, polecenie podstawienia zapisywane jest również w 11 bajtach :<C-r>a
jest zastępowany treścią rejestrua
po wpisaniu polecenia.Aby obliczyć wartość
a
, postępując zgodnie z poprzednimi instrukcjami, algorytm jest (w pseudokodzie):"X"
ciąg jest używany, ponieważ kiedyn = 2
żadne cyfry nie są zastępowane spacjami. Można tu użyć dowolnego łańcucha, który nie jest słońcem, pod warunkiem, że pierwsze podstawienie nic nie robi.Można to zapisać w 31 bajtach :
Rozwiązanie
Umieść wszystkie te części we właściwej kolejności, a otrzymasz rozwiązanie:
źródło
PHP, 114 + 1 bajtów
+1 bajt dla
-R
. Dzięki @Neil za zmianę wskazówki.używa podkreślenia dla
*
, 0-indeksowane. Uruchom jako potok z-nR
lub spróbuj online .Wymaga PHP 5.5 lub nowszego:
starszy PHP nie rozumie dosłownego indeksowania ciągów (błąd analizy);
PHP 7,1 uskarża się wartości liczbowych (nie zastąpi
+$c
się$c>0
na stały).źródło
" _"[$c*2>>$argn&1]
unika ujemnych parametrów przesunięcia, jeśli ich potrzebujesz.Python 2 ,
170169 bajtówWypróbuj online!
źródło
Python 2 , 181 bajtów
Wypróbuj online!
Bardzo naiwne podejście,
praca nad golfem w NVM.źródło
Java 8,
225213211 bajtówWypróbuj tutaj.
źródło
05AB1E , 46 bajtów
Wypróbuj online!
źródło