Yosue Dijo:
Este Ejercicio al estar muy abierto y tener demasiadas variaciones, uno puede reducir la cantidad haciendo un análisis. Ahí les vá el mió.
En el ejercicio no se dan restricciones por tanto pongo las mías:
-La Edad mínima entre padre e hijo 14.
-M No dice que sea la madre de Y y S por tanto puede que su edad sea menor.
-M Puede ser mayor que R, incluso mayor que el padre del marido.
-Los Hijos son de diferentes edades, cualquiera puede ser el mayor.
En este caso no hay reglas es una eacuacón con múltiples varialblesy que además los dígitos tienen que ser diferente. En este caso las soluciones son muchas, y que además tienen pocas restricciones.
Algunas de las Conclusiones «que me hice» para tratar de entender este ejercicio:
-La mayor edad a alcanzar 120 años.
-La menor edad para tener hijos 14. Se que en la vida práctica hay excepciones. Pero esa es la regla -+.
-Margarita es la Esposa de rodolfo, pero no necesariasmente la madre de los niños. Ya que los nietos son de josé por tanto son hijos de Rodolfo. No hay nada que sugiera que Margarita es la madre.
-Yosue y Sofía uno es mayor que el otro, pero puede ser cualquiera. Por tanto sus edades se pueden permutar.
-Margarita puede o no ser menor que Rodolfo, pero además puede ser menor que uno o de ambos hijos de Rodolfo.
-Soluciones tanteadas, porque no encontré ninguna regla general para la solución o acotamiento del ejercicio. Espero ver la Regla en la Respuesta.
Las respuestas están en este orden: Jose, Rodolfo, Margarita, Yosue y Sofía.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.StdCtrls, Vcl.Grids,
Vcl.DBGrids, Data.Win.ADODB, Vcl.Mask, Vcl.DBCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Label1: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Ej: TEdit;
Er: TEdit;
Em: TEdit;
Label11: TLabel;
Label12: TLabel;
Ey: TEdit;
Es: TEdit;
BComenzar: TButton;
BPausar: TButton;
ADOConnection1: TADOConnection;
ADOTable2: TADOTable;
DataSource2: TDataSource;
BGuardar: TButton;
Label15: TLabel;
Filter1: TEdit;
ADOTable2Id: TAutoIncField;
ADOTable2x: TIntegerField;
ADOTable2m: TIntegerField;
ADOTable2y: TIntegerField;
ADOTable2n: TIntegerField;
ADOTable2z: TIntegerField;
ADOTable2r: TIntegerField;
ADOTable2Tabla: TIntegerField;
procedure FormCreate(Sender: TObject);
procedure BComenzarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ExecutionCicle : Boolean;
pm, tm : integer;
stk : Boolean;
Contador : Integer;
a,b,c,d,e,f : integer;
vis:boolean;
Terminar :Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BComenzarClick(Sender: TObject);
var
Ns,Ny,Nm,Nr,Nj,s,y,m,r,j,z,ddd,cs,ds,us,cy,dy,uy,cm,dm,um,cr,dr,ur,cj,dj,uj,st,pp, qq : integer;
begin
ExecutionCicle := false;
stk := false;
Terminar := false;
Filter1.Enabled :=false;
BComenzar.Enabled := false;
pm := 0;
tm:=0;
st:=0;
vis:=false;
pp:=120 ;
qq:=14;
//
if stk then Ns:= 4 else Ns:= 1;
for s := Ns to (pp-qq-qq-1) do begin
if stk then Ny:= 8 else Ny:= s+1;
for y := Ny to (pp-qq-qq) do begin
if stk then Nm:= 70 else Nm:= qq;
for m := Nm to (pp) do begin
if stk then Nr:= 32 else Nr:= y+qq;
for r := Nr to (pp-qq) do begin
pm:=r;//if (m>r) then pm:=m else pm:=r;
vis := not(vis);
if vis then Application.ProcessMessages;
begin
j:= m+s+y+1-r;
if (j>=(pm+qq)) then begin
Ej.Text := intToStr(j);
Er.Text := intToStr(r);
Em.Text := intToStr(m);
Ey.Text := intToStr(y);
Es.Text := intToStr(s);
cs := (s div 100);
ds := ((s – (cs * 100)) div 10);
If ((cs=0) and (ds = 0)) Then ds := 11;
If cs = 0 Then cs := 10;
us := s Mod 10;
cy := (y div 100);
dy := ((y – (cy * 100)) div 10);
If ((cy=0) and (dy = 0)) Then dy := 13;
If cy = 0 Then cy := 12;
uy := y Mod 10;
cm := (m div 100);
dm := ((m – (cm * 100)) div 10);
If ((cm=0) and (dm = 0)) Then dm := 15;
If cm = 0 Then cm := 14;
um := m Mod 10;
cr := (r div 100);
dr := ((r – (cr * 100)) div 10);
If ((cr=0) and (dr = 0)) Then dr := 17 ;
If cr = 0 Then cr := 16;
ur := r Mod 10;
cj := (j div 100);
dj := ((j – (cj * 100)) div 10);
If ((cj=0) and (dj = 0)) Then dj := 19;
If cj = 0 Then cj := 18 ;
uj := j Mod 10 ;
If (((cs <> cj) And (cs <> dj) And (cs <> uj) And (ds <> us) And (ds <> cy) And (ds <> dy) And (ds <> uy) And (ds <> cm) And (ds <> dm) And (ds <> um) And (ds <> cr))) Then
If (((ds <> dr) And (ds <> ur) And (ds <> cj) And (ds <> dj) And (ds <> uj) And (us <> cy) And (us <> dy) And (us <> uy) And (us <> cm) And (us <> dm) And (us <> um))) Then
If (((us <> cr) And (us <> dr) And (us <> ur) And (us <> cj) And (us <> dj) And (us <> uj) And (cy <> dy) And (cy <> uy) And (cy <> cm) And (cy <> dm) And (cy <> um))) Then
If (((cy <> cr) And (cy <> dr) And (cy <> ur) And (cy <> cj) And (cy <> dj) And (cy <> uj) And (dy <> uy) And (dy <> cm) And (dy <> dm) And (dy <> um) And (dy <> cr))) Then
If (((dy <> dr) And (dy <> ur) And (dy <> cj) And (dy <> dj) And (dy <> uj) And (uy <> cm) And (uy <> dm) And (uy <> um) And (uy <> cr) And (uy <> dr) And (uy <> ur))) Then
If (((uy <> cj) And (uy <> dj) And (uy <> uj) And (cm <> dm) And (cm <> um) And (cm <> cr) And (cm <> dr) And (cm <> ur) And (cm <> cj) And (cm <> dj) And (cm <> uj))) Then
If (((dm <> um) And (dm <> cr) And (dm <> dr) And (dm <> ur) And (dm <> cj) And (dm <> dj) And (dm <> uj) And (um <> cr) And (um <> dr) And (um <> ur) And (um <> cj))) Then
If (((um <> dj) And (um <> uj) And (cr <> dr) And (cr <> ur) And (cr <> cj) And (cr <> dj) And (cr <> uj) And (dr <> ur) And (dr <> cj) And (dr <> dj) And (dr <> uj))) Then
If (((ur <> cj) And (ur <> dj) And (ur <> uj) And (cj <> dj) And (cj <> uj) And (dj <> uj))) Then begin st := st + 1;
// Si encuentra las soluciones, las guarda.
ADOTable2.Insert;
ADOTable2x.Value := j;
ADOTable2m.Value := r;
ADOTable2y.Value := m;
ADOTable2n.Value := y;
ADOTable2z.Value := s;
ADOTable2.Post;
end;
end;
end; {form y}
end; {form x}
end;{form r}
end;{form n}
end;{form m}
ShowMessage(‘Se acabo’);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stk := true;
Terminar := false;
end;
end.
Total de Soluciones: 1852.
Resumiendo profesor.
Si quiere que Margarita sea
la Madre de Yosue y Sofía
Rodolfo tendría que ser
Menor que su Mujer.
Si en Cambio quiere tener
Una mujer más Joven
Que busque otras soluciones
y a Margarita la pone
de Madrasta de sus hijos.
José en Cambio se siente
feliz del experimento
Con sus nietos bien contentos
Con su madre o su madrasta.
Y a Nestor con el pensamiento
lo queremos invitar
a una regla general
para resolver este acertijo
que RarJ así le dijo
y a todos puso a pensar.




Deja un comentario