Wyzwanie
Jestem atakowany przez kradnącą Załogę Północy i muszę wezwać Kaskadowy Kości Kaskadny Dzień Zagłady , aby się obronić. Ponieważ brakuje mi miejsca, kod musi być jak najkrótszy.
Algorytm Kaskadowego Kaskadera Kości Zagłady wygląda następująco:
Najpierw rzuca się sześciostronną kością w Pierwotnym Bańce, a wynik określa, ile iteracji następnego kroku ma miejsce.
Zacznij od sześciościennej kości. Przez tyle razy, ile wynosi rzut kości Prime Bubble, pomnóż liczbę stron na następnej kości przez wynik rzutu bieżącej kości. Na przykład, jeśli na pierwszym rzucie sześciościennej kości twój rzut wynosi 2, to twoja następna kość będzie miała 6 * 2 = 12 stron.
Twoim celem jest napisanie funkcji lub programu, który nie przyjmuje danych wejściowych i wyświetla wynik końcowy ostatniej rzuty. Ponieważ jest to gra w golfa , wygrywa najniższa liczba bajtów w każdym języku!
Przykłady
Przykład nr 1 (zaczerpnięty bezpośrednio z powyższego linku):
The Prime Bubble rolls a 6, meaning that the Cascader will iterate six times
#1: We always start with a 6 sided die, and it rolls a 2, so the next die has 6x2=12 sides
#2: The 12 sided die rolls an 8, meaning that the third die has 12x8=96 sides
#3: The 96 sided die rolls a 35, meaning that die 4 has 96x35=3360 sides
#4: The 3360 sided die rolls a 2922, so die 5 has 3360x2922 = 9,817,920 sides
#5: The 9.8 million sided die rolls a 5,101,894, so the final die has 50,089,987,140,480 sides
#6: The 50 trillion sided die rolls a one. Hooray.
Since the last die rolled gave a 1, your function or program should output 1.
Przykład nr 2
The Prime Bubble rolls a 2, meaning that the Cascader will iterate twice.
#1: We always start with a 6 sided die, and it rolls a 4, so the next die has 6x4 = 24 sides
#2: The 24 sided die rolls a 14
Since the last die rolled gave a 14, your function or program should output 14.
Odpowiedzi:
Python 2 ,
7669 bajtówWypróbuj online!
źródło
Perl 6 ,
4337 bajtów-6 bajtów dzięki nwellnhof
Wypróbuj online!
Anonimowy blok kodu, który zwraca wynik kości doomsday.
Wyjaśnienie:
źródło
Wolfram Language (Mathematica) , 43 bajty
Wypróbuj online!
źródło
J , 21 bajtów
Wypróbuj online!
+6 bajtów dzięki problemowi logicznemu wykrytemu przez FrownyFrog
UWAGA: J nie ma czasowników niladycznych. Jednak ten czasownik będzie działał tak samo bez względu na argument, który podasz. W przykładzie TIO nazywam to za pomocą
0
, ale mógłbym użyć99
lub''
równie dobrze.w jaki sposób
1+
dodaj jeden do ...[:?
pojedynczy rzut n-stronnej matrycy (strony czytające0
don-1
), gdzie liczban
określa ...(*1+?)
weź aktualny argumenty
i rzuć,?
aby utworzyć losową liczbę między0
iy-1
.1+
sprawia, że1
doy
włącznie. Wreszcie*
tworzy hak J, który pomnoży to przezy
ponownie.^:
rób to wiele razy ...(?`])
?
rzuć początkowym argumentem, to znaczy6
, ile razy powtórzyć. Jeśli wyrzucimy0
(odpowiadające a1
na Prime Bubble), argument przejdzie bez zmian.]
Wskazuje, że6
nie zmieniła się, to jest wartość początkowa powtarzane(*1+?)
czasownik, która określa wartości dla dyszy końcowej rolki.@6x
dołącza stały czasownik6
, abyśmy mogli go nazwać dowolną nazwą, ix
zmusza J do korzystania z rozszerzonego obliczania liczb całkowitych, którego potrzebujemy dla możliwie dużych liczb.źródło
in this case 0 executes the previous verb once, 1 twice, etc
dlaczego?K (oK) , 32 bajty
Rozwiązanie:
Wypróbuj online!
Zacznij od 6 i „1 wybierz 6”, powtarzaj razy „1 wybierz 6”:
Możesz zobaczyć iteracje, przełączając na skanowanie , np
źródło
(*).x
->*/x
i{
}/[*a;6,a:1+1?6]
->a{
}/6,a:*1+1?6
Galaretka , 9 bajtów
Link niladyczny, który daje dodatnią liczbę całkowitą.
Wypróbuj online!
Zapisywanie bajtu nad bardziej oczywistym
6X×$6X’¤¡X
W jaki sposób?
źródło
05AB1E , 10 bajtów
Wbudowany losowy wybór dla dużych list jest dość wolny, więc może spowodować przekroczenie limitu czasu, jeśli rzut Pierwszej Bańki to na przykład 6.
Wypróbuj online lub wypróbuj online z dodanymi nadrukami, aby zobaczyć rolki . (TIO używa starszej wersji 05AB1E, ponieważ jest nieco szybsza.)
Wyjaśnienie:
źródło
Galaretka , 9 bajtów
Wypróbuj online!
Odpowiedź Jonathana Allana twierdzi, że tak
. W rzeczywistości nie musimy dokonywać tak dużej modyfikacji. Dlatego jest to alternatywne podejście do odpowiedzi Jonathana Allana, a także miejsce spoczynku dla mojego początkowego nieprawidłowego 6-bajta. :(
źródło
Perl 5 , 54 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 16 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Naciśnij przycisk 6, aby przejść do wstępnie zdefiniowanej listy.
Powtórz losową liczbę razy od 1 do 6 ...
... wypchnij losową liczbę między 1 a iloczynem listy na listę.
Wypisz ostatnią liczbę wypchniętą na listę.
Alternatywne podejście, również 16 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Ustaw liczbę boków na 6.
Powtórz losową liczbę od 0 do 5 razy ...
... pomnóż liczbę stron przez losową liczbę od 1 do liczby stron.
Wydrukuj losową liczbę od 1 do liczby stron.
źródło
Python 3 , 76 bajtów
Wypróbuj online!
-2 bajty dzięki TFeld
źródło
R , 43 bajty
Wypróbuj online!
k
śledzi bieżącą liczbę twarzy na kości. Wykorzystuje fakt, żeT
jest inicjowany jako1
.Próbowałem kilku innych rzeczy, ale nie byłem w stanie pokonać tego prostego, bezpośredniego podejścia.
źródło
Galaretka , 10 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Rubin , 41 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Java 10,
2149386 bajtówWypróbuj online lub wypróbuj online z dodatkowymi liniami drukowania, aby zobaczyć kroki .
int
java.math.BigInteger
int
long
BigInteger
int
BigIntegers
)Wyjaśnienie:
źródło
int
int
typu.PHP , 59 bajtów
rozszerzony:
Nie jestem pewien, czy mam dołączyć otwarty tag.
Na moim komputerze zawiesza się, jeśli
$s*$r
jest zbyt duży, więc$q>=5
czasami nie jest drukowany ... ponieważ liczby stają się tak duże. Nie jestem pewien poprawki.źródło
Pyth , 14 bajtów
Wypróbuj online!
źródło
C # (.NET Core) , 136 bajtów
Wypróbuj online!
Jestem prawie pewien, że to działa, biorąc pod uwagę założenie o nieskończonej liczbie całkowitej, którą lubimy tutaj. Gdybym musiał poradzić sobie z przepełnieniem, musiałbym wykreślić zupełnie inną klasę.
źródło
System.ArgumentOutOfRangeException: 'maxValue' must be greater than zero
int
long
BigIntegers
Julia 1.0 , 60 bajtów
b=big(6)
sprawia, że działa z liczbami całkowitymi o dowolnym rozmiarze Wypróbuj online!źródło
Gaia , 13 bajtów
Wypróbuj online!
źródło