Contexto
Estoy escribiendo un programa de ordenador para hacer una búsqueda de fuerza bruta de una solución a un rompecabezas que quería ordenar cuatro números con los cuatro operadores aritméticos estándar y llegar a una respuesta dada. Aunque tengo una solución para el rompecabezas original, todavía quiero escribir un programa de resolución de casos generales para n
números. He desglosado el problema en:
- Arreglos de los números (¡n!)
- Disposiciones de los operadores (4 n-1 )
- Arreglos de asociatividad. O paréntesis, si lo prefiere.
Es en este último en el que no puedo encontrar la respuesta de caso general a "¿cuántos habrá?", pero si voy a escribir un programa para resolverlo, entonces necesito mis casos de prueba para demostrar que mi implementación es correcta.
Progreso
Tengo una notación para esto, que funciona descomponiendo la fórmula considerada en notación polaca inversa, y expresándola como 1
para una operación "Pulsar número", o 0
para la operación "Pop dos números, aplicar operador, empujar resultado". Está claro que los cuatro operadores son operadores binarios, por lo que las dos primeras operaciones deben ser necesariamente operaciones "Push". Del mismo modo, la última debe ser un cálculo.
Además, al contar N 1 - el número de empujones - y N 0 - el número de cálculos, desde el inicio hasta cualquier punto, N 1 debe ser siempre superior a N 0
Por inspección, he determinado los siguientes resultados:
n | C(n) |
---+------+-
2 | 1 | 110
3 | 2 | 11010 11100
4 | 5 | 1101010 1101100 1110010 1110100 1111000
5 | 14 |
Creo que C 6 tiene 42 años, pero aún no estoy seguro de ello.
Pregunta
¿Cuál es el valor en el caso general de C n ?