Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 06-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Ñuño,
Es cierto que con emplear matrices se podría... aunque no estoy seguro... por la alta combinación de elementos (aunque esto no es tanto el problema) y también el hecho de como armaríamos la matriz.

el método de Karnaut... me suena, no se de donde... no recuerdo haberlo visto.

A mi este problema me ha dejado intranquilo. Intranquilo debido al hecho de que no se me ocurre que método emplear para conseguir evitar explorar las altas combinaciones posibles.

Mi idea:
1. Supuesto débil: todos los números son inferiores al resultado.
Tomar el resultado y buscar el valor más alto de entre la lista.
En base a la diferencia:
1. Si la diferencia es despreciablemente menor al número tomado de lista
1.1. La primera combinación a probar es la suma (es más probable que debido a cierta "proximidad" de los valores hallar un segundo número alto que de acuerdo a la suma se acerce al resultado)
2. SINO, es decir que la diferencia es apreciablemente mayor al número tomado de la lista:
2.1. La prima combinación a probar es la multiplicación
3. Elegir el segundo número según la proximidad
4. Actualizar el resultado siendo igual a la diferencia entre el resultado y la operación realizada: Resultado = Resultado - Operación(Numero1,Numero2)

La intención de esto es conseguir al menos el número más próximo al resultado.
El término despreciable y apreciable podría evaluarse según algunos indicadores estadísticos: varianza, media, mediana.

En pocas según la desviación que experimenten los números entre si y contra el resultado se vayan probando diversas operaciones. La regla sería así:
Cuanto mayor sea la varianza, la operación a probar es la multiplicación
Cuanto menor sea la varianza, la operación a probar es la suma

El problema de esto es que no se me hace sencillo codificarlo. Decirlo es sencillo pero cuando intento hacerlo en código es otra cosa. Si alguien me entiende y se anima a codificarlo lo animo a que continue. Tal vez funcione, tal vez no... pero al menos podríamos conseguir un número relativamente cercano. (algo que no se si con la técnica de matrices se pueda llegar a una solución).

En fin... es un punto de vista.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #22  
Antiguo 06-11-2007
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 129
Poder: 18
ZayDun Va por buen camino
Talking

Hola de nuevo y perdonar por no haber podido contestar antes ya que no he tenido tiempo. buscando informacion sobre como hacerlo consegui un codigo que pide que indiques primero el numero a buscar y segundo un numero que debe de contener. mejor pongo el codigo para que lo veais vosotros mismos mas claro para una posible solucion. gracias a todos.



Código Delphi [-]
 var
a,b,q0,r0,q1,r1 : Integer;
begin
a:=0;
b:=0;
q0:=0;
r0:= 0;
q1:=0;
r1:=0;
MemoOut.Lines.Clear;
Form2.Edit1.Clear;
Form2.ShowModal;
if (Form2.ModalResult = mrOk) then
begin
a:= StrToInt(Form2.Edit1.Text); 
q0:= StrToInt(Form2.Edit1.Text);
Form2.Edit1.Clear;
Form2.ShowModal;
end;
if (Form2.ModalResult = mrOk) 
and (Form2.Edit1.Text <> '') then
begin
b:= StrToInt(Form2.Edit1.Text); 
r0:= StrToInt(Form2.Edit1.Text);
repeat
begin
q1:= Trunc(q0/r0);
r1:= q0-(q1*r0);
MemoOut.Lines.Add(IntToStr(q0)+' = '+IntToStr(r0)+'x'+IntToStr(q1)+'+'+IntToStr(r1));
q0:= r0; 
r0:= r1;
end;
until r0=0; 
end;
end;
Responder Con Cita
  #23  
Antiguo 06-11-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Por otro lado tenemos el "método de Karnaud" (ahora mismo estoy dudando de si se escribía así, porque no lo encuentro por ninguna parte)
"Karnough". Aunque creo que el uso de matrices no se amolda a lo que buscamos (porque podemos hacer tanto sumas como productos o divisiones, lo que complica la cosa).

He estado (y estoy) de exámenes, pero seguro que un día de estos lo saco (y yo que pensaba que ya lo habría resuelto alguien; bueno, así aún podré ser el primero XD).

Saludos.
Responder Con Cita
  #24  
Antiguo 06-11-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Ahora que recuerdo, en el programa también se podían combinar los distintos resultados de las operaciones. Por ejemplo, la suma de los dos primeros, la resta de los otros dos, y entonces multiplicar o dividir ambos resultados...

Me parece, señoras y señores, que esto se empieza a complicar un poquito.


La cuestión sería:

1. Crear todas las combinaciones de números y operaciones (incluyendo elementos neutros por si algún numero no es necesario).
2. Realizar las operaciones cambiando los órdenes de preferencia (ya que hay tres, así se puede realizar lo de operar con resultados)
3. Se comparan los resultados con el número buscado. Todas las operaciones que sean válidas se pueden mostrar (bien planteadas ya, con sus paréntesis y todo).
4. No hay cuarto paso, ya está. XD

Bueno, pronto tendré la solución (y por el placer de programar y ser ingenioso, no necesito damas de recompensa XD)

Saludos de nuevo.
Responder Con Cita
  #25  
Antiguo 19-02-2008
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 129
Poder: 18
ZayDun Va por buen camino
Hace un tiempo que abrí este hilo y me ayudasteis bastante, desde entonces he buscado alguna solución sin éxito alguno. Después de intentarlo de varias maneras me decidí a buscar alguna información en otro lenguaje, y los resultados han tenido sus frutos con el siguiente problema... está escrito en "C" por lo tanto vuelvo a pedir ayuda para los que quieran y puedan con la traducción a delphi, gracias a todos de nuevo.

http://pedroreina.net/ciflet/anarit.zip Codigo Fuente
Responder Con Cita
  #26  
Antiguo 19-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Hey! que no creas.. ayer me acordé de esto, y pensé "esta semana me pongo". Y.. bueno, aún es martes, ¡déjame pensarlo!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 09:22:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi