Le 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!
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!
Liens
Kitsune (279 Clics)
Plus d'actualités dans cette catégorie
Commentaires
cauet:
Notre logiciel libre du lundi, Kistune!
C'est très très très très utile
Vector:
Notre logiciel libre du lundi, Kistune!
ha wai ... en panne d'inspiration là ?
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
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é)
@++
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é)
@++
zion:
Notre logiciel libre du lundi, Kistune!
Soyez malade, bougez vous le cul pour faire des news quand même et soyez remerciés
La prochaine fois je resterai dans mon lit
La prochaine fois je resterai dans mon lit
cauet:
Notre logiciel libre du lundi, Kistune!
Nymouas:
Notre logiciel libre du lundi, Kistune!
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
Bon rétablissement,
++
Bon rétablissement,
++
zion:
Notre logiciel libre du lundi, Kistune!
Nymouas> C'était pas pour toi, c'était pour gizmo
Mais bon je sais d'où ça vient
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 ), j'ose même pas relire le source tellement il doit faire peur... mais il fonctionnait ... donc le voila
Mais bon je sais d'où ça vient
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 ), j'ose même pas relire le source tellement il doit faire peur... mais il fonctionnait ... donc le voila
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Spin;
- type
- TForm1 = class(TForm)
- SpinEdit1: TSpinEdit;
- SpinEdit2: TSpinEdit;
- SpinEdit3: TSpinEdit;
- SpinEdit4: TSpinEdit;
- SpinEdit5: TSpinEdit;
- SpinEdit6: TSpinEdit;
- Memo1: TMemo;
- SpinEdit7: TSpinEdit;
- Button1: TButton;
- procedure SpinEdit7Change(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.DFM}
- procedure TForm1.SpinEdit7Change(Sender: TObject);
- var
- Chiffres : array[0..5] of integer;
- total,res,i,j:integer;
- ChemCourant,Chemin : TStringList;
- termine:boolean;
- procedure Calculer(Count:integer);
- var
- i,j,tmp,tmp2:integer;
- begin
- if termine then
- exit;
- for i:=0 to Count-1 do
- if abs(total-Chiffres[ i ]) < abs(total-res) then
- begin
- res:=Chiffres [i ];
- Chemin.Text := ChemCourant.Text;
- if res = total then
- termine :=true;
- end;
- for j:=Count-2 downto 0 do
- begin
- tmp:=Chiffres[ Count-1 ];
- tmp2:=Chiffres[ j ];
- //Addition
- ChemCourant.Add(IntToStr(tmp)+' + '+IntToStr(tmp2)+' = '+IntToStr(tmp+tmp2));
- Chiffres[ j ]:=tmp+tmp2;
- Calculer(Count-1);
- ChemCourant.Delete(ChemCourant.Count-1);
- //Soustraction
- if (tmp>tmp2) then
- begin
- Chiffres[ j ]:=tmp-tmp2;
- ChemCourant.Add(IntToStr(tmp)+' - '+IntToStr(tmp2)+' = '+IntToStr(tmp-tmp2));
- end
- else
- begin
- Chiffres[ j ]:=tmp2-tmp;
- ChemCourant.Add(IntToStr(tmp2)+' - '+IntToStr(tmp)+' = '+IntToStr(tmp2-tmp));
- end;
- Calculer(Count-1);
- ChemCourant.Delete(ChemCourant.Count-1);
- //Multiplication
- Chiffres[ j ]:=tmp*tmp2;
- ChemCourant.Add(IntToStr(tmp2)+' * '+IntToStr(tmp)+' = '+IntToStr(tmp2*tmp));
- Calculer(Count-1);
- ChemCourant.Delete(ChemCourant.Count-1);
- //Division
- if (tmp2<>0)and(tmp mod tmp2=0) then
- begin
- Chiffres[j]:=tmp div tmp2;
- ChemCourant.Add(IntToStr(tmp)+' / '+IntToStr(tmp2)+' = '+IntToStr(tmp div tmp2));
- Calculer(Count-1);
- ChemCourant.Delete(ChemCourant.Count-1);
- end;
- if (tmp<>0)and(tmp2 mod tmp=0) then
- begin
- Chiffres[j]:=tmp2 div tmp;
- ChemCourant.Add(IntToStr(tmp2)+' / '+IntToStr(tmp)+' = '+IntToStr(tmp2 div tmp));
- Calculer(Count-1);
- ChemCourant.Delete(ChemCourant.Count-1);
- end;
- Chiffres[ j ]:=tmp2;
- end;
- end;
- begin
- //Calculer le resultat
- j:=0;
- for i:=0 to self.ComponentCount-1 do
- if (self.Components[ i ] is TSpinEdit)and(j<6) then
- begin
- Chiffres[ j ]:=(self.Components[ i ] as TSpinEdit).Value;
- inc(j);
- end;
- total:=self.SpinEdit7.Value;
- res:=0;
- Chemin:=TStringList.Create;
- ChemCourant:=TStringList.Create;
- termine:=false;
- Calculer(6);
- self.Memo1.Lines.Text := Chemin.Text;
- self.Memo1.Lines.Add('Resultat : '+IntToStr(res));
- Chemin.Free;ChemCourant.Free;
- end;
- end.
gizmo:
Notre logiciel libre du lundi, Kistune!
gni? qu'est-ce que j'ai encore fait moi?