En este desafío , aprendimos una forma de codificar cada número entero positivo utilizando árboles de factores.
Así es como funciona:
La cadena vacía tiene un valor de 1.
(S)
dondeS
es cualquier expresión con un valor de S se evalúa a la S th prima.AB
dondeA
yB
son expresiones arbirary con valores de A y B tiene respectivamente el valor A * B .
Por ejemplo, si quisiéramos representar 7 haríamos
7 -> (4) -> (2*2) -> ((1)(1)) -> (()())
Resulta que podemos representar cada número entero usando este método. De hecho, algunos números los podemos representar de múltiples maneras. Como la multiplicación es conmutativa, 10 es ambos
((()))()
y
()((()))
Al mismo tiempo, algunos números solo se pueden representar de 1 manera. Tome 8 por ejemplo. 8 solo se puede representar como
()()()
Y dado que todos nuestros átomos son iguales, no podemos usar la comunividad para reorganizarlos.
Entonces, la pregunta es "¿Qué números solo se pueden representar de una manera?". La primera observación es una que acabo de comenzar a hacer allí. Parece que los poderes perfectos tienen algunas propiedades especiales. Bajo investigación adicional podemos encontrar 36, que es 6 2 es una potencia perfecta pero tiene múltiples representaciones.
(())()(())()
(())()()(())
()(())()(())
()(())(())()
()()(())(())
Y esto tiene sentido porque 6 ya se puede reorganizar, por lo que cualquier número que hagamos de 6 también debe reorganizarse.
Entonces ahora tenemos una regla:
- Un número tiene una representación única si es una potencia perfecta de un número con una representación única.
Esa regla puede ayudarnos a reducir la determinación de si un número compuesto es único para determinar si un número primo es único. Ahora que tenemos esa regla, queremos descubrir qué hace que un número primo sea único. Esto es realmente bastante evidente. Si tomamos un número único y se envuelve entre paréntesis, el resultado debe ser único, y, en la otra dirección, si n tiene múltiples representaciones del n º primordial debe tener múltiples representaciones. Esto produce la segunda regla:
- El n º primordial es única si y sólo si n es único.
Ambas reglas son recursivas, por lo que vamos a necesitar un caso base. ¿Cuál es el número único más pequeño? Uno podría verse tentado a decir 2 porque es justo ()
, pero 1, la cadena vacía, es aún más pequeña y es única.
- 1 es único.
Con estas tres reglas podemos determinar si un número tiene un árbol de factores único.
Tarea
Es posible que lo hayas visto venir, pero tu tarea es tomar un número entero positivo y determinar si es único. Debería escribir un programa o función que haga este cálculo. Debe generar uno de los dos valores posibles, lo que estos valores dependen de usted, pero uno debe representar "sí", emitiéndose cuando la entrada es única y uno debería representar "no" siendo emitido de otra manera.
Sus respuestas deben puntuarse en bytes, con menos bytes siendo mejores.
Casos de prueba
Aquí están los primeros números únicos:
1
2
3
4
5
7
8
9
11
16
17
19
23
25
27
31
Casos de prueba sugeridos
5381 -> Unique
Parece que OEIS A214577 está relacionado de alguna manera, por lo que si necesita más casos de prueba, intente allí, pero no sé si son iguales, así que úselo bajo su propio riesgo.