Podając liczbę n
, napisz funkcję, która znajdzie najmniejszą podstawę, b ≥ 2
taką n
jak palindrom w podstawie b
. Na przykład wejście 28
powinno zwracać podstawę, 3
ponieważ trójskładnikowa reprezentacja 28 wynosi 1001. Chociaż 93
jest palindromem zarówno w podstawie 2, jak i podstawie 5, wynik powinien wynosić 2
od 2 <5.
Wejście
Dodatnia liczba całkowita n < 2^31
.
Wynik
Zwróć najmniejszą bazę, b ≥ 2
tak aby podstawową b
reprezentacją n
była palindrom. Nie zakładaj żadnych zer wiodących.
Próbki (wejście => wyjście):
11 => 10
32 => 7
59 => 4
111 => 6
Zasady
Najkrótszy kod wygrywa.
code-golf
palindrome
base-conversion
ntomlin1996
źródło
źródło
n
może być 1, a 2 nie jest podstawowym palindromem 1. Jednak każdy pozytywn
jest podstawowymn + 1
palindromem.Odpowiedzi:
CJam , 19 bajtów / GolfScript, 23 bajty
lub
Wypróbuj online:
Przykłady
Jak to działa
W przypadku GolfScript
q~
jest~
,_
jest.
,b
jestbase
,W
jest-1
ig
jestdo
.źródło
GolfScript, 20 znaków
Inne podejście z GolfScript inne niż Dennis . Pozwala to uniknąć kosztownej jawnej pętli na rzecz operatora znajdowania . Wypróbuj online .
źródło
x = 1
lubx = 2
. Oba są jednocyfrowymi podstawowymix + 1
palindromami, więcx))
należy to naprawić.Mathematica,
6766 bajtówTak naprawdę nie może konkurować z GolfScript pod względem wielkości kodu, ale wynik dla 2 32 jest w zasadzie natychmiast zwracany.
źródło
PalindromeQ
do sprawdzania wstecznego?)Japt ,
129 bajtówO ile nie spóźniłem się na lewę (jest już późno!), To powinno działać dla wszystkich liczb, do co najmniej włącznie
2**53-1
.W moich (co prawda ograniczonych i całkowicie losowych) testach uzyskałem wyniki do podstawy
11601
310,515
tej pory (!). Nie zbyt nikczemny jeśli wziąć pod uwagę tylko natywnie obsługuje JavaScript podstaw2
do36
.Spróbuj
Wyjaśnienie
Domniemane wprowadzenie liczby całkowitej
U
.Począwszy od
2
, zwróć pierwszą liczbę, która zwraca true po przejściu przez następującą funkcję, przyX
czym jest to bieżąca liczbaKonwertować
U
na tablicęX
cyfr podstawowych .Sprawdź, czy ta tablica jest palindromem.
źródło
N.ì(n)
że poradzi sobie z bazami większymi niż36
. Dziękuję za to.N.ì(n)
ponieważ używamy surowych liczb całkowitych ;-)Python 2 (83)
Nie jestem pewien, jaki format wejściowy / wyjściowy chciał pytanie. Napisałem funkcję. Kod wykorzystuje opcjonalne dane wejściowe
b
do śledzenia bieżącej bazy, którą testuje. Thewhile
pętle konwertuje liczbę na listę cyfr w bazieb
.Ostatnia linia zwraca
b
if, jeślil
jest palindromem, i rekurencyjnie próbuje następnejb
inaczej. Sztuczka indeksowania według logiki nie działa tutaj, ponieważ spowodowałaby ocenę obu opcji niezależnie od logicznej wartości logicznej, a rekurencja nigdy nie byłaby dno.źródło
JavaScript, 88 bajtów
Nie golfowany:
źródło
JavaScript, 105 bajtów
JSFiddle: http://jsfiddle.net/wR4Wf/1/
Pamiętaj, że ta implementacja działa również poprawnie dla dużych baz. Na przykład
f(10014)
zwraca 1668 (10014 to 66 w podstawie 1668).źródło
s/var b=2,c,d/b=d=2/
zyskać 6 dodatkowych bajtów;)Bash + coreutils, 100 bajtów
Używa
dc
formatowania podstawowego. Trudna rzecz jestdc
, że format jest inny dla n> 16.Przypadki testowe:
źródło
J - 28 znaków
Wyjaśniono:
#.inv~
- Rozwiń lewy argument do podstawy w prawym argumencie.(-.@-:|.@)
- Zwraca 0, jeśli rozwinięcie jest palindromiczne, a 1 w przeciwnym razie.(1+]^:)
- Zwiększ poprawny argument o jeden, jeśli zwróciliśmy 1, w przeciwnym razie nie podejmuj żadnych działań.^:_
- Powtarzaj powyższe czynności, aż nie podejmie żadnych działań.&2
- Przygotuj odpowiedni argument jako 2, dzięki czemu będzie to funkcja jednego argumentu.Przykłady:
źródło
2+1 i.~[#.inv"*(-:|.@)~2+i.
dla 27 bajtów. (Nie chcę publikować osobno. Zostawię to tutaj.)R,
12295 bajtówTrzyletnie rozwiązanie o wielkości 122 bajtów:
Z kilkoma wyjaśnieniami:
źródło
Łuska ,
119 bajtówDzięki @Zgarb za -2!
Wypróbuj online!
Wyjaśnienie
źródło
Uwaga: Pyth jest nowszy od tego pytania, więc nie można wygrać.
Pyth, 10 bajtów
Wypróbuj tutaj.
źródło
Scala, 83 bajty
źródło
05AB1E , 8 bajtów
Wypróbuj online!
źródło
Perl 5 , 84 + 1 (-p) = 85 bajtów
Wypróbuj online!
źródło
JavaScript 72 bajty
źródło
Mathematica 42 bajty
Odmiana wpisu Martina Endera. Wykorzystuje
IntegerReverse
(udostępniony w wersji 10.3), z którego rezygnujeIntegerDigits
.źródło
Java 8, 103 bajty
Wyjaśnienie:
Wypróbuj tutaj.
źródło