Actualizado: ya puedes leer la solución al final. El problema sale de una página vietnamita, en occidente lo venden como “el clásico problema que hasta un niño de 8 años sabe resolver” pero la realidad es que hace falta bastante ingenio y maestría matemática para resolverlo adecuadamente. Lo “único” que hace falta es colocar cada uno de los números del 1 al 10 en cada espacio.

Hay un total de 10 mil millones de combinaciones distintas, así que hacerlo a la fuerza bruta probablemente no es la opción más inteligente. Por suerte, hay más de una válida. Sólo es cuestión de tener tino... y paciencia.

Solución

Aunque tenía una solución preparada, la de anv en comentarios es simplemente brillante y mejor que la mía. La reproduzco a continuación:

Bueno, ahora el programita pero que responde números diferentes solamente:

1+13x2:5+4+12x7-9-11+3x6:10-10=66

1+13x2:5+4+12x7-9-11+6x3:10-10=66

1+13x2:5+9+12x6-3-11+4x7:10-10=66

1+13x2:5+9+12x6-3-11+7x4:10-10=66

1+13x2:6+4+12x5-9-11+8x10:3-10=66

1+13x2:6+4+12x5-9-11+10x8:3-10=66

1+13x2:6+4+12x7-8-11+3x5:9-10=66

1+13x2:6+4+12x7-8-11+5x3:9-10=66

1+13x2:6+5+12x7-10-11+3x8:9-10=66

1+13x2:6+5+12x7-10-11+8x3:9-10=66

1+13x2:8+5+12x6-10-11+7x9:4-10=66

1+13x2:8+5+12x6-10-11+9x7:4-10=66

1+13x2:8+10+12x5-3-11+7x9:4-10=66

1+13x2:8+10+12x5-3-11+9x7:4-10=66

1+13x2:10+4+12x6-7-11+8x9:5-10=66

1+13x2:10+4+12x6-7-11+9x8:5-10=66

1+13x2:10+6+12x7-9-11+3x4:5-10=66

1+13x2:10+6+12x7-9-11+4x3:5-10=66

1+13x3:2+4+12x5-8-11+7x9:6-10=66

1+13x3:2+4+12x5-8-11+9x7:6-10=66

1+13x3:2+9+12x5-6-11+4x7:8-10=66

1+13x3:2+9+12x5-6-11+7x4:8-10=66

1+13x3:4+7+12x5-2-11+9x10:8-10=66

1+13x3:4+7+12x5-2-11+10x9:8-10=66

1+13x3:4+7+12x6-5-11+2x9:8-10=66

1+13x3:4+7+12x6-5-11+9x2:8-10=66

1+13x3:4+7+12x6-9-11+5x10:8-10=66

1+13x3:4+7+12x6-9-11+10x5:8-10=66

1+13x3:4+10+12x6-7-11+2x5:8-10=66

1+13x3:4+10+12x6-7-11+5x2:8-10=66

1+13x3:6+2+12x7-9-11+4x5:8-10=66

1+13x3:6+2+12x7-9-11+5x4:8-10=66

1+13x3:9+4+12x7-8-11+2x5:6-10=66

1+13x3:9+4+12x7-8-11+5x2:6-10=66

1+13x3:9+5+12x7-10-11+2x8:6-10=66

1+13x3:9+5+12x7-10-11+8x2:6-10=66

1+13x4:2+8+12x5-10-11+3x6:9-10=66

1+13x4:2+8+12x5-10-11+6x3:9-10=66

1+13x4:5+9+12x6-7-11+2x8:10-10=66

1+13x4:5+9+12x6-7-11+8x2:10-10=66

1+13x4:6+2+12x5-8-11+7x10:3-10=66

1+13x4:6+2+12x5-8-11+10x7:3-10=66

1+13x4:8+2+12x7-9-11+3x5:6-10=66

1+13x4:8+2+12x7-9-11+5x3:6-10=66

1+13x4:10+9+12x6-3-11+2x7:5-10=66

1+13x4:10+9+12x6-3-11+7x2:5-10=66

1+13x5:2+3+12x4-8-11+7x9:6-10=66

1+13x5:2+3+12x4-8-11+9x7:6-10=66

1+13x5:2+7+12x4-9-11+6x10:8-10=66

1+13x5:2+7+12x4-9-11+10x6:8-10=66

1+13x5:2+8+12x4-7-11+3x9:6-10=66

1+13x5:2+8+12x4-7-11+9x3:6-10=66

1+13x5:2+10+12x4-8-11+3x7:6-10=66

1+13x5:2+10+12x4-8-11+7x3:6-10=66

1+13x5:3+9+12x4-2-11+7x8:6-10=66

1+13x5:3+9+12x4-2-11+8x7:6-10=66

1+13x5:4+7+12x6-10-11+2x3:8-10=66

1+13x5:4+7+12x6-10-11+3x2:8-10=66

1+13x5:10+3+12x7-9-11+2x6:8-10=66

1+13x5:10+3+12x7-9-11+6x2:8-10=66

1+13x6:2+4+12x3-9-11+8x10:5-10=66

1+13x6:2+4+12x3-9-11+10x8:5-10=66

1+13x6:2+10+12x3-9-11+5x8:4-10=66

1+13x6:2+10+12x3-9-11+8x5:4-10=66

1+13x6:3+2+12x4-8-11+9x10:5-10=66

1+13x6:3+2+12x4-8-11+10x9:5-10=66

1+13x6:3+2+12x5-7-11+4x10:8-10=66

1+13x6:3+2+12x5-7-11+10x4:8-10=66

1+13x6:3+9+12x5-10-11+2x4:8-10=66

1+13x6:3+9+12x5-10-11+4x2:8-10=66

1+13x6:4+7+12x5-3-11+2x10:8-10=66

1+13x6:4+7+12x5-3-11+10x2:8-10=66

1+13x6:9+2+12x5-8-11+7x10:3-10=66

1+13x6:9+2+12x5-8-11+10x7:3-10=66

1+13x6:9+8+12x4-2-11+7x10:3-10=66

1+13x6:9+8+12x4-2-11+10x7:3-10=66

1+13x6:9+10+12x5-2-11+4x7:3-10=66

1+13x6:9+10+12x5-2-11+7x4:3-10=66

1+13x7:3+10+12x4-5-11+2x8:6-10=66

1+13x7:3+10+12x4-5-11+8x2:6-10=66

1+13x7:3+10+12x4-9-11+5x8:6-10=66

1+13x7:3+10+12x4-9-11+8x5:6-10=66

1+13x7:4+10+12x5-9-11+3x6:8-10=66

1+13x7:4+10+12x5-9-11+6x3:8-10=66

1+13x7:5+3+12x6-8-11+2x4:10-10=66

1+13x7:5+3+12x6-8-11+4x2:10-10=66

1+13x8:2+4+12x3-9-11+5x6:10-10=66

1+13x8:2+4+12x3-9-11+6x5:10-10=66

1+13x8:3+2+12x4-7-11+5x10:6-10=66

A continuación el programa que usé: Si se preguntan por qué está escrito en FreePascal, la respuesta es que tanto el compilador como el programa ejecutable son espectacularmente rápidos y eficientes, así que cuando tengo que hacer algo que puede requerir mucho proceso, uso este lenguaje.

Aunque debo reconocer que en este caso no habría sido necesario. La compilación tardó una décima de segundo, pero los resultados salieron instantáneamente así que cualquier otro lenguaje habría servido.

Y antes de que me critiquen por lo de verificar las repeticiones con “if”... podría haber hecho un vector y comparar con “for”, pero como era un programa para “usar y tirar”, preferí hacer copy/paste antes que arriegarme a hacer algo más ingenioso y tener que perder tiempo cazando algún bug que se me escapara.

var

a,b,c,d,e,f,g,h,i:integer;

r:real;

begin

for a:=1 to 10

do for b:=1 to 10

do for c:=1 to 10

do for d:=1 to 10

do for e:=1 to 10

do for f:=1 to 10

do for g:=1 to 10

do for h:=1 to 10

do for i:=1 to 10

do if (a<>b)

and (a<>c)

and (a<>d)

and (a<>e)

and (a<>f)

and (a<>g)

and (a<>h)

and (a<>i)

and (b<>c)

and (b<>d)

and (b<>e)

and (b<>f)

and (b<>g)

and (b<>h)

and (b<>i)

and (c<>d)

and (c<>e)

and (c<>f)

and (c<>g)

and (c<>h)

and (c<>i)

and (d<>e)

and (d<>f)

and (d<>g)

and (d<>h)

and (d<>i)

and (e<>f)

and (e<>g)

and (e<>h)

and (e<>i)

and (f<>g)

and (f<>h)

and (f<>i)

and (g<>h)

and (g<>i)

and (h<>i)

then begin

r:=a + 13*b/c + d + 12*e - f - 11 + g*h/i - 10;

if r=66

then begin

Write(a);

write(‘+13x’);

Write(b);

write(‘:’);

Write(c);

write(‘+’);

Write(d);

write(‘+12x’);

Write(e);

write(‘-’);

Write(f);

write(‘-11+’);

Write(g);

write(‘x’);

Write(h);

write(‘:’);

Write(i);

write(‘-10=’);

Writeln(r:0:0);

end;

end;

end.

y

Como curiosidad, si suponemos que todos los números agregados son diferentes hay 1244 respuestas posibles. Mi programa tardó unos 10 segundos en calcularlo.

Ahora... Tomando en cuenta que los números que ya vienen en la lista son el 10,11,12 y 13... tal vez el enunciado esté mal y haya que usar números del 1 al 9. Y de paso trataremos de que queden ordenados en orden inverso como los que ya están. Veamos...

De esta forma la cantidad de resultados se reduce a 136. Los primeros:

9+13x8:6+2+12x4-1-11+7x5:3-10=66

9+13x8:6+2+12x4-1-11+5x7:3-10=66

9+13x6:4+3+12x5-8-11+7x1:2-10=66

9+13x6:4+3+12x5-8-11+1x7:2-10=66

9+13x5:3+1+12x4-2-11+8x7:6-10=66

9+13x5:3+1+12x4-2-11+7x8:6-10=66

9+13x4:8+5+12x6-7-11+3x1:2-10=66

9+13x4:8+5+12x6-7-11+1x3:2-10=66

9+13x4:1+5+12x2-7-11+8x3:6-10=66

9+13x4:1+5+12x2-7-11+3x8:6-10=66

9+13x3:2+1+12x5-6-11+7x4:8-10=66

9+13x3:2+1+12x5-6-11+4x7:8-10=66

9+13x3:1+6+12x2-5-11+8x7:4-10=66

9+13x3:1+6+12x2-5-11+7x8:4-10=66

9+13x2:8+7+12x6-5-11+3x1:4-10=66

9+13x2:8+7+12x6-5-11+1x3:4-10=66

9+13x1:4+7+12x6-5-11+3x2:8-10=66

El domingo volvemos a la carga.

Click here to view this kinja-labs.com embed.

***

Psst! también puedes seguirnos en Twitter, Facebook o Google+ :)