Questa sfida è un tributo all'utente Dennis PPCG per aver vinto la parte dei ladri di The Programming Language Quiz .
Guardando la pagina del profilo PPCG di Dennis possiamo vedere alcune cose piuttosto impressionanti:
Attualmente ha oltre sessantotto mila reputazione, il che lo rende il secondo in classifica generale , superando il terzo posto di quasi trentamila. Di recente ha vinto le nostre elezioni per un nuovo moderatore e ha ottenuto un nuovo brillante diamante accanto al suo nome. Ma personalmente ritengo che la parte più interessante di Dennis sia il suo numero ID utente PPCG: 12012.
A prima vista 12012
sembra quasi un palindromo , un numero che legge lo stesso quando è invertito, ma è un po 'fuori. Può diventare il palindromo 21012
se scambiamo le posizioni del primo 1
e 2
, e può diventare il palindromo 12021
se scambiamo l'ultimo 1
e 2
. Inoltre, in base alla convenzione, gli zero iniziali in un numero non vengono scritti, scambiando il primo 1
e i 0
risultati 02112
o piuttosto 2112
un altro palindromo.
Definiamo un numero di Dennis come un numero intero positivo che non è palindromico stesso ma può essere trasformato in un palindromo scambiando le posizioni di almeno una coppia di due cifre. L' ordine di un numero di Dennis è il numero di coppie distinte di cifre che possono essere scambiate per creare un palindromo (non necessariamente distinto).
Quindi l'ordine di 12012
è 3 da 3 distinte coppie di sue cifre ( 12012
, , ) può essere scambiato intorno a produrre palindromi. sembra essere il numero 3 Dennis più piccolo ordine.12012
12012
12012
10
è il numero Dennis più piccolo e ha l'ordine 1 perché il cambio intorno 1
e 0
dà 01
aka 1
che è un palindromo.
Gli zeri iniziali immaginari di un numero non contano come cifre commutabili. Ad esempio, la modifica 8908
di 08908
e scambiare le prime due cifre per ottenere il palindromo 80908
non è valido. 8908
non è un numero Dennis.
Si potrebbe dire che i numeri non Dennis hanno un ordine 0.
Sfida
Scrivi un programma o una funzione che accetta un numero intero positivo N e stampa o restituisce l'ennesimo numero Dennis più piccolo insieme al suo ordine in un formato ragionevole come 12012 3
o (12012, 3)
.
Ad esempio, 12012
è il 774 ° numero Dennis, quindi se 774
è l'input per il tuo programma, l'output dovrebbe essere qualcosa di simile 12012 3
. (Curiosamente, 774 è un altro numero di Dennis.)
Vince il codice più breve in byte.
Ecco i primi 20 numeri di Dennis e i loro ordini di riferimento:
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