Hace relativamente poco he encontrado un acertijo matemático en el que se proponia seleccionar tres bolas de billar de una lista,cuyos números debían sumar 30, debajo os dejo el enlace:
https://matematicascercanas.com/2017/03/25/solucion-acertijo-tres-bolas-suman-30/
pués bien me puse manos a la obra y que es lo que veo :
los siguientes números: (1, 3, 5, 7, 9, 11, 13, 15, 17 ), de los cuales tres deben de dar 30, todos son impares, como no noy matemático puro, pues comenzamos a analizar el problema.
Hay que tomar grupos de tres números de un grupo de 9, lo que hace 9!/((9-3)!x3!), lo que nos da 84 posibles combinaciones, hay que ordenarlas, y calcular, pero claro esto nos lleva un rato.
Por lo que vamos a programarnos la busqueda de estar ternas, sumarlas y comprobar si nos sale 30 ¿?, para no complicarnos nucho usamos C, concretamente la versión que viene en la última versión de Visual Studio (realmente es C++).
El código no es ninguna maravilla, pero ahí os lo dejo
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n1;
int n2;
int n3;
int suma;
int numeros[9] = { 1, 3, 5, 7, 9, 11, 13, 15 };
int contador = 0;
for (int k = 0; k <= 6; k++)
{
n1 = numeros[k];
for (int j = k + 1; j <= 7; j++)
{
n2 = numeros[j];
for (int i = j + 1; i <= 8; i++)
{
n3 = numeros[i];
suma = n1 + n2 + n3; // suma de los tres valores
printf("los valores son %d %d %d y la suma %d\n", n1, n2, n3, suma);
if (suma == 30)
{
printf("fin de calculo\n");
getchar();
return(0);
}
contador++;
}
}
}
printf("NO se han encontrado los numeros\n");
printf("El numero de calculos es %d\n", contador);
printf("pulsa una tecla para terminar \n");
getchar();
return(0);
}
Lo mejor de todo es lo que viene ahora, si ejecutais el programa
El problema con el planteamiento dado, NO TIENE SOLUCIÓN
Y claro esto te deja con la duda ¿y como es posible?, si se han usado todas las ternas, algo se escapa
Me pongo a mirar en la página en la que se plantea el problema y resulta que hay que darle la vuelta a a bola del 9 y convertirla en un 6, los que no hemos jugado al billar no sabemos que las dos bolas son distintas, tienen distinta distribución de pintura y distinto color.
La bola que aparece en el acertijo es un 9 no un 6 como parece, por lo que aclararo esto hay que cambiar la línea
int numeros[9] = { 1, 3, 5, 7, 9, 11, 13, 15 };
por
int numeros[9] = { 1, 3, 5, 7, 6, 11, 13, 15 };
y ya si sale la terna :
[6,11,13] ahora si tiene solución.
Aparte de matemáticas y programación hay que saber billar (por lo menos las normas)