Biorąc pod uwagę dodatnią liczbę całkowitą N
, wyprowadzaj najmniejszą dodatnią liczbę całkowitą taką, że liczba ta jest palindromem (tzn. Stanowi swoją własną odwrotność) i jest podzielna przez N
.
Palindrom (tj. Wynik) nie może wymagać początkowego zera, aby być palindromem, np. 080
Nie jest poprawną odpowiedzią 16
.
Dane wejściowe nigdy nie będą wielokrotnością 10, z poprzedniego powodu.
Twój program może zająć tyle czasu, ile to konieczne, nawet jeśli w praktyce odpowiedź byłaby o wiele za długa.
Wejścia i wyjścia
- Możesz wziąć dane wejściowe
STDIN
jako argument funkcji lub coś podobnego. - Możesz wydrukować dane wyjściowe
STDOUT
, zwrócić je z funkcji lub coś podobnego. - Wejścia i wyjścia muszą być w systemie dziesiętnym.
Przypadki testowe
N Output
1 1
2 2
16 272
17 272
42 252
111 111
302 87278
1234 28382
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
N
Odpowiedzi:
2sable / 05AB1E , 6/7 bajtów
2sable
Wyjaśnienie
Wypróbuj online
05AB1E
Różnica w stosunku do kodu 2sable polega na tym, że dane wejściowe są domyślnie tylko raz w 05AB1E, więc tutaj musimy
¹
ponownie uzyskać pierwsze dane wejściowe.Wypróbuj online
Zapisano 1 bajt z 2sable, jak sugeruje Adnan
źródło
[DÂQ#+
.Haskell,
453734 bajtówźródło
Pyth, 7 bajtów
Wypróbuj online: demonstracja
Wyjaśnienie
źródło
Java,
16415912610894 bajtówWersja golfowa:
Wersja bez golfa:
Wołanie do Emigny i Kevina Cruijssena za wkład w ulepszenia i zmniejszenie bajtów prawie o połowę :)
źródło
x % a == 0
zbyteczne, gdy inicjujesz x jako a i zwiększasz go tylko o a? Ponadto, czy porównanie z odwróceniem łańcucha można wykonać w warunkowym while?import org.apache.commons.lang.StringUtils;
i używaćorg.apache.commons.lang.StringUtils.reverse
bezpośrednio.for(;;)
jest krótszy niżwhile(1>0)
. Nie ma potrzeby korzystania z pełnego programu, po prostuint c(int a){...}
zrobiłbym to jako prawidłową odpowiedź, ponieważ pytanie ma następującą zasadę: „ Możesz wziąć dane wejściowe jako argument funkcji. Możesz zwrócić dane wyjściowe z funkcji. ” @Emigna rzeczywiście ma rację, że kontrola modulo nie jest konieczna.x += a
). Nie muszę sprawdzać podzielności :) i dziękuję za wskazówki dotyczące gry w golfa!C #,
10380 bajtówBez golfa
źródło
x.ToString()
„x +” „” pozwoli zaoszczędzić sporo znaków.Python 2, 46 bajtów
Ideone to!
Rozwiązanie rekurencyjne z
c
licznikiem.Sprawa
0
jest interesująca, ponieważ chociażc=0
spełnia warunek palindromu, nie zostanie zwrócona, ponieważccc and 0 or xxx
zawsze wracaxxx
.źródło
c*(`c`[::-1]==`c`)or
.PHP, 39 bajtów
;
po chwili nic nie robićstrrev
zwraca ciąg do tyłuTa sama długość z pętlą for
źródło
Brachylog , 8 bajtów
Wypróbuj online! (około 5 sekund na
1234
)Sprawdź wszystkie przypadki testowe. (około 20 sekund)
źródło
JavaScript (ES6),
5551 bajtów4 bajty dzięki Neilowi.
źródło
+
wydaje się niepotrzebny.(x,c=x)
pozwalają uniknąć&&c
?c^[...c+""].reverse().join``?f(x,x+c):c
aby zaoszczędzić jeszcze jeden bajt.c-
działałby dla nieco wyższych liczb niżc^
w razie potrzeby.Pyke,
119 bajtówWypróbuj tutaj!
źródło
C,
217189 bajtówWersja samodzielna:
Wywołanie do wersji funkcji:
Nie golfowany:
Wywołanie funkcji niepoznanej:
Dołączyłem samodzielną wersję dla historyczności.
To jest mój pierwszy codegolf, każdy komentarz jest mile widziany!
źródło
main()
niezależnie od twoich preferencji. Nie grasz w baseball, uruchamiając najpierw dwanaście pętli przed oznaczeniem „ponieważ wolę”, nigdy nie dotrzesz bezpiecznie. Jest to konkurencja, a podstawową zasadą jest użycie wszelkich niezbędnych i legalnych środków w celu zmniejszenia liczby bajtów.int f(int a)
->f(a)
2) jeśli musisz zadeklarować niektóre z nichint
, możesz użyć parametrów funkcji:int f(int a){int b;
->f(a,b){
3)sprintf
nigdy nie zwróci 0, więc możesz użyć wwhile
:while(1){sprintf(c,"%d",b);
->while(sprintf(c,"%d",b)){
4 ) użyj K&R C do zdefiniowania funkcji, aby tou mogła łączyć się z moją drugą wskazówką:int s(char*a){int b=strlen(a);for(int i=0
->s(a,b,i)char*a;{b=strlen(a);for(i=0;
R,
117113109101 bajtówBez golfa
all(charToRaw(a)==rev(charToRaw(a)))
sprawdza, czy w każdej pozycjia
wartośća
i jej odwrotność są takie same (tj. czya
jest palindromiczne).Może być możliwe wygranie niektórych bajtów przez zabawę z
types
.źródło
Faktycznie ,
1514 bajtówZapytany o odpowiedź przez Dziurawą Zakonnicę. Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!
Ungolfing
źródło
Haskell,
64 6356 bajtówZadzwoń z
(1!)16
lub po prostu1!16
. Wypróbuj na Ideone.źródło
VBSCRIPT, 47 bajtów
bez golfa
źródło
Perl, 25 bajtów
Obejmuje +2 za
-ap
Uruchom z wejściem na STDIN:
palidiv.pl
:źródło
SILOS , 109 bajtów
Wypróbuj online!
źródło
Japt , 14 bajtów
Wypróbuj online!
Dziękujemy ETHproductions za pomoc! :)
źródło
MATL , 10 bajtów
Wypróbuj online!
źródło
PowerShell v2 +, 72 bajty
Długi z powodu sposobu cofania w PowerShell - niezbyt dobrze. ;-)
Pobiera dane wejściowe
$args[0]
, przechowuje w$i
(nasza zmienna pętli) i$n
(nasze dane wejściowe). Pętle nieskończenie rosną$i
za$n
każdym razem (aby zapewnić podzielność).Przy każdej iteracji sprawdzamy, czy
$i
jest to palindrom. Dzieje się tu trochę sztuczek, więc wyjaśnię. Najpierw bierzemy to$i
i zaostrzamy"$i"
. Jest to następnie indeksowane tablicowo w odwrotnej kolejności,["$i".length..0]
zanim zostanie z-join
powrotem edytowane do łańcucha. Jest to podawane po prawej stronie-eq
operatora uality, który domyślnie rzutuje ciąg z powrotem na[int]
, ponieważ jest to lewy operand. Uwaga: ten rzutowanie usuwa wszystkie wiodące zera z palindromu, ale ponieważ jesteśmy pewni, że dane wejściowe nie są podzielne przez10
, to w porządku.Następnie
if
jest to palindrom, po prostu umieszczamy$i
na rurociągu iexit
. Dane wyjściowe są niejawne na końcu wykonania.Przypadki testowe
źródło
MATLAB, 76 bajtów
Format połączenia to
p(302)
wynik, że jest to ciąg znaków.Nic mądrego tutaj. Wykonuje wyszukiwanie liniowe za pomocą funkcji
num2str()
ifliplr()
.To brzydkie ustawienie jest odrobinę krótsze niż użycie
while(1) ... if ... break end
wzoru.Bez golfa
źródło
Mathematica, 49 bajtów
Rozpoczyna wyszukiwanie od
c = N
i zwiększa,c
jeśli nie jest palindromem i nie można go podzielićN
. Po spełnieniu warunków wyjściac
.źródło
Galaretka, 12 bajtów
Wypróbuj online!
Wyjaśnienie:
Ten link wymaga 1 argumentu. Gdy
µ
s podzielić ją na 4 części. Zaczynając od ostatniego i przesuwając się w lewo:źródło
Eliksir , 75 bajtów
źródło
Python 2,
6665 bajtówi
jest wejściem ix
jest (ostatecznie) wyjściemPo przewinięciu innych odpowiedzi znalazłem krótszą odpowiedź w Pythonie 2, ale włożyłem wysiłek w moje rozwiązanie, więc równie dobrze mogę tu rzucić. ¯ \ _ (ツ) _ / ¯
źródło
[::-1] else
.return x if x%i==0&&
x==
x[::-1]else f(i,x+1)
, co oznacza, że możesz zrobić z niego lambda, a golf więcej bajtów?REXX, 46 bajtów
źródło
Python 2 , 44 bajty
Wypróbuj online!
Wiem, że pytanie zostało wysłane ponad sześć miesięcy temu, ale było ono krótsze niż jakiekolwiek inne przesłanie Pythona.
źródło
QBIC , 29 bajtów
Wyjaśnienie:
źródło
Perl 6 , 35 bajtów
Wyjaśnienie:
źródło
Perl 6, 39 bajtów
(33 z wyłączeniem
my &f=
)źródło