30

ben non ... on dirait que ca glandouille plutot zzz
avatar
pwet

31

Toi non en tout cas, je viens de voir un petit mail de toi dans ma boîte... wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

32

executer le programme sur un expresso lavazza a 50mhz 8mo... rofl

33

grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

34

Les résultats sont donnés quand ?

35

I don't know, and in any case I am sure I am failt wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

36

C'est génial le backtracking, associé à la récursion, la puissance est gigantesque!!!
Alliée avec la récursion d'ordre supérieur, ça devient époustouflant!!!

37

Hein hein, et à part te la pêter avec du vocabulaire, tu as quoi d'intéressant à dire ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

38

surtout avec du vocabulaire qui ne veut rien dire grin
So much code to write, so little time.

39

J'avais donné mes sources a thibaut juste avant de les mettre a la poubelle alors je n'ai plus rien ... mais si thibaut les a toujours il peut les publier s'il en a envie !

Je terminerai en rajoutant ceci :
M. et Madame nounoun ... votre fils est ... différent !
avatar
pwet

40

lol grin

41

Solutions de Bill Bob

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------

#define NB_RECIPIENTS 4
#define MAX_VOLUME 50

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------

typedef struct S_recipient {
                             int capacite;          // Capacité totale du recipient
                             int volume_ricard;     // Volume de ricard présent dans le récipient
                           } T_recipient;

typedef struct S_transvasement {
                                 T_recipient *src;              // Le recipient source // Si NULL alors fontaine
                                 T_recipient *dst;              // Le recipient cible  // Si NULL alors fontaine
                                 struct S_transvasement *suiv;  // Pointe vers le transvasement suivant, NULL si pas de suivant
                               } T_transvasement;

T_recipient tab_recipient[NB_RECIPIENTS];  // Tableau representant NB_RECIPIENTS récipients
unsigned char buffer[MAX_VOLUME + 1];

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------

int mini(int a,int b) // Retourne le min de 2 entiers
{
  return(a<b?a:b);
}

int maxi(int a,int b) // Retourne le max de 2 entiers
{
  return(a>b?a:b);
}

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------

int get_capacite(T_recipient *recipient) // Retourne la capacité totale d'un récipient
{
  return(recipient->capacite);
}

int get_volume_ricard(T_recipient *recipient) // Retourne le volume de ricard présent dans le récipient
{
  return(recipient->volume_ricard);
}

int get_libre(T_recipient *recipient) // Quantité de ricard pouvant encore etre versée
{
  return(recipient->capacite - recipient->volume_ricard);
}

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------

void suite_transvasement(T_transvasement *suite) // effectue une liste chainée de tranvasements successifs
{
  int a;

  while (suite) // tant qu'il reste des transvasements a effectuer on continue :)
  {
    if (suite->src && suite->dst) // transvasement entre 2 recipients
    {
      a = mini(get_libre(suite->dst),get_volume_ricard(suite->src)); // on determine la quantite de liquide que l'on pourra verser de src -> dst
      suite->src->volume_ricard -= a; // on vide la source ...
      suite->dst->volume_ricard += a; // ... de la meme quantite que l'on remplit la destination !
    }
    else if (suite->src) // transvasement entre recipient -> fontaine
      suite->src->volume_ricard = 0; // on vide le recipient
    else // transvasement entre fontaine -> recipient
      suite->dst->volume_ricard = get_capacite(suite->dst); // on remplit le recipient

    suite = suite->suiv; // on passe au transvasement suivant
  }
}

// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

42

void kestion5(int n)
{
  int a,b;
  T_transvasement trans;
  T_recipient save_src,save_dst;

  if (n==0) // on vient de faire les n transvasements possibles :) ... on note le resultat des volumes des differents recipients dans buffer
  {
    for (a=0;a<NB_RECIPIENTS;a++)
      buffer[tab_recipient[a].volume_ricard]=1;
    return;
  }

  // il reste encore des transvasements a faire ...

  for (a=0;a<=NB_RECIPIENTS;a++) // on choisit un recipient source
  {
    for (b=0;b<=NB_RECIPIENTS;b++) // et un recipient cible ... ensuite on va transvaser et voir ce ke ca donne :)
    {
      if (a != b) // on evite les transvasements d'un recipient dans lui meme parce que c pas tres efficace :o)
      {
        if (a==NB_RECIPIENTS)          //
        {                              // Tout ce micmac
          trans.src = NULL;            // sert juste a
        }                              // initialiser la
        else                           // structure trans
        {                              // avec une source
          trans.src = &tab_recipient[a];              // (NULL si fontaine)
          save_src.capacite = tab_recipient[a].capacite;      // et une destination
          save_src.volume_ricard = tab_recipient[a].volume_ricard;// (NULL si fontaine)
        }                              // et le pointeur sur
        if (b==NB_RECIPIENTS)                    // le transvasement suivant
        {                              // a NULL pour ne faire
          trans.dst = NULL;                    // qu'un transvasement par etape
        }                              //
        else                            //
        {                              //
          trans.dst = &tab_recipient[b];              //
          save_dst.capacite = tab_recipient[b].capacite;      //
          save_dst.volume_ricard = tab_recipient[b].volume_ricard;//
        }                              //
                                      //
        trans.suiv = NULL;                      //
  
        suite_transvasement(&trans);                // Ensuite on appelle la fonction suite_transvasement() avec la structure qu'on vient d'initialiser
  
        kestion5(n-1);                        // Le transvasement a eut lieu ... on passe a un autre ... recursivite powaaa !

        if (trans.src)                        // 
        {                              // Ici on est revenu de l'appel de fonction kestion5() !
          tab_recipient[a].capacite = save_src.capacite;      // C'est donc que l'on est tombé sur un etat blokant ou k'on est a la fin ... on a fait tous
          tab_recipient[a].volume_ricard = save_src.volume_ricard;// les transvasements possible dans "une direction" ... on va revenir une etape en arriere
        }                              // et explorer les autres possibilites
        if (trans.dst)                        //
        {                              // Et pour revenir une etape en arriere comme si il s'etait rien passé on restaure
          tab_recipient[b].capacite = save_dst.capacite;      // la table des récipients a la valeur qu'elle avait avant l'appel a kestion5()
          tab_recipient[b].volume_ricard = save_dst.volume_ricard;// Du coup le programme n'y voit que du feu :) ... C fou quand meme le backtracking :-P
        }                              //
      }
    }
  }
  return;
}
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

43

Remarquable wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

44

Thibaut-> Désolé, mais le premier langage que j'ai appris, c'était du fonctionnel, et c'était basé sur la récursivité, et je suis pas sensé savoir que tu comprendras pas
Quand à mon vocabulaire, c'est pas de ma faute si tout le monde trouve bizare d'employer des mots qui sortent des 300 mots de vocabulaire du français moyen...
Je trouve ça bien bête comme réaction...sad

45

et t'as dit: "Hein hein, et à part te la pêter avec du vocabulaire, tu as quoi d'intéressant à dire ? "

Tu crois que ton post 33 était mieux???

46

Pourquoi, je me la pète dans le post 33 ?
[edit]Edité par Thibaut le 13-02-2002 à 22:26:41[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

47

non, mais tu m'as dit aussi: "tu as quoi d'intéressant à dire ? "

Mais bon, passons, on va pas se prendre la tête pour ça.
smile

au fait,si tu sais pas, une fonction d'ordre supérieur est une fonction qui admet une fonction en argument, ou qui renvoie une fonction en résultat.
C'es très intéressant, parceque à partir d'une fonction de base, tu peux créer des tas de fonctions adaptées à tes besoins du moment.

48

confus
Tu peux m'expliquer un peu smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

49

Par exemple, tu as besoin d'une fonction qui te fait des racines nième dans un lagage ou la fonction n'est pas prédéfinie.
Mon prof avait pris cet exemple: un employé doit faire toute la journée des racines cinquièmes de plein de nombres.
Au lieu de faire un fonction qui admet deux argument, dont un est la puissance de la racine (je sais pas si ça se dit comme ça!) tu appelle ta fonction "faitrac" qui te fait des fonctions racines de l'ordre que tu veux, et nensuite le gars pourra utiliser toute la journée une fonction du style "rac5", crée par "faitrac".

Evidemment, là le cas est débile, mais dans la pratique, cela peut se révéler très utile pour se simplifier la vie ou pour gagner un temps fou à l'éxécution.

Au fait, le langage que j'ai appris est le scheme (dérivé du LISP, très vieux langage, premier des langages fonctionnels), j'ai fait aussi du Camel, beaucoup plus prise de tête au niveau de la syntaxe (syntaxe du scheme: (<fonction>, <arg1>, [<arg2]>, etc...). C'est la même syntaxe pour toutes les fonctions du langage, tu mets donc 15 secondes pour connaitre toute la syntaxe)
J'ai essayé d'implémenter le scheme pour nos caltos, mais j'ai renoncé car j'aurais jamais réussi à faire un compilo (bravo à toi pour l'Azur grin )


[edit]Edité par nounoun le 13-02-2002 à 23:03:01[/edit]

50

c'est ce que je fais dans ma librairie C du concours TIFR : j'appelle en argument une fonction...

C'est pas récursif dans cette fonction là, mais je crois que dans le reste si grin
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

51

Je vais t

52

Je vais tacher de retrouver quelques lignes de code dans des fonctions vraiment utiles, pour que vous puissiez juger un peu de la puissance que ça apporte. Faut que je cherche dans mes cours de première année.

53

oui
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

54

Je vois ça ce week-end, donc je posterai lundi soir, en attendant je vais chercher une page web où ça parle de la chose.

55

C'est cool fou
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

56

ben cest des fonctions curryfiees comme dans caml nan ?????
Y a deux fesses qui sont sur la plage et l'une dit à l'autre :
"Qu'est ce qu'on fait maintenant ?"
Et l'autre lui répond :
"Ben PROUT !!!"

57

Non, mais tu peux t'amuser (quel intérêt???) à faire une fonction pour les curryfier