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, 12012quase parece um palíndromo , um número que lê o mesmo quando invertido, mas está um pouco fora. Pode se tornar o palíndromo 21012se trocarmos as posições do primeiro 1e 2, e pode se tornar o palíndromo 12021se trocarmos o último 1e 2. Além disso, seguindo a convenção de que zeros à esquerda em um número não são gravados, troque o primeiro 1e os 0resultados por, 02112ou melhor, 2112qual é 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 12012se 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.120121201212012
10é o menor número de Dennis e tem a ordem 1 porque alternar entre 1e 0dá 01aka 1que é um palíndromo.
Os zeros iniciais imaginários de um número não contam como dígitos comutáveis. Por exemplo, alterar 8908a 08908e trocando os dois primeiros dígitos para obter o palíndromo 80908é inválido. 8908nã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 3ou (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
