Este desafio é uma homenagem ao usuário do PPCG Dennis por ganhar a parte dos ladrões do The Programming Language Quiz .
Olhando para a página de perfil PPCG de Dennis , podemos ver algumas coisas bastante impressionantes:
Atualmente, ele tem mais de sessenta e oito mil reputação, o que o coloca em segundo lugar no ranking geral , ultrapassando o terceiro lugar em quase trinta mil. Recentemente, ele venceu nossa eleição para um novo moderador e recebeu um novo diamante brilhante ao lado de seu nome. Mas, pessoalmente, acho que a parte mais interessante sobre Dennis é seu número de identificação de usuário PPCG: 12012.
À primeira vista, 12012
quase parece um palíndromo , um número que lê o mesmo quando invertido, mas está um pouco fora. Pode se tornar o palíndromo 21012
se trocarmos as posições do primeiro 1
e 2
, e pode se tornar o palíndromo 12021
se trocarmos o último 1
e 2
. Além disso, seguindo a convenção de que zeros à esquerda em um número não são gravados, troque o primeiro 1
e os 0
resultados por, 02112
ou melhor, 2112
qual é outro palíndromo.
Vamos definir um número de Dennis como um número inteiro positivo que não é palindrômico, mas que pode ser transformado em um palíndromo, trocando as posições de pelo menos um par de dois dígitos. A ordem de um número de Dennis é o número de pares distintos de dígitos que podem ser trocados para formar um palíndromo (não necessariamente distinto).
Assim, a fim de 12012
se desde 3 3 pares distintos de seus algarismos ( 12012
, , ) podem ser trocadas para produzir palindromas. passa a ser o menor número de 3 Dennis da ordem.12012
12012
12012
10
é o menor número de Dennis e tem a ordem 1 porque alternar entre 1
e 0
dá 01
aka 1
que é um palíndromo.
Os zeros iniciais imaginários de um número não contam como dígitos comutáveis. Por exemplo, alterar 8908
a 08908
e trocando os dois primeiros dígitos para obter o palíndromo 80908
é inválido. 8908
não é um número de Dennis.
Pode-se dizer que os números não-Dennis têm a ordem 0.
Desafio
Escreva um programa ou função que receba um número inteiro positivo N e imprima ou retorne o enésimo menor número de Dennis, juntamente com a ordem em algum formato razoável, como 12012 3
ou (12012, 3)
.
Por exemplo, 12012
é o número 774th Dennis, portanto, se 774
é a entrada para o seu programa, a saída deve ser algo como 12012 3
. (Curiosamente, 774 é outro número de Dennis.)
O código mais curto em bytes vence.
Aqui estão os 20 primeiros números de Dennis e seus pedidos de referência:
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