Source: Framasoft
Publié le: 27/11/2006 @ 18:59:33: Par zion Dans "Logiciels"
LogicielsLe compte est bon, 3 news et un logiciel libre du lundi, Kitsune! Kitsune c'est quoi? c'est un logiciel simple et qui, il faut l'avouer, ne vous permettra pas de révolutionner la terre mais bien de remuer un peu vos méninges.

Qui n'a pas déjà râlé en ne trouvant pas le compte rond du jeu des chiffres et des lettres? Plus besoin d'y passer des nuits blanches, un programme sous licence GPL vous trouvera la solution.

Accessoirement vous pourrez également jouer et essayer d'exercer vos talents en essayant de résoudre les énigmes par vous même. Bon amusement!
Commentaires
Editer  Citer
cauet: Notre logiciel libre du lundi, Kistune!
C'est très très très très utile :petrus:
 Par cauet, Publié le 27/11/2006 @ 19:40:51
Editer  Citer
Vector: Notre logiciel libre du lundi, Kistune!
ha wai ... en panne d'inspiration là ? :wink:
 Par Vector, Publié le 28/11/2006 @ 08:49:45
Editer  Citer
gizmo: Notre logiciel libre du lundi, Kistune!
Nan, c'est juste le dernier soft de framasoft, comme la plupart des lundi, pour ceux qui n'avaient pas remarque :oh:
 Par gizmo, Publié le 28/11/2006 @ 09:15:54
Editer  Citer
Nymouas: Notre logiciel libre du lundi, Kistune!
Salut,

Bof, bof, je suis pas programmeur de métier ... mais j'ai fait un programme du genre (pour résoudre le compte) il y a un peu plus de 7ans pour comprendre le backtracking récursif d'un de mes cours ...

Pour info, le principe est très simple, il suffit de prendre un vecteur de taille n contenant tous les chiffres (n=6, dans notre cas) pour commencer et faire toutes les opérations +-*/ entre le premier élément et les n-1 autres. A chaque opération entre deux nombres, on construit un nouveau vecteur de taille n-1 avec le résultat de l'opération et on recopie les nombres non utilisés. Ensuite, on réapplique le même algo avec ce nouveau vecteur (rappel de la fonction sur le vecteur de taille n-1). On s'arrête qd on obtient un vecteur de taille 1 ou si on a trouvé la solution (et dans ce cas on dépile les opérations qu'on aura préalablement sauvegardé à chaque étape). En résumé, la fonction principale fait moins de cent lignes...

Si je le retrouve, je le mettrai sur un site ainsi que la source (attention il fonctionnait bien mais avait un bug volontaire de montrer une opération intermédiaire dont le résultat n'était pas forcément utilisé)

@++
 Par Nymouas, Publié le 28/11/2006 @ 09:16:55
Editer  Citer
zion: Notre logiciel libre du lundi, Kistune!
Soyez malade, bougez vous le cul pour faire des news quand même et soyez remerciés :oh:

La prochaine fois je resterai dans mon lit :itm:
 Par zion, Publié le 28/11/2006 @ 11:24:27
Editer  Citer
cauet: Notre logiciel libre du lundi, Kistune!
:calin:
 Par cauet, Publié le 28/11/2006 @ 11:54:17
Editer  Citer
Nymouas: Notre logiciel libre du lundi, Kistune!
:oh: Désolé Zion, je critiquais pas la news, je faisais que signaler que le programme était simple à faire ... De toute manière, les autres news étaient très intéressantes :wink:

Bon rétablissement,
++

Dernière édition: 28/11/2006 @ 13:59:38
 Par Nymouas, Publié le 28/11/2006 @ 13:57:59
Editer  Citer
zion: Notre logiciel libre du lundi, Kistune!
Nymouas> C'était pas pour toi, c'était pour gizmo :oh:

Mais bon je sais d'où ça vient :ddr555:

J'avais aussi codé un petit truc équivalent en TP7 à l'époque... et en Delphi par après pour m'amuser...

Ca date d'il y a quelques années (6 ou 7 ans :oh: ), j'ose même pas relire le source tellement il doit faire peur... mais il fonctionnait ... donc le voila :ddr555:


  1. unit Unit1; 
  2. interface 
  3. uses 
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  5.   StdCtrls, Spin; 
  6. type 
  7.   TForm1 = class(TForm) 
  8.     SpinEdit1: TSpinEdit; 
  9.     SpinEdit2: TSpinEdit; 
  10.     SpinEdit3: TSpinEdit; 
  11.     SpinEdit4: TSpinEdit; 
  12.     SpinEdit5: TSpinEdit; 
  13.     SpinEdit6: TSpinEdit; 
  14.     Memo1: TMemo; 
  15.     SpinEdit7: TSpinEdit; 
  16.     Button1: TButton; 
  17.     procedure SpinEdit7Change(Sender: TObject); 
  18.   private 
  19.     { Private declarations } 
  20.   public 
  21.     { Public declarations } 
  22.   end
  23. var 
  24.   Form1: TForm1; 
  25. implementation 
  26. {$R *.DFM} 
  27. procedure TForm1.SpinEdit7Change(Sender: TObject); 
  28. var 
  29.   Chiffres : array[0..5of integer; 
  30.   total,res,i,j:integer; 
  31.   ChemCourant,Chemin : TStringList; 
  32.   termine:boolean; 
  33.   procedure Calculer(Count:integer); 
  34.   var 
  35.    i,j,tmp,tmp2:integer; 
  36.   begin 
  37.     if termine then 
  38.      exit; 
  39.     for i:=0 to Count-1 do 
  40.       if abs(total-Chiffres[ i ]) < abs(total-res) then 
  41.       begin 
  42.         res:=Chiffres [i ]; 
  43.         Chemin.Text := ChemCourant.Text; 
  44.         if res = total then 
  45.           termine :=true; 
  46.       end
  47.     for j:=Count-2 downto 0 do 
  48.     begin 
  49.       tmp:=Chiffres[ Count-1 ]; 
  50.       tmp2:=Chiffres[ j ]; 
  51.       //Addition 
  52.       ChemCourant.Add(IntToStr(tmp)+' + '+IntToStr(tmp2)+' = '+IntToStr(tmp+tmp2)); 
  53.       Chiffres[ j ]:=tmp+tmp2; 
  54.       Calculer(Count-1); 
  55.       ChemCourant.Delete(ChemCourant.Count-1); 
  56.       //Soustraction 
  57.       if (tmp>tmp2) then 
  58.       begin 
  59.        Chiffres[ j ]:=tmp-tmp2; 
  60.        ChemCourant.Add(IntToStr(tmp)+' - '+IntToStr(tmp2)+' = '+IntToStr(tmp-tmp2)); 
  61.       end 
  62.       else 
  63.       begin 
  64.         Chiffres[ j ]:=tmp2-tmp; 
  65.         ChemCourant.Add(IntToStr(tmp2)+' - '+IntToStr(tmp)+' = '+IntToStr(tmp2-tmp)); 
  66.       end
  67.       Calculer(Count-1); 
  68.       ChemCourant.Delete(ChemCourant.Count-1); 
  69.       //Multiplication 
  70.       Chiffres[ j ]:=tmp*tmp2; 
  71.       ChemCourant.Add(IntToStr(tmp2)+' * '+IntToStr(tmp)+' = '+IntToStr(tmp2*tmp)); 
  72.       Calculer(Count-1); 
  73.       ChemCourant.Delete(ChemCourant.Count-1); 
  74.       //Division 
  75.       if (tmp2<>0)and(tmp mod tmp2=0then 
  76.       begin 
  77.          Chiffres[j]:=tmp div tmp2; 
  78.          ChemCourant.Add(IntToStr(tmp)+' / '+IntToStr(tmp2)+' = '+IntToStr(tmp div tmp2)); 
  79.          Calculer(Count-1); 
  80.          ChemCourant.Delete(ChemCourant.Count-1); 
  81.       end
  82.       if (tmp<>0)and(tmp2 mod tmp=0then 
  83.       begin 
  84.          Chiffres[j]:=tmp2 div tmp; 
  85.          ChemCourant.Add(IntToStr(tmp2)+' / '+IntToStr(tmp)+' = '+IntToStr(tmp2 div tmp)); 
  86.          Calculer(Count-1); 
  87.          ChemCourant.Delete(ChemCourant.Count-1); 
  88.       end
  89.       Chiffres[ j ]:=tmp2; 
  90.     end
  91.   end
  92. begin 
  93.   //Calculer le resultat 
  94.   j:=0
  95.   for i:=0 to self.ComponentCount-1 do 
  96.     if (self.Components[ i ] is TSpinEdit)and(j<6then 
  97.     begin 
  98.       Chiffres[ j ]:=(self.Components[ i ] as TSpinEdit).Value; 
  99.       inc(j); 
  100.     end
  101.   total:=self.SpinEdit7.Value; 
  102.   res:=0
  103.   Chemin:=TStringList.Create; 
  104.   ChemCourant:=TStringList.Create; 
  105.   termine:=false; 
  106.   Calculer(6); 
  107.   self.Memo1.Lines.Text := Chemin.Text; 
  108.   self.Memo1.Lines.Add('Resultat : '+IntToStr(res)); 
  109.   Chemin.Free;ChemCourant.Free; 
  110. end
  111. end.



Dernière édition: 28/11/2006 @ 14:08:33
 Par zion, Publié le 28/11/2006 @ 14:07:05
Editer  Citer
gizmo: Notre logiciel libre du lundi, Kistune!
gni? qu'est-ce que j'ai encore fait moi? :confused:
 Par gizmo, Publié le 30/11/2006 @ 11:45:25
Poster un commentaire
Vous ne pouvez plus poster de commentaire sur cette actualité car elle a été clôturée. Voulez-vous continuer cette discussion sur le forum?

Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?