Zainspirowany tym . Istnieje liczba podana jako liczba całkowita, ciąg znaków lub tablica cyfr (do wyboru). Znajdź bazę, w której reprezentacja liczby będzie miała najwięcej „4”, i zwróć tę bazę.
Wynik liczbowy 624 5 444 10 68 16
ograniczenia:
- Zwrócona baza nie powinna być większa niż wartość wejściowa.
- liczby mniejsze lub równe abs (4) nie powinny być uważane za prawidłowe dane wejściowe, więc niezdefiniowane zwroty są dopuszczalne
[1,15,3,64,43]
dla pewnej liczby w bazie80
. Podajesz tylko numer bazowy, więc możesz technicznie przetestować każdą bazę od2
don
.1
,2
i3
, które mają taką samą liczbę „4” (0) w każdej bazie? Ponadto wiele liczb ma tę samą liczbę „4” w wielu bazach (np.4
W dowolnej bazie> 5,44
w dowolnej bazie> 45,14
w bazie 9 lub dowolnej bazie> 15 itd.). Czy poprawna odpowiedź powinna być najmniejszą bazą z największą liczbą „4”?Odpowiedzi:
APL (
3119)Teraz przetestuj wszystkie możliwe zasady.
Wyjaśnienie:
⍳K←⎕
: odczytaj dane wejściowe użytkownika, zapisz w K. Zrób listę od 1 do K, które są podstawą do wypróbowania.{
...}¨
: dla każdego z nich uruchom następującą funkcjęK⊤⍨K⍴⍵
: zakoduj K w tej bazie, podając listę cyfr (jako liczb) na bazę. Używaj cyfr K (duże przeszacowanie, ale to nie ma znaczenia, ponieważ nieużywane i tak będą zerowe).4=
: sprawdź, które z nich są równe 4+/
: zsumuj je, teraz wiemy, ile czwórek na bazę⊃⍒
: podaj indeksy listy, jeśli byłyby posortowane w dół, więc indeks największej z nich znajduje się z przodu. Weź pierwszą pozycję z tej listy.źródło
⍨
GolfScript, 30 znaków
Działa z każdą bazą - przetestuj kod online .
Komentarz: To rozwiązanie zostało oparte na oryginalnej wersji pytania. W ten sposób może zwrócić bazę większą niż wejście, np. Dla wejścia 4 poprawnie zwraca podstawę 5 - co nie jest już ważne w nowych regułach.
źródło
GolfScript (23 znaki)
lub
lub
Zauważ, że pobiera to dane ze standardowego wejścia: dla sprawiedliwego porównania z wersją Howarda GolfScript odejmij jeden znak.
Howard zwraca uwagę, że reguły się zmieniły i nie jest zbyt logiczne, aby wykluczyły je
4
jako możliwe dane wejściowe, gdy mają prawidłowe dane wyjściowe (dowolna liczba całkowita większa niż 4). Do pokrycia tej sprawy również potrzebne są dodatkowe 2 znaki, które można dodawać na różne sposoby:lub
będąc kilkoma oczywistymi.
źródło
Python 2.x, 77 znaków
Działa do podstawy 98 i liczb o długości maksymalnie 98 cyfr.
źródło
J, 38 znaków
Stosowanie:
źródło
VBA, 121
stosowanie:
?k(num)
=k(A1)
źródło
For w=5To a
Mathematica 59
Kod
Nadajmy powyższej funkcji nazwę.
Wyjaśnienie
Count[IntegerDigits[n,k],4]
: Policz liczbę czwórek w podstawowej k reprezentacji n .Sort
podstawy od najmniejszej do większości 4s.Niektóre numery specjalne
Teraz zastosujmy whatBase do następujących numerów specjalnych.
Jeśli przekonwertujesz każdy numer na odpowiednią bazę, zobaczysz, co jest w nich specjalnego.
źródło
n
tam użyć . Poza tymMaximalBy
naprawdę pomaga, powala do 49 bajtów:MaximalBy[Range[a=#],a~IntegerDigits~#~Count~4&]&
(po prostu zignoruj wiadomości próbujące użyć base-1)Japt
-h
, 10 bajtów444
w bazie10
jest,[4,4,4]
która zawiera liczbę i cyfrę4
3 razy, ale444
w bazie100
jest,[4,44]
która zawiera również cyfrę4
3 razy, ale tylko jako liczba raz. Biorąc pod uwagę oczekiwany wynik w wyzwaniu dla444
przypadku testowego, sądzę, że powinniśmy liczyć liczbę 4:Spróbuj
Ale jeśli są liczenia cyfrę 4 następnie:
Spróbuj
źródło
C - (114 znaków)
W całej swojej golfowej chwale:
I nieco nie golfisty:
Dla zabawy oto wynik dla liczb
[0,127]
(są to największe podstawy pod samym numerem wejściowym).źródło
R -
148137 znaków(tak daleko od reszty zawodów, ale nadal)
Zasadniczo przekształć dane wejściowe z bazy 10 na wszystkie bazy z 4 na n (używając modulo
%%
i liczb całkowitych%/%
) i wybierz indeks pierwszego, który ma najwięcej 4s.źródło
Tłumaczenie J rozwiązania APL @marinus:
Dla zainteresowania, oto kilka wartości:
Wyprowadza najmniejszą bazę, która daje czwartą transformację. Dla kilku ostatnich wartości w tabeli reprezentacje wyglądają jak „4n” (np. 31 w podstawie 7 to „43”).
źródło
Galaretka , 6 bajtów
Wypróbuj online!
Wysyła „wszystkie” zasady do N, co daje najwięcej 4. Jeśli chcesz maksymalną lub minimalną bazę, dodaj
Ṁ
(maks.) LubṂ
(min).Jak to działa
źródło
05AB1E ,
109 bajtów-1 bajt dzięki @Cowabunghole .
Jeśli wiele zasad ma taką samą liczbę 4s, wygeneruje najmniejszą (tzn.
16
Spowoduje6
, ale12
będzie również możliwą mocą wyjściową).Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Qƶà
zk>
? tzn. znaleźć indeks maksymalny oparty na 0 i zwiększyć go?C # z Linq 273
lub
Jestem pewien, że liczbę zmiennych można zmniejszyć, a if można przekonwertować na? No cóż...
źródło
C # (
482~ 423 bajtów)Pierwsza próba rozwiązania „golfowego”. Użyłem w zasadzie tego samego algorytmu, co VBA powyżej. Prawdopodobnie mógłbym zapisać niektóre bajty wstawiające funkcję konwersji lub skracające nazwę. Jak powiedziałem, jest to pierwsza próba, więc proszę, bądź delikatny.
Z białymi znakami:
źródło
namespace
jest to wymagane. Wszystkie nazwy powinny być pojedynczymi znakami, w tymProgram
icBase
. I tak, powinieneś inlinecBase
. Połącz również deklarację i inicjalizację, tjint c=0,m=0
.int
parametr i zwracaint
parametr, nawet bezMain
metody, i wywołuje liczenie znaków swój wynik.Burleska - 28 bajtów
Wypróbuj online.
źródło
k , 18 bajtów
Wypróbuj online!
źródło
Perl 6 , 44 bajtów
Wypróbuj online!
Dobry stary polimod .
źródło
Łuska , 9 bajtów
Wypróbuj online!
źródło