1 2 3 4 5 6 7 8 9 = 100 !

Soyez le premier à donner votre avis sur cette source.

Vue 10 710 fois - Téléchargée 193 fois

Description

Ce script montre comment associer les nombres 1 à 9 avec les 4 opérateurs usuels mathématiques (+,-,*,/) pour que le total fasse exactement 100 !
Pour trouver les 9 solutions possibles, ce script va tout simplement essayer toutes les combinaisons possibles comme il n'existe pas d'algorithme évident.

Source / Exemple :


<html> 
<head> 
<title>1 2 3 4 5 6 7 8 9 = 100 !</title> 
</head> 
<script language="JavaScript"> 
   
function go() 
{ 
    affichage = open("","","height=200,width=350"); // Pour l'ouverture de la popup 
    affichage.document.write("<font size=1 face=Verdana, Arial, Helvetica, sans-serif>"); 
    v = new Array(8); 
    op = new Array('+','-','*','/'); // On définit les 4 opérateurs 
    depart = new Date(); // On donne l'heure de départ du calcul 
    var nombre_de_solutions = 0; // On met les compteurs à zéro 
    var temps_total = 0; 
      
    // On essaye toutes les solutions possibles 
          
     for (v[0]=0; v[0]<4; v[0]++) 
      for (v[1]=0; v[1]<4; v[1]++) 
       for (v[2]=0; v[2]<4; v[2]++) 
        for (v[3]=0; v[3]<4; v[3]++) 
         for (v[4]=0; v[4]<4; v[4]++) 
          for (v[5]=0; v[5]<4; v[5]++) 
           for (v[6]=0; v[6]<4; v[6]++) 
            for (v[7]=0; v[7]<4; v[7]++) 
     { z = 1; 
         for (i=2; i<=9; i++) 
              
            // On essaye toutes les combinaisons avec les 4 opérateurs (+,-,*,/) 
              
         { switch (v[i-2]) 
         { 
              case 0 : z += i; 
                       break; 
              case 1 : z -= i; 
                       break; 
              case 2 : z *= i; 
                       break; 
              case 3 : z /= i; 
                       break; 
         } 
         } 
          
         // si on trouve bien 100, on écrit le résultat et le temps mis pour faire le calcul 
          
         if (z == 100) 
         { resultat = "" 
         for (j=0; j<=8; j++) 
         resultat += (j+1) + (j==8 ? " =" : op[v[j]]); 
         nombre_de_solutions++; 
         temps = temps_ecoule(depart); 
         temps_total += temps; 
         affichage.document.write(resultat + " " + z 
         +" " + edit(temps) + "<br>"); 
         depart = new Date(); 
         } 
         } 
         affichage.document.write("<p>On a trouvé " 
                        + nombre_de_solutions + " solutions en " 
                        + edit(temps_total) + " secondes </font>"); 
        } 
        // Calcul du temps mis pour faire le calcul (heure arrivée - heure départ cf: cours de 5éme ^^) 
        function temps_ecoule(depart) 
        { var temps = new Date(); 
         return Math.ceil((temps.getTime() - depart.getTime()) 
             /100); 
        } 
        function edit(dixiemes) 
        { a = Math.floor(dixiemes/10); 
        b = dixiemes % 10; 
        return a + "," + b; 
} 
</script> 
<body> 
<form> 
<input type="submit" value=" GO ! " onClick="go()"> 
</form> 
</body> 
</html>

Conclusion :


L'intéret ?!
Aucun ! Si ce n'est que de montrer la puissance de travail des différents navigateurs :
IE trouve les 9 solutions en 1 seconde en moyenne
Les navigateurs de type Gerko (netscape, firefox...) trouvent les solutions en 1.8 sec en moyenne.
Avec opéra, au bout d'un quart d'heure, la dernière ligne ne s'affiche toujours pas.

Les 9 solutions sont :

1+2+3+4+5*6-7+8+9 = 100
1+2*3+4+5*6-7+8-9 = 100
1-2/3+4*5*6+7-8-9 = 100
1*2+3*4-5*6-7+8+9 = 100
1*2+3*4*5+6-7-8+9 = 100
1*2+3*4*5-6+7+8-9 = 100
1*2-3+4*5*6-7+8+9 = 100
1*2*3+4+5*6-7+8+9 = 100
1/2+3*4*5+6+7+8+9 = 100

Codes Sources

A voir également

Ajouter un commentaire Commentaires
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 41
22 mai 2007 à 05:22
faire une fonction recursive ca aurait ete plus propre
cs_heyboy Messages postés 18 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 11 juillet 2005
30 juin 2005 à 10:45
OK, ca va alors... bien que tu aies pris les mêmes noms pour les variables etc.
la_pin Messages postés 275 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 15 décembre 2005
26 juin 2005 à 20:08
Oui heyboy, j'ai bien crée cette source avec l'aide d'un bouquin de javascript mais en aucun cas, je n'ai recopié le code donné dans le livre.
cs_heyboy Messages postés 18 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 11 juillet 2005
26 juin 2005 à 14:16
Oui, bon script, mais tu aurais pu préciser ta source (tu dois surement savoir de quoi je veux parler)

ps : j'espère que ce que je pense est faux...
cs_crashtest Messages postés 105 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 28 août 2005
22 juin 2005 à 16:43
lu,
à vraiment sa marche nikel mais moi et les maths sa fait 2 donc je vais le montrer à mon pere c'est un matheu pure et dure moi je te mais 9/10
aller @++
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.