Zaskoczyło mnie to, że nie zadałem już tego pytania, chociaż na kasach rzutek istnieje wielkie pytanie: rzutki spotykają Codegolfa
Twoim zadaniem jest obliczyć, które wyniki nie są możliwe przy rzutkach „n” poniżej maksymalnego wyniku dla rzutek „n”. Np. Dla n = 3 maksymalny możliwy wynik to 180, więc powróciłbyś [163,166,169,172,173,175,176,178,179]
Podsumowanie reguł dla gołych kości:
Możliwe wyniki dla jednej strzałki to:
- 0 (brak)
- 1-20, 25, 50
- podwójne lub potrójne 1-20
Zasady:
- obowiązują standardowe zasady gry w golfa
- musisz wziąć pojedynczy parametr „n” w dowolny sposób na jaki pozwala Twój język i zwrócić listę / tablicę wszystkich unikalnych wyników poniżej maksymalnej liczby punktów, której nie można zdobyć za pomocą n rzutek. Możesz również wydrukować te wartości na konsoli.
- kolejność wyników jest nieistotna
- najkrótszy kod w bajtach wygrywa
Odpowiedzi:
Python 3 ,
80795957 bajtów-1 bajt dzięki Arnauld
-20 bajtów dzięki ArBo
-2 bajty dzięki ujemnej siódemce
Wypróbuj online!
źródło
Perl 6 , 42 bajtów
Wypróbuj online!
Brute force rozwiązanie, które wypracowuje wszystkie możliwe wartości rzutek.
źródło
JavaScript (ES6),
5554 bajtówZaoszczędzono 1 bajt dzięki @Shaggy
Na podstawie wzoru użytego przez Rod .
Wypróbuj online!
źródło
s=60*n
->,n*=60
aby zapisać bajt.Perl 6 , 39 bajtów (37 znaków)
To zdecydowanie używa potężnego młota, ale działa. (Nie tylko brutalnie go zmusza, ale brutalnie brutalnie zmusza)
Wypróbuj online!
Oto wyjaśnienie:
X* ^4
Krzyż mnożnik generuje wiele zduplikowanych wartości (nie będzie 20+ Zera zaangażowanych i to przed robi przekrój dodatkowo), ale to nie powoduje żadnych problemów, ponieważ używamy różnicę zestaw∖
, który działa z unikalnymi wartościami.To się obecnie nie powiedzie
$n == 1
(co powinno zwrócić pusty zestaw), ale zgłoszono problem i prawdopodobnie będzie działać w przyszłych wersjach. Wersja JoKinga jest trochę dłużej, ale działa$n == 1
w obecnym Rakudo.źródło
Galaretka , 19 bajtów
Wypróbuj online!
źródło
MATL ,
2523 bajtówDzięki @Giuseppe , który naprawił błąd i grał w golfa 2 bajty!
Wypróbuj online!
Wyjaśnienie
Podejście brutalnej siły.
źródło
n=2
, więc naprawiłem ją i uruchomiłem bajt, aby uruchomić! Wypróbuj online!J ,
4845 bajtówWypróbuj online!
-3 bajty dzięki FrownyFrog
Podjęto próbę brutalnej siły, ale nie udało się pobić tego tłumaczenia pomysłu Rod.
źródło
626b66jh
b
jest tam „ogranicznik” i czytałem go jako część numeru ....R , 64 bajty
Wypróbuj online!
Porty niesamowite odpowiedź znaleźć Rod .
R ,
857368 bajtówWypróbuj online!
Brutalna siła generuje wszystkie możliwe wyniki za pomocą
n
rzutek, a następnie przyjmuje odpowiednią ustawioną różnicę.Kredyt dla Octave rozwiązania OrangeCherries' za przypomnienie mi
combn
.5 dodatkowych bajtów dzięki sugestii Robina Rydera
%o%
.źródło
FUN
argumentucombn
! Można uzyskać 68 bajtów ze%o%
zamiastx*3,x*2
.Oktawa ,
91 bajtów73 bajty71 bajtówKolejna metoda brutalnej siły.
Zejdź do
73 bajtówdzięki GiuseppeZejdź do 71 bajtów, zastępując nchoosek combnk
Wypróbuj online!
źródło
Pyth , 22 bajty
Wypróbuj online!
Przekroczono limit czasu w TIO dla danych wejściowych większych niż 3.
źródło
U4
sięS3
wydajność poprawia się trochę, ponieważ oba iloczyn kartezjański nie mają do czynienia z tymi wszystkimi dodatkowymi bezużytecznych 0s. Wejdź 3 wyjścia w ~ 13 sekund zamiast ~ 30 w tym przypadku (chociaż wejście 4 wciąż się kończy, a to jest kod golfowy, więc nie ma to tak wielkiego znaczenia; p).-S*60QsM^*MP*S3aU21 25
, ale ta przestrzeń pomiędzy21
i25
jest nieco denerwująca .. Przy włączonym zakresie włączającym opartym na 0yT
zamiast tego można użyć21
czegoś takiego:-S*60QsM^*MP*S3a}ZyT25
( ale potemZ
oczywiście bez}
zastąpienia go zakresem obejmującym 0). Może widzisz coś do golfa w tym alternatywnym podejściu dodawania25
do listy i usuwania75
po pierwszym kartezjańskim produkcie?Stax , 24 bajty
Uruchom i debuguj
Jest dość powolny dla n = 3, a stamtąd gorzej.
źródło
Python 2 , 125 bajtów
Wypróbuj online!
Python 3 ,
126125122 bajtówWypróbuj online!
-3 bajty, dzięki Rod
źródło
05AB1E ,
212018 bajtów-3 bajty dzięki @Grimy .
Przekracza się dość szybko, im wyższy wkład, ze względu na wbudowany produkt kartezjański
ã
.Wypróbuj online lub sprawdź kilka innych przypadków testowych .
Wyjaśnienie:
źródło
60 * input
Galaretka , 28 bajtów
Wypróbuj online!
źródło
MathGolf , 26 bajtów
Wypróbuj online!
-2 bajty dzięki Kevin Cruijssen
Wyjaśnienie
źródło
3╒*mÅ~*N_∞α+
naN▐3╒*mÅ~*╡
. (PS: Dlaczego w nagłówku wyjaśnienia wspominasz „ dla wejścia 3 ”)Wolfram Language (Mathematica) , 69 bajtów
Wypróbuj online!
Na podstawie odpowiedzi lirtosiasta .
Array
Trzeci argument określa przesunięcie (domyślnie 1), a czwarty argument określa głowicę, której należy użyć zamiastList
.##&
jest równoważneSequence
, więcArray[1##&,{4,21},0,##&]
zwraca (spłaszczony)Sequence
zawierający elementy produktu zewnętrznego0..3
i0..20
.źródło
Węgiel drzewny , 36 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wykorzystuje algorytm @ Rod; brutalna siła zajęłaby 60 bajtów. Działa poprzez obcięcie łańcucha do 9 znaków, jeśli wartość wejściowa jest większa niż 1, a następnie pobranie rzędnych znaków i dodanie odpowiedniej wielokrotności 60.
źródło
C # (interaktywny kompilator Visual C #) , 305 bajtów
Cóż, wydaje się, że nie ma łatwego sposobu obliczenia wszystkich możliwych kombinacji w C #, więc ta katastrofa kodu to wszystko, co mogłem wymyślić.
Ponadto ukończenie zajmuje około 30 sekund ...
Chciałbym zobaczyć lepsze rozwiązanie.
Wypróbuj online!
źródło
Kotlin , 118 bajtów
Wypróbuj online!
źródło
Perl 5
-n
,969391 bajtówWypróbuj online!
Został zoptymalizowany pod kątem długości kodu, a nie czasu działania, więc jest trochę powolny. Generuje wiele niepotrzebnych wpisów dla swojego skrótu wyszukiwania. Uruchomienie
@b
tablicyuniq
znacznie przyspiesza ją, ale kosztuje 5 bajtów więcej, więc tego nie zrobiłem.źródło
Wolfram Language (Mathematica) , 81 bajtów
Wypróbuj online!
Mathematica ma kilka powiązanych wbudowanych funkcji, w tym
FrobeniusSolve
ograniczoną formęIntegerPartitions
, ale żadne z nich nie jest krótsze niż brutalna siła.źródło
{163,166,169,172,173,175,176,178,179}