To wyzwanie jest hołdem dla użytkownika PPCG Dennisa za wygraną części rabusiów w The Programming Language Quiz .
Patrząc na stronę profilu Dennisa PPCG możemy zobaczyć całkiem imponujące rzeczy:
Obecnie ma ponad sześćdziesiąt osiem tysięcy reputacji, co czyni go drugim w klasyfikacji generalnej , przekraczając trzecie miejsce o prawie trzydzieści tysięcy. Niedawno wygrał nasze wybory na nowego moderatora i otrzymał błyszczący nowy diament obok swojego nazwiska. Ale osobiście uważam, że najbardziej interesującą częścią Dennisa jest jego identyfikator użytkownika PPCG: 12012.
Na pierwszy rzut oka 12012
wygląda prawie jak palindrom , liczba ta odczytuje to samo po odwróceniu, ale jest trochę poza. Może stać się palindromem, 21012
jeśli zamienimy pozycje pierwszego 1
i 2
, i może stać się palindromem, 12021
jeśli zamienimy ostatnie 1
i 2
. Ponadto, zgodnie z konwencją, że wiodące zera w liczbach nie są zapisywane, zamiana pierwszego 1
i 0
wyników na, 02112
a raczej na 2112
inny palindrom.
Zdefiniujmy liczbę Dennisa jako dodatnią liczbę całkowitą, która nie jest sama palindromiczna, ale może zostać przekształcona w palindrom poprzez zamianę pozycji co najmniej jednej pary dowolnych dwóch cyfr. Celu z szeregu Dennis liczba różnych par cyfr, które mogą być wymieniane w celu dokonania (niekoniecznie wyraźną) palindrom.
Tak więc kolejność 12012
jest 3 od 3 różnych par cyfr ( 12012
, , ) może być zastąpiony około produkować Palindromes. akurat jest najmniejszym numerem 3 Dennisa.12012
12012
12012
10
jest najmniejszą liczbą Dennisa i ma porządek 1, ponieważ przełączanie wokół 1
i 0
daje 01
aka, 1
czyli palindrom.
Urojone zera wiodące liczby nie liczą się jako cyfry przełączalne. Na przykład, zmieniając 8908
się 08908
i wymieniając dwie pierwsze cyfry uzyskać palindrom 80908
jest nieprawidłowy. 8908
nie jest liczbą Dennisa.
Można powiedzieć, że numery spoza Dennisa mają porządek 0.
Wyzwanie
Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą N i wypisuje lub zwraca N-tą najmniejszą liczbę Dennisa wraz z kolejnością w rozsądnym formacie, takim jak 12012 3
lub (12012, 3)
.
Na przykład 12012
jest 774-tym numerem Dennisa, więc jeśli 774
jest wejściem do twojego programu, wyjście powinno być coś w rodzaju 12012 3
. (Co ciekawe, 774 to kolejny numer Dennisa.)
Najkrótszy kod w bajtach wygrywa.
Oto pierwsze 20 liczb Dennisa i ich zamówienia w celach informacyjnych:
N Dennis Order
1 10 1
2 20 1
3 30 1
4 40 1
5 50 1
6 60 1
7 70 1
8 80 1
9 90 1
10 100 1
11 110 2
12 112 1
13 113 1
14 114 1
15 115 1
16 116 1
17 117 1
18 118 1
19 119 1
20 122 1