Biorąc pod uwagę dodatnią liczbę całkowitą n
, wyprowadzaj najmniejszą bazę, w b >= 2
której reprezentacja n
w bazie b
bez zer wiodących nie zawiera znaku 0
. Możesz to założyćb <= 256
dla wszystkich danych wejściowych.
Przypadki testowe
1 -> 2 (1)
2 -> 3 (2)
3 -> 2 (11)
4 -> 3 (11)
5 -> 3 (12)
6 -> 4 (12)
7 -> 2 (111)
10 -> 4 (22)
17 -> 3 (122)
20 -> 6 (32)
50 -> 3 (1212)
100 -> 6 (244)
777 -> 6 (3333)
999 -> 4 (33213)
1000 -> 6 (4344)
1179360 -> 23 ([12, 9, 21, 4, 4])
232792560 -> 23 ([15, 12, 2, 20, 3, 13, 1])
2329089562800 -> 31 ([20, 3, 18, 2, 24, 9, 20, 22, 2])
69720375229712477164533808935312303556800 -> 101 ([37, 17, 10, 60, 39, 32, 21, 87, 80, 71, 82, 14, 68, 99, 95, 4, 53, 44, 10, 72, 5])
8337245403447921335829504375888192675135162254454825924977726845769444687965016467695833282339504042669808000 -> 256 ([128, 153, 236, 224, 97, 21, 177, 119, 159, 45, 133, 161, 113, 172, 138, 130, 229, 183, 58, 35, 99, 184, 186, 197, 207, 20, 183, 191, 181, 250, 130, 153, 230, 61, 136, 142, 35, 54, 199, 213, 170, 214, 139, 202, 140, 3])
9
nie mają znaczenia, ponieważ nie są0
.Odpowiedzi:
Pyth , 6 bajtów
Sprawdź wszystkie przypadki testowe.
Jak to działa
Chociaż Pyth's
f
działa na1, 2, 3, 4, ...
(od 1), Pyth traktuje liczby w bazie 1 (jedne) jako wiązkę zer, więc podstawa 1 jest ignorowana.źródło
0 -> Falsy; > 0 -> Truthy
. Jest to celowe, które0
jest jednocześnieTruthy
iFalsy
w tej sytuacji?>
znak0
, co oznacza, że wszystko powyżej 0 jest prawdą.C,
5250 bajtówWypróbuj online!
C (gcc),
4745 bajtówWypróbuj online!
Dwa bajty zaoszczędzone dzięki sugestii @ Nevay na odpowiedzi @Kevin Cruijssen!
źródło
k%i
jest tutaj testem trójstronnym . Bardziej czytelny wariant byłbyk=(k%i?k:n*++i);
nawet bardziej jasno:if(k%i){k=k;}else{k=n*++i;}
.i,k;f(n){for(i=2,k=n;k;)k=k%i++?k/--i:n;return i;}
ii,k;f(n){for(i=2,k=n;k;)k=k%i++?k/--i:n;n=i;}
. Wszystkie podziękowania należą się @Nevay, który opublikował tę sugestię w odpowiedzi na moją przeniesioną Javę 8 .i, k;
if(n)
istniały w starożytnych wersjach C (K&R), ale tylko w erze, w którejreturn
wymagane były okrągłe nawiasy wokół niego argument. Jeśli chcesz używać K&Ri,k;
, musisz także użyćreturn(i);
. Powyższe może być gnuc, ale nie C.Haskell ,
565248 bajtówWypróbuj online!
Całkiem proste, ale nie mogę wymyślić żadnego dobrego sposobu na jego skrócenie
EDYCJA: Podziękowania dla Laikoni za uratowanie mnie 4 bajtów! Nie wiem, dlaczego nigdy nie myślałem
!!0
. Chyba powinien Próbowaliśmy usunięcie tych nawiasów ale mam mgliste wspomnienia z jakimś dziwnym błędem przy próbie użycia||
i&&
razem. Może mylę to z operatorami równości.EDYCJA 2: Dzięki @Lynn za golenie kolejnych 4 bajtów! Nie wiem, o czym nigdy
until
wcześniej nie wiedziałam .źródło
!!0
jest krótszy niżhead
i myślę, że możesz wstawić nawias#
.until :: (a → Bool) → (a → a) → a → a
oszczędza cztery bajty:f n=until(#n)(+1)2
Wolfram Language (Mathematica) , 33 bajty
Wypróbuj online!
źródło
Łuska , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 , 57 bajtów
Wypróbuj online!
Jest to jeden bajt krótszy niż funkcja rekurencyjna:
źródło
Galaretka , 7 bajtów
Wypróbuj online!
źródło
05AB1E , 6 bajtów
-4 bajty dzięki Adnan
Wypróbuj online!
źródło
[¹NÌDŠвPĀ#
1µNвPĀ
działa na 6 bajtówLB0.å0k
jest inną metodą całkowicie> _>.Łuska , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Java 8,
615654 bajtówWypróbuj tutaj.
Wyjaśnienie:
Mam wrażenie, że można to pograć w golfa, stosując podejście arytmetyczne.Rzeczywiście może, z portem odpowiedzi @Steadybox C , a następnie golfem o 2 bajty dzięki @Nevay .Stara ( 61 bajtów ) odpowiedź:
Wypróbuj tutaj.
Wyjaśnienie:
źródło
n->{int b=2,t=n;for(;t>0;)t=t%b++<1?n:t/--b;return b;}
Japt , 8 bajtów
Wypróbuj online!
Wyjaśnienie
Zwraca pierwszą liczbę (
X
), aby przekazać funkcję, zaczynając od2
Konwertuj liczbę wejściową na tablicę
X
cyfr podstawowych.Sprawdź, czy wszystkie cyfry są prawdziwe.
źródło
10
?JavaScript (ES6),
434137 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
Brachylog , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 , 57 bajtów
Wypróbuj online!
-1 dzięki Felipe Nardi Batista .
-2 dzięki Lynn (a teraz jest to duplikat jej rozwiązania: D)
źródło
a,b=a+c,d
naa+=c;b=d
while m>1
przezwhile m
(i wtedy jesteśmy przywiązane!)APL (Dyalog) ,
2019 bajtówWypróbuj online!
Jak zwykle dzięki @ Adám za pomoc na czacie i przygotowanie kodu do pracy w TIO. Ponadto oszczędzasz 1 bajt.
To tradfn ( upr itional F unctio n ) ciała. Aby go użyć, musisz przypisać mu nazwę (która znajduje się w polu nagłówka TIO), ująć w
∇
s (jeden przed nazwą i jeden w polu stopki TIO), a następnie wywołać ją, używając jego nazwy. Ponieważ używa quad (⎕
) do wprowadzania danych użytkownika, jest nazywany jakof \n input
zamiast zwykłegof input
W jaki sposób?
Następnie funkcja zwraca wynikową bazę.
źródło
n←⎕
będzie to prosta liczba i potrzebujesz1
jako początkowego argumentu do reszty kodu, możesz po prostu policzyć liczbę elementówn
((1), zastępując1⊣
ją≢
. Wypróbuj online!Proton , 40 bajtów
Wypróbuj online!
źródło
2..x
sprawdza podstawy w interwale[2, x)
, stąd nie udaje się dla przypadków testowych1
i2
.R ,
7971666365 bajtówWypróbuj online!
Ta odpowiedź opiera się na zmianie aranżacji Giuseppe w jednej pętli.
Zaoszczędzono 8 bajtów dzięki JDL i 6 bajtów dzięki Giuseppe.
źródło
b
dlaT
, który rozpoczyna się zdefiniowano jakoTRUE == 1
, eliminując potrzebęb=1
. Podobnie można subF
dok
(F
jestFALSE
)m%/%T
(dzielenie liczb całkowitych) zamiast(m-m%%T)/T
MATL ,
1312 bajtówWypróbuj online!
-1 bajt dzięki Luis Mendo. Ten program nie obsługuje przypadków testowych większych niż 2 ^ 53 (
flintmax
maksymalna kolejna liczba całkowita reprezentowana przez typ zmiennoprzecinkowy), ponieważ domyślnym typem danych jestdouble
MATL. Jednak powinna być w stanie znaleźć dowolną dowolną bazę zerową poniżej tej liczby.źródło
YA
przy użyciu podwójnych wewnętrznie, więc może obsługiwać dane wejściowe do maksymalnej liczby całkowitej reprezentowanej przez podwójną (patrzflintmax
). Czy to unieważnia odpowiedź? Zasadniczo algorytm działa dla dowolnej bazy, jawniePHP, 59 + 1 bajtów
przy użyciu wbudowanych , maks. podstawa 36:
brak wbudowanych,
6360 + 1 bajtów , dowolna baza:Uruchom jako potok z
-nR
lub wypróbuj je online .źródło
Faktycznie ,
1211 bajtówWypróbuj online!
Wykorzystuje ten konsensus . Dzięki Mego za pomoc w oszczędzaniu bajtów na czacie .
źródło
J, 26 bajtów
Chciałbym wiedzieć, czy można to poprawić.
Główny czasownik to dyadyczna fraza:
który otrzymuje dane wejściowe po lewej stronie i stałą 2 po prawej stronie. Ta główna fraza czasownika następnie korzysta z konstrukcji Do..While J., inkrementując odpowiedni argument y, o ile 0 jest elementem
e.
pierwotnego argumentu w bazie y.Wypróbuj online!
źródło
Lua ,
7776 bajtówWypróbuj online!
źródło
Droga Mleczna , 38 bajtów
stosowanie:
./mw base.mwg -i 3
Wyjaśnienie
Jestem pewien, że można to skrócić za pomocą pętli while zamiast pętli for, ale nie udało mi się tego uruchomić.
źródło
Skumulowane , 23 bajty
Wypróbuj online!
To zwiększa (
[1+]
) J, zaczynając od dwóch (2
), podczas gdy podstawowa reprezentacja J wejścia nie ma zer (all
iuntil
).źródło
Perl 5 , 52 + 2 (
-pa
) = 54 bajtówWypróbuj online!
źródło