header
Accueil
Règles
Les 5 Races
Histoire
Classements
Forums
Taverne du Chat
Inscriptions
Jouer son Trõll
Packs Graphiques
Goodies
Nous Contacter
Soutenir le Jeu.
Notre Boutique.
Liens
Webring
Crédits
 
  Ze Calendrier
calendar
 MountyHall
Référencé sur
Tour de Jeu
Ludimail
Jeux Alternatif
 
HG
Nous sommes le 15° jour du Scarabée du 22° cycle après Ragnarok
HM HD
 
 
BG     BD
 Bienvenue Invité     S'enregistrer    Connexion Search the Forum   Display List of Forum Members
Forums Tous les Forums
ligne Forum Hors Jeux
DON MountyHall
Modérateurs de ce forum : Aghabeu, Dabihul, Grankausto, Loinvu, Madère, Mamoune, Modérateur 6, Modérateur1, Modérateur2, Modérateur3, Modérateur4, Modérateur5, Mr x, Rouletabille, Schtroumpf, TilK, VYS, Xaruth
Vous pouvez discuter ici de tout et de rien et surtout de tout ce qui ne se retrouve pas dans les autres forums Hors-jeux.

Il est cependant interdit d'utiliser ce forum pour un bénéfice personnel (vente, publicité, affiliation, ...).
Evitez aussi tout "sujet qui fache" et autre "trolls". Seuls des messages appelant à une discussion cordiale et pleine de tolérance seront acceptés.


Printer Friendly Version Post reply  Post New Topic

#. Message de clicloo le 16-11-2003 à 11:14
  [Ami de MountyHall]
2177 - clicloo (Durakuir 52)
Pays: France  Inscrit le : 17-11-2002  Messages: 130 (Golem Costaud)   Citer Citer

 

Je sais qu'il a de grds matheux parmi vous, alors je me permets de vous poser une chtite question

Est-il possible de trouver toutes les manières d'obtenir une somme x, en faisant la somme de 6 nombres/chiffres ??

ex : j'ai le nombre 50 ; je peux obtenir ce nombre en additionnant : 5+5+3+7+18+12, ou en additionnant : 10+10+4+6+7+13, etc ... ce qui m'intéresse c justement de trouver ttes les possibilités.

Par ailleurs j'aimerai prendre en compte une condition supplémentaire, en précisant que chacun de ces 6 nombres/chiffres ne peut pas être supérieur à un certain chiffre/nombre :

ça donnerait dc quelque chose comme :

calculer ttes les possibilités pr : a+b+c+d+e+f = 50, sachant que

a<11 b<5 c<12 d<4 e<20 e<16 (nombres donnés au hasard)

c possible de faire cela ???

Clic, qui se dit qu'elle aurait dû faire des maths plutôt que du latin ...


#. Message de Trollet le 16-11-2003 à 12:12
8765 - Trollet (Durakuir 58)
- *Les Griffes de l'Aube* -
Pays: France  Inscrit le : 2-04-2003  Messages: 427 (Golem Costaud)   Citer Citer

Il y a la méthode empirique : tu fais un programme dans le langage que tu veux qui effectue 6 boucles imbriquées, et chaque fois que les 6 nombres répondent aux conditions exigées, tu les affiches.

C'est bourrin, mais ça a le mérite de fonctionner.

Maintenant, peut-être cherches-tu une méthode "à la main", une règle ou que sais-je encore, et là je laisse la parole aux pros des maths...

---
Mister Trõllet


#. Message de aabaz18 le 16-11-2003 à 12:57
14566 - ( )
Pays: France  Inscrit le : 26-07-2003  Messages: 195 (Golem Costaud)   Citer Citer

Je pense comme Trollet, un programme serait la methode la plus simple et la plus rapide.

Sinon pour resoudre le probleme a la main, tout depend des conditions que tu impose sur tes nombres ( plus elles sont restrictives moins il y aura de solutions ) mais il me semble que si les conditions sont aussi large que celles que tu as données dans l'exemple il est difficile de resoudre la question en un temps raisonnable (pour moi en tout cas   

Aabaz18


#. Message de Cairn le 16-11-2003 à 13:06
  [Concurrent Malheureux]
232 - ( )
Pays: France  Inscrit le : 13-06-2002  Messages: 1410 (Trõll de Compèt')   Citer Citer

Bah demande à ton prof de maths .

Mais c'est vrai qu'avec 6 boucles ca amrche masi tu donnes pas trop de restrictions alors y'en a beaucoup sinon ..

Cairn pff les maths ca sert  à rien


#. Message de clicloo le 16-11-2003 à 13:18
  [Ami de MountyHall]
2177 - clicloo (Durakuir 52)
Pays: France  Inscrit le : 17-11-2002  Messages: 130 (Golem Costaud)   Citer Citer

c vrai, je pourrais demander à mes collègues de maths  (et oui, suis prof, pu élève ...)

en ts les cas merci pr vos réponses, je posais c'tte question pr un script php, vais essayer de faire comme vs le suggérez ...

Clic


#. Message de Trollet le 16-11-2003 à 14:02
8765 - Trollet (Durakuir 58)
- *Les Griffes de l'Aube* -
Pays: France  Inscrit le : 2-04-2003  Messages: 427 (Golem Costaud)   Citer Citer

Alors, zou :

http://mister.trollet.free.fr/test/

Sinon, voilà le code (avec des valeurs plus petites, sinon ça explose : plus de 20000 solutions) :

<?php
$nombre
= 10;
$a
= 3;
$b = 3;
$c = 3;
$d = 3;
$e = 3;
$f = 3;
$match = 0;

for ($i=0; $i<$a; $i++)
   for (
$j=0; $j<$b; $j++)
      for
(
$k=0; $k<$c; $k++)
         for (
$l=0; $l<$d; $l++)
            for
(
$m=0; $m<$e; $m++)
               for
(
$n=0; $n<$f; $n++)
                  if
(
$i+$j+$k+$l+$m+$n==$nombre)
                     echo
"Solution " . (++$match) . " : a=$i b=$j c=$k d=$l e=$m f=$n<br>";
?>

---
Mister Trõllet


#. Message de clicloo le 16-11-2003 à 14:06
  [Ami de MountyHall]
2177 - clicloo (Durakuir 52)
Pays: France  Inscrit le : 17-11-2002  Messages: 130 (Golem Costaud)   Citer Citer

merci bp, je sens que ça va bp m'aider

fo juste que je trouve une solution pr de plus grps nombre !


#. Message de Trollet le 16-11-2003 à 17:36
8765 - Trollet (Durakuir 58)
- *Les Griffes de l'Aube* -
Pays: France  Inscrit le : 2-04-2003  Messages: 427 (Golem Costaud)   Citer Citer

Après il y a des simplifications à faire : certaines itérations à sauter car on sait que cela ne mènera à aucune solution (genre si on veut une somme de 50 avec 6 nombres <= 8, on peut sauter les itérations 0 et 1 de chaque boucle). En généralisant, certaines "positions" de i,j,...,n doivent être reconnues comme des impasses pour sauter des boucles inutles.

Reste à programmer ça, chaud, chaud, chaud.

De la même façon, on devrait pouvoir sauter toutes les permutations d'une solution déjà trouvée, mais je ne crois pas que ça optimise grand chose.

Ah si, j'ai une solution un peu plus convaincante : sur la dernière boucle (celle sur $n), on peut déjà abréger la boucle si on trouve une solution, vu qu'on en trouvera pas d'autres à coup sûr (si i+j+k+l+m+n fonctionne, alors i+j+k+l+m+n+p ne peut pas fonctionner).

Je pense même que c'est une bonne piste de recherche : on doit pouvoir conserver, parallèlement à nos boucles, une variable qui mémoriserait les "bonnes" valeurs, par exemple : on part d'une solution (i+j+k+l+m+n), puis on ajoute / retranche simultanément un entier allant de 1 à p aux six paramètres dans les limites demandées, et on est certains de trouver un paquet de solutions.

A débroussailler.

---
Mister Trõllet


#. Message de drizzt le 16-11-2003 à 19:30
  [Ami de MountyHall]
5613 - drizzt (Kastar 33)
- Les Kargol's de M'ranis -
Pays: France  Inscrit le : 2-04-2003  Messages: 3050 (Djinn Tonique)   Citer Citer

tu imposes comme condition

a<=b<=c<=d<=e<=f
ca n'a aucun impact sur les solutions mais ca permet de faire commencer les boucles suivantes avec des nombres plus grand et donc d'eviter de retrouver plusieurs fois le meme resultat....

ensuite tu mets tes conditionsdans tes boucles et ca va booster ton prog.

Drizzt


#. Message de clicloo le 16-11-2003 à 20:38
  [Ami de MountyHall]
2177 - clicloo (Durakuir 52)
Pays: France  Inscrit le : 17-11-2002  Messages: 130 (Golem Costaud)   Citer Citer

apparemment c pas simple

vais approfondir la question ....

merci pr vot aide en tt cas !

Clic


#. Message de Trollet le 16-11-2003 à 23:07
8765 - Trollet (Durakuir 58)
- *Les Griffes de l'Aube* -
Pays: France  Inscrit le : 2-04-2003  Messages: 427 (Golem Costaud)   Citer Citer

Drizzt> Simple et de bon goût, on sent le pro, héhé..

Clicloo> Non ça n'est pas simple, mais le problème est intéressant.

---
Mister Trõllet


#. Message de Cairn le 17-11-2003 à 08:09
  [Concurrent Malheureux]
232 - ( )
Pays: France  Inscrit le : 13-06-2002  Messages: 1410 (Trõll de Compèt')   Citer Citer

Fais ca avec les fonctions mathématiques de SQL ca sera plus amusant .

Cairn qui va prendre son pc pour une calculette


#. Message de mildiou51 le 17-11-2003 à 09:54
  [Ami de MountyHall]
6252 - mildiou51 (Kastar 10)
Pays: France  Inscrit le : 16-02-2003  Messages: 717 (Shaï Epileptique)   Citer Citer
C'est dans quel cas que tu veux utiliser ca, Clicloo (desfois, en reformulant le problème, on voit qu'on peux faire une solution plus simple qu'une usine à gaz )

#. Message de clicloo le 17-11-2003 à 17:43
  [Ami de MountyHall]
2177 - clicloo (Durakuir 52)
Pays: France  Inscrit le : 17-11-2002  Messages: 130 (Golem Costaud)   Citer Citer

l'avouerais-je, c ds le cadre d'un tit jeu que je suis entrain de monter

je me rends compte que je vais galérer pr prog ce que je ve, dc g décidé de simplifier ... ds un premier tps du moins !!

si tt se passe bien, il sera tjrs tps d'approfondir

en attendant je mets ttes vos remarques bien au cho

Clic


#. Message de Trollet le 17-11-2003 à 19:20
8765 - Trollet (Durakuir 58)
- *Les Griffes de l'Aube* -
Pays: France  Inscrit le : 2-04-2003  Messages: 427 (Golem Costaud)   Citer Citer

J'essaie de voir à quel moment, dans le cadre d'un jeu, on peut avoir à se poser ce genre de questions...

Ah, je sais : "des Chiffres et des Lettres online".
Non ? Ok, je sors.

---
Mister Trõllet


#. Message de yannou le 17-11-2003 à 22:44
1231 - ( )
Pays: France  Inscrit le : 15-09-2002  Messages: 1499 (Trõll de Compèt')   Citer Citer

Cherche a partition des entier dans un bouquin de math. La maniere la + simple posible de le programmer reste un algorythme récursif. Il est en effet bon de classer tes nombre par ordre décroissant, si il n'y a pas d'ordre dans ton probleme.

pour des commodité de programmation, on fait une case 0 au tableau qui vaudra 0

tu as ton tableau de nombre de 6 case tab[0..6] initialisé a [0;0;0;0;0;0;0]

pour des commodité de programmation, on fait une case 0 au tableau qui vaudra 0

Procédure rec (n)

If n=7 then write tab : : stop (ecrit la solution, on peut ici implémenter un compteur de solution)

else

   val = som-tab[0..n-1] (cette valeur= la somme voulue moins les n-1 premiere case du tableau )

  for i=0 to val

begin

  tab[n]=i;

  rec(n+1);

  tab[n]=0; (pour + de sécurité )

end

 

Y a plus qu'a lancer la sauce : rec(1) et c'est bon !!!

l'avantage de la procédure est qu'on peut facilement étendre l'algorytme a + de 6 et qu'un seul tableau ecrit toute les solutions. doit pas y avoir bien plus court puisque ca donne toute les solutions.


#. Message de finlard le 18-11-2003 à 14:30
  [Ami des Monstres]
2345 - finlard (Tomawak 39)
- VENGEANCE pour CHULZI !!! -
Pays: Uzbekistan  Inscrit le : 2-12-2002  Messages: 872 (Shaï Epileptique)   Citer Citer
pfffffuiii...

Ya pas de matheux ici, ya que des informaticiens!

Ton problème a l'air d'être un probleme de dénombrement et de combinatoire. Le mieux est, je pense de le poser le problème "à l'envers", en partant de S ta somme, et en retranchant le premier nombre a, puis b, etc.

Le raisonnement est alors du genre: Soit X le nombre de manière de choisir l'ensemble {a,b,c,d,e,f} tq la somme = S.
i) pour a,b,c,d,e donnés, il y a une seule manière de choisir f: f=S-a+b+c+d+e. D'ou X (a,b,c,d,e fixés)=1
ii) pour a,b,c,d donnés, il y a (S-(a+b+c+d)) possibilité de choisir e, puis on se retrouve dans le cas i). D'ou X (a,b,c,d fixés)=Somme{e= 0 à S-(a+b+c+d)}
iii) Reste a appliquer par récurence les points i) et ii), et a sommer ensuite sur tout les a possibles i.e. Somme sur a=0 à S (si les nombres peuvent êtres nuls), a=1 à S-5 (si les nombres ne sont pas nuls), a=k à S-x (si k est la limite inférieure de a et x la somme des limites inférieure de b,c,d,e,f).

au final: X=Somme de a=0 à S de Somme de b=0 à S-a de Somme de... dans le cas simple.

Après on peut étendre le raisonnement à des cas plus complexes où on chèrche par exemple le nombre de manières DIFFERENTES d'obtenir S avec 6 nombres (i.e. 5+6+7 est identique à 6+5+7)...

A suivre.

#. Message de AshragorX le 18-11-2003 à 17:48
655 - AshragorX (Durakuir 60)
- Trõlls Of Legend -
Pays: France  Inscrit le : 17-07-2002  Messages: 238 (Golem Costaud)   Citer Citer

Merci de me rappeler pourquoi j'aime l'informatique et le bidouillage  au raisonnement pur.

AshragorX


#. Message de Trollet le 18-11-2003 à 22:58
8765 - Trollet (Durakuir 58)
- *Les Griffes de l'Aube* -
Pays: France  Inscrit le : 2-04-2003  Messages: 427 (Golem Costaud)   Citer Citer

Moi j'aime bien, ça me rappelle de bons souvenirs... Je vais essayer ça plutôt qu'une Rafale la prochaine fois, je suis sûr que le Diablotin tombe raide.

Sérieusement : Finlard, ta solution est certainement la meilleure de toutes car elle pose le problème de façon complète, et ne se restreint pas à une solution exigüe. Il est donc plus facile de bâtir un algo à partir de ça. Maintenant je rejoins Ashragor : je suis plutôt un bidouilleur, héhé.

---
Mister Trõllet


#. Message de clicloo le 20-11-2003 à 07:36
  [Ami de MountyHall]
2177 - clicloo (Durakuir 52)
Pays: France  Inscrit le : 17-11-2002  Messages: 130 (Golem Costaud)   Citer Citer

arg, ça devient compliquer pr mes tits neurones de littéraires, lol

sérieusement, c sympa de vous ê creuser le ciboulot sur ça, je pense que ça devrait me permettre de dépatouiller mon pb

 

Clic

[Pages : 1, 2]

Pour poster une réponse sur ce Forum, vous devez d'abord vous connecter

Si vous n'êtes pas encore enregistré, vous devez d'abord vous inscrire.

 Changer de Forum Post reply  New post
[ Contact : ] - [ Heure Serveur : 01:50:10 le 19/05/2024 ] - [ Page générée en 0.023 sec. ]