Inspirado por Generate Keyboard Friendly Numbers .
Fondo
Muchos botones numéricos tienen el siguiente diseño:
789
456
123
0
Definimos la vecindad de un número como el conjunto de celdas ortogonalmente adyacentes a él en el teclado numérico que se muestra, incluido él mismo. Por ejemplo, el vecindario de 2 es {1,5,3,0,2}
y el vecindario de 0 es {1,2,0}
. Hay una lista del vecindario de cada número a continuación, arriba de los casos de prueba.
Definimos un número amigable para el teclado numérico como un entero positivo donde, cuando se escribe en decimal sin ceros a la izquierda, cada dígito, excepto el primero, está cerca del dígito anterior.
Por ejemplo,
- 7856 es un número compatible con el teclado numérico porque 8 está cerca de 7, 5 está cerca de 8 y 6 está cerca de 5.
- 1201 es un número compatible con el teclado numérico porque 2 está cerca del 1, 0 está cerca del 2 y 1 está cerca del 0.
- 82 no es un número compatible con el teclado numérico porque 2 no está cerca del 8.
- 802 no es un número compatible con el teclado numérico porque 0 no está cerca del 8 (los vecindarios no se ajustan).
Secuencia OEIS relacionada . Tenga en cuenta que esta secuencia relacionada es distinta porque cuenta 0como adyacente a en 7lugar de 1y 2.
Reto
Dado un número entero positivo n
, devuelva los números amigables número n
-1 o primer n
teclado numérico, donde el primero es 1. Puede usar indexación basada en 0, donde el número amigable número-0 sería 1.
Barrios
El vecindario de cada dígito se enumera aquí:
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 prueba / secuencia
Estos son los primeros 100 términos
[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]