Inspirado por Gerar números amigáveis do teclado .
fundo
Muitos botões numéricos têm o seguinte layout:
789
456
123
0
Definimos a vizinhança de um número como o conjunto de células ortogonalmente adjacentes a ela no teclado numérico mostrado, incluindo a si próprio. Por exemplo, o bairro 2 é {1,5,3,0,2}
e o bairro 0 é {1,2,0}
. Há uma lista da vizinhança de cada número abaixo, acima dos casos de teste.
Definimos um número amigável do numpad como um número inteiro positivo, onde, quando escrito em decimal sem zeros à esquerda, cada dígito, exceto o primeiro, fica na vizinhança do dígito anterior.
Por exemplo,
- 7856 é um número amigável para numpad porque 8 está no bairro de 7, 5 no bairro vizinho de 8 e 6 no bairro de 5.
- 1201 é um número amigável para numpad porque 2 está no bairro de 1, 0 está no bairro de 2 e 1 está no bairro de 0.
- 82 não é um número amigável para numpad porque 2 não está na vizinhança de 8.
- 802 não é um número compatível com o teclado numérico, porque 0 não fica na faixa de 8 (as vizinhanças não ficam por aí).
Sequência OEIS relacionada . Observe que essa sequência relacionada é distinta porque conta 0como adjacente a em 7vez de 1e 2.
Desafio
Dado um número inteiro positivo n
, retorne o n
-ésimo ou o primeiro n
número amigável do teclado numérico, onde o primeiro é 1. Você pode usar a indexação baseada em 0, onde o número amigável do teclado numérico 0 seria 1.
Bairros
A vizinhança de cada dígito está listada aqui:
0:{0,1,2}
1:{0,1,2,4}
2:{0,1,2,3,5}
3:{2,3,6}
4:{1,4,5,7}
5:{2,4,5,6,8}
6:{3,5,6,9}
7:{4,7,8}
8:{5,7,8,9}
9:{6,8,9}
Casos de teste / sequência
Estes são os primeiros 100 termos
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 21, 22, 23, 25, 32, 33, 36, 41, 44, 45, 47, 52, 54, 55, 56, 58, 63, 65, 66, 69, 74, 77, 78, 85, 87, 88, 89, 96, 98, 99, 100, 101, 102, 110, 111, 112, 114, 120, 121, 122, 123, 125, 141, 144, 145, 147, 200, 201, 202, 210, 211, 212, 214, 220, 221, 222, 223, 225, 232, 233, 236, 252, 254, 255, 256, 258, 320, 321, 322, 323, 325, 332, 333, 336, 363, 365, 366, 369, 410, 411, 412, 414, 441, 444, 445, 447]