7777 es igual a 24 no importa cómo lo calcules
Los distintos algoritmos son los siguientes:
(7?-7)÷(7+7)=24
(lg(7÷7%) +lg (7÷7%))!=24
(77÷7-7)! =24 ("!" es factorial? Factorial de 4 = 1×2×3×4=24 (El factorial de N se define como: N!=1×2×3....×N)?
∑ 7/7=1 ∑n (1≤n≤7)=28 28/7=4 4! =24 (función sumatoria)
(7')!+(7' )!+(7')!+(7')!!=0!+0!+0!+0!!=(1+1+1+1)!=4!=24
El juego de 24 puntos y su algoritmo
1. Descripción del problema
24 puntos es un juego de ajedrez y rompecabezas de cartas. El resultado requerido es igual a veinticuatro. ! Este juego usa Poker, es más fácil de jugar. Toma una baraja de cartas, quita las reinas grandes y pequeñas (también puedes tomar J/Q/K por primera vez), dejando 40 cartas del 1 al 10 (reemplaza A con 1). a continuación). Saque 4 cartas (llamada baraja) y use suma, resta, multiplicación y división (se pueden agregar paréntesis) para calcular el número en la carta hasta 24. Cada carta debe y solo puede usarse una vez, 8. , 8, 9, entonces la fórmula de cálculo es (9-8)×8×3=24
El problema se amplía aquí. El número de tarjetas que se pueden ingresar es de 4 a 52, todas las cuales. pertenecen a una carta, entonces debes calcular si una serie de cartas de entrada pueden calcular 24 puntos e ingresar la fórmula de cálculo
2 Análisis del algoritmo
De hecho, existe. Es una forma muy simple, primero buscar en profundidad en DFS, pero esto es muy estúpido y no es interesante presentarlo aquí.
(1) Primero, debemos abstraer matemáticamente este problema.
Definición 1.: Para un conjunto múltiple S compuesto de números racionales, f(S) se define de la siguiente manera:
Si S es un conjunto vacío o contiene solo un elemento, entonces f(S) =S; en caso contrario f(S)=∪ f ((S-{r1, r2}) ∪ {r}), para cada r=r1+r2, r1-r2, r1×r2, r1÷r2(r2≠0 ), y r1, r2 se toman en todo S
Definición 1 Descripción: Para calcular todos los valores que se pueden obtener mediante las cuatro operaciones mixtas de los elementos del conjunto S, solo necesitamos elija dos elementos cualesquiera r1 en S., r2, calcule las operaciones de suma, resta, multiplicación y división de r1 y r2 respectivamente, y luego use los resultados obtenidos para realizar cuatro operaciones mixtas con los números restantes en S.
Siempre que se tomen todos r1 y r2, se obtiene el resultado final. La unión de todos los resultados es el conjunto de todos los valores que pueden obtener los elementos en S a través de las cuatro operaciones aritméticas. Por definición, en este problema, el conjunto S es el conjunto compuesto por las cuatro operaciones aritméticas en las tarjetas dadas en la entrada
(2), Definición 2: Dados dos conjuntos múltiples S1, S2, defina <. /p>
comb( S1, S2) = ∪ { r1+r2, r1-r2, r1 ×r2, r1÷r2(r2≠0) } Fórmula (1.1)
Donde ( r1 , r2 ) ∈ S1 × S2.
La Definición 2 en realidad define el conjunto de resultados que se pueden obtener sumando, restando, multiplicando y dividiendo elementos en dos conjuntos.
(3), entonces en realidad existe un teorema:
Para un conjunto múltiple S compuesto de números racionales, si S tiene al menos dos elementos, entonces
f (S)=∪ comb( f(S1), f(S - S1) ) ? Teorema (1.2)
Donde S1 toma todos los subconjuntos propios no vacíos de S.
Utilizando las definiciones y teoremas anteriores, por ejemplo, para S={1,2,3,4},
f(S) = comb( f({ 1 }) , f ({ 2,3,4}) )∪ peine( f({ 2 }), f({ 1,3,4}) )… ∪ peine( f({ 1,2 }), f({3 ,4 }) ) ∪ …;
En el cálculo aquí, encontrará que al calcular f({ 2,3,4}), debe calcular f({ 3,4}) una vez y calcular f({ 1,3,4}) también necesita calcular f({ 3,4}) una vez, lo que crea redundancia computacional. Para eliminar la redundancia, la forma más sencilla es registrar lo que se ha calculado. Si el conjunto se ha calculado antes, utilícelo directamente.
Para facilitar la expresión, aquí se utiliza la representación de campos de bits, de modo que podamos expresar rápidamente qué números están en el conjunto. Por ejemplo, tomando el ejemplo anterior, n(S)=4, entonces se necesitan cuatro dígitos, f[0001]=f[1] representa f({1}), f[0101]=f[5] =f( {1,3}) así. Entonces f[2^ n - 1 ] (aquí n=4)=f[15]=f[1111]=f({1,2,3,4})
Entonces, para evitar el doble cálculo Puede que sea un poco más claro en este punto, es decir, el resultado intermedio se almacena. Si se ha calculado, los resultados calculados previamente se pueden usar directamente para el cálculo sin la necesidad de realizar cálculos iterativos.
(4), método de bucle:
Defina el símbolo de cálculo del conjunto de cálculo X, es decir, el peine anterior (S1,S2)= f[S1]Xf[S2]
a. ¿Inicializar primero una colección de este tipo f[xx1xxx], porque el resultado se puede obtener directamente?
b Por ejemplo, f[0011], es decir, f[ 0001]Xf[0010] se calcula y viene y almacena este resultado intermedio. De la misma manera, podemos calcular f[0101]=f[0100]Xf[0001], y f[0110]?
d. ] conjunto?
e. Juzgue el conjunto completo ¿Hay un resultado de 24...?
En a-e, se ha explicado la mayor parte del pensamiento de este método de cálculo, pero hay un detalle que no se ha explicado claramente, es decir, cómo calcular un f[ m ] (m<2 ^n-1)
(5), Calcular f[m] (m<2^ n-1)
Debido a que se utiliza la representación del campo de bits, supongamos que i comienza desde 0 hasta m,
Si m&i=i (esto significa que los elementos del campo de bits i todos pertenecen al conjunto m, entonces se puede realizar la operación combinada (o X))
Es decir, calcular f[i] El escenario donde i