FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Algoritmo Matematico, ¿Es Posible?
Hola Amigos, tengo una duda y es que me gustaria hacer un programa que indicandole un numero como resultado e indicandole varios numeros como valores realize las operaciones necesarias para dar con el numero del resultado. por ejemplo...
Tenemos = 20 - 51 - 25 - 10 Resultado = 530 La solucion seria: 51 * 10 + 20 y me pregunto si seria posible hacer esto con delphi? Muchas gracias por molestaros en leer mi duda. saludos! |
#2
|
||||
|
||||
Hola ZayDun,
¿Qué operaciones son las que estás considerando? ¿Las elementales unicamente? Ha decir verdad el mayor problema de tu planteo es el alto número de combinaciones que se pueden conseguir. Por darte un ejemplo: si se ingresan 4 valores pueden existir, si no me fallan los cálculos, entre 12 y 24 maneras de permutar los números. Eso es por cada operación permisible. mmm... puede que sea complicado pero no imposible de hacer... Por ahora no se me ocurre de que manera encararlo. Si nos explicas mejor... puede que logremos darte alternativas. Saludos, |
#3
|
|||
|
|||
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#4
|
||||
|
||||
Hola de nuevo y gracias por responder, lo que quiero realizar es algo similar al video que indica egostar :P pero con operacion basicas, "sumar,restar multiplicar y dividir". gracias de nuevo y perdonar por no haberme explicado en un principio.
|
#5
|
||||
|
||||
ZayDun y Egostrar, la verdad es que tengo una conexión DialUp y ver ese video me demoraría muchísimo.
Si me pueden explicar o resumir el video sería fabuloso. Bueno... yo me estaba imaginando un algoritmo que trate de usar la menor cantidad de valores y operaciones. Por ejemplo: 1.Tomar los 2 numeros mayores. 2. Si la multiplicación entre ellos es mayor, descartar al segundo mayor. 2.1. Repetir paso 2 con el tercer numero mayor 2.2. Si no es mayor y la diferencia entre el resultado y dicha multiplicación es menor o igual a algún valor, añadir estos tres números a la lista de los numeros validos Etc... Es decir ir descartando números lo más rápido posible probando primero la multiplicación ya que se trata de la manera más rápida de obtener una cifra más elevada. Y a medida que la cifra se va acercando al valor, ir optando por otras operaciones como la suma y la resta. Obviamente que se considería la división en casos de que haya numeros superiores al resultado... Creo, y tengo entendido, que existe un algoritmo que implementa algo así. Pero desconozco su nombre. No se si sirve lo que digo y será de ayuda. Saludos, |
#6
|
||||
|
||||
Creo que lo que trata de implementar según ya se ha apuntado es algo para resolver los problemas del tipo "cifras y letras", por supuesto en lo tocante a cifras.
El problema es que conocemos todo, menos las operaciones a realizar, incluso en algunos caso el problema no tiene solución y se trata de acercarse lo más posible al número pedido. 1.- Sumar todos los números. 2.- Sumar los pares, (me refiero de la lista dada) y restarle los impares. 3.- Sumar todos menos uno, dividir por este último. 4.- Multiplicar y dividir..... Contra más combinaciones de operaciones más nos acercaremos. Al final de cualquiera de estas elucubraciones, comparamos con el número pedido, si lo encontramos, bien, sino guardamos los resultados obtenidos y las operaciones correspondientes y los ordenamos. Es una idea. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
|||
|
|||
Respuesta a algoritmo
Esto solo es una idea, funciona si la cantidad de numeros es menor que 255.
Si tienes los números en el arreglo A, la Respuesta en la variable R, primero formas el conjunto S: S:=[]; for i:=1 to N do S:=S+[A[i]]; Después haces el ciclo: for i:=1 to N do if (A[i]<>0) and ((R div A[i]) in S) and ((R mod A[i]) in S) then begin M1:=A[i]; M2:=R div A[i]; M3:=R mod A[i]; break; end; La respuesta seria: M1 * M2 + M3 = R |
#8
|
|||
|
|||
Respuesta a algoritmo
Se me olvido decir que no necesariamente tienes que tener menos de 255 numeros, porque puedes implementar tu propia funcion de pertenecia. Por ejemplo si tu funcion es
function Pertenece(X:integer;var A:ArrInt):boolean; las preguntas ((R div A[i]) in S) and ((R mod A[i]) in S) pudieran ser reemplazadas por Pertenece(R div A[i],A) and Pertence(R mod A[i],A) y si tienes ordenado el arreglo A puedes hacer una funcion prentece eficiente. Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Algoritmo de Encriptacion | DarkByte | Varios | 22 | 08-10-2014 19:54:41 |
Algoritmo!!! | Ledian_Fdez | C++ Builder | 7 | 18-06-2007 22:17:50 |
Rechaza matematico ruso presea | egostar | Noticias | 2 | 24-08-2006 12:19:11 |
Algoritmo MD5 | tbolzan | Varios | 1 | 19-10-2004 15:13:47 |
Problema matemático | __cadetill | Humor | 11 | 31-10-2003 12:20:57 |
|