begin process at 2012 05 27 20:28:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > SUITE DE ROBINSON

SUITE DE ROBINSON


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :générateur, suite, robinson Niveau :Débutant Date de création :01/11/2005 Date de mise à jour :01/11/2005 11:36:42 Vu :4 596

Auteur : DarkMeteor

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Voici un code qui permet de générer la suite de Robinson.
Plus d'informations sur la suite de Robinson peuvent être trouvées sur http://fr.wikipedia.org/wiki/Suite_de_Robinson

Ve uillez m'excuser pour le manque de commentaires, mais il me semble que le code est assez clair pour ne pas en avoir besoin. Vous pouvez me demander des renseignements sur toute partie du code que vous ne comprenez pas, je me ferais un plaisir de vous repondre :)

Source

  • <?
  • /* Suite de Robinson */
  • function robinson ($entree)
  • {
  • $sortie = array();
  • for ($i = 0; isset ($entree{$i}); $i++)
  • {
  • if (isset ($sortie[$entree{$i}]))
  • {
  • $sortie[$entree{$i}]++;
  • }
  • else
  • {
  • $sortie[$entree{$i}] = 1;
  • }
  • }
  • $return = "";
  • for ($i = 9; $i >= 0; $i--)
  • {
  • if (isset($sortie[$i]) && $sortie[$i] != 0)
  • {
  • $return .= $sortie[$i].$i;
  • }
  • }
  • return ($return);
  • }
  • $sortie = "0";
  • for ($i = 1; $i <= 20; $i++)
  • {
  • echo "$i.$sortie<br />";
  • $sortie = robinson ($sortie);
  • }
  • ?>
<?


/* Suite de Robinson */

function robinson ($entree)
{
    $sortie = array();

    for ($i = 0; isset ($entree{$i}); $i++)
    {
        if (isset ($sortie[$entree{$i}]))
        {
            $sortie[$entree{$i}]++;
        }
        else
        {
            $sortie[$entree{$i}] = 1;
        }
    }

    $return = "";

    for ($i = 9; $i >= 0; $i--)
    {
        if (isset($sortie[$i]) && $sortie[$i] != 0)
        {
            $return .= $sortie[$i].$i;
        }
    }

    return ($return);
}

$sortie = "0";

for ($i = 1; $i <= 20; $i++)
{
    echo "$i.$sortie<br />";
    $sortie = robinson ($sortie);
}

?>

 Conclusion

Il est possible de changer le nombre de lignes a calculer a la ligne : for ($i = 1; $i <= 20; $i++)
Il suffit de remplacer 20 par le nombre de lignes a calculer.

De nombreuses améliorations sont possibles :
- Wikipedia annonce que la suite se stabilise a partir d'un certain nombre de lignes, on peut faire un script qui recherche cette ligne et affiche la suite avant cette ligne.
- Certaines chaines de départ forment une suite qui ne se stabilise pas, mais qui occille entre plusieurs valeurs. Il est aussi possible de retrouver a partir de quelle ligne commence l'occillation, et ensuite donner le nombre de lignes sur lesquelles s'effectue l'occillation.
- Améliorer la qualité du script, et son implémentation.


 Historique

01 novembre 2005 09:54:33 :
Correction orthographique
01 novembre 2005 11:36:42 :
Correction de bug

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
Source avec Zip CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LO... par varfendell

 Sources en rapport avec celle ci

GÉNÉRATEUR DE REQUÊTE SQL par theptitprince
Source avec Zip CLASS CALENDRIER ET JOURS FÉRIÉS par beemoon
Source avec Zip Source avec une capture DBOC - V3.1 [AJAX][PHP5] par Morphinof
Source avec Zip GÉNÉRATEUR DE MOTS CLÉS (TAGS) À PARTIR DE FICHIER HTML OU B... par Galip
GÉNÉRATEUR HTML DE MAP POUR IMAGE CLIQUABLE par 8Tnerolf8

Commentaires et avis

Commentaire de monoceros01 le 01/11/2005 11:32:45

Ton code me retourne les erreurs suivantes :
Notice: Undefined offset: 9 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 8 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 7 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 6 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 5 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 4 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 3 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\essai\robinson.php on line 25
Notice: Undefined variable: return in c:\program files\easyphp1-8\www\essai\robinson.php on line 27

En fait, $return doit être définis avant d'être concaténé, et $sortie[$i] n'est pas toujours définis dans ta deuxième boucle for (dans ta fonction)

Donc il faut rajouter :
$return = '';
Avant ta deuxième boucle fort

Et remplacer
if ($sortie[$i] != 0)
Par :
if (isset($sortie[$i] && $sortie[$i] != 0)

Aller deux erreurs => -2 donc 8/10 :)

Commentaire de monoceros01 le 01/11/2005 11:33:50

Oups
if (isset($sortie[$i]) && $sortie[$i] != 0)

(J'avais oublié une parenthèse)

Commentaire de DarkMeteor le 01/11/2005 11:37:49

Merci de m'avoir fait part de cette erreur, je n'avais pas pensé a verifier le code avec un error_reporting (E_ALL), donc ce code ne m'affichais pas les notices.

Code corrigé, encore merci a toi

Commentaire de monoceros01 le 01/11/2005 11:41:51

Tu peux directement mettre E_ALL dans le paramètre error_reporting de php.ini (D'ailleurs c'est très fortement conseillé quand on fait du développement)

Commentaire de DarkMeteor le 01/11/2005 11:44:01

J'utilise les serveurs de Free, donc je n'ai pas accès au php.ini
Je me contente de mettre un error_reporting (E_ALL) pour verifier les notices, mais souvent je n'y pense pas.

Commentaire de monoceros01 le 01/11/2005 12:53:41

Ben installe Easyphp (par exemple) sur ton pc o_o

Commentaire de coucou747 le 01/11/2005 19:19:00 administrateur CS

salut
t'as aussi ton <? qui devrait être remplacé par : <?php

sinon, on pourrait faire beaucoups plus court en utilisant l'opérateur ternaire, ou bien en supprimant toutes les accolades inutiles...

Commentaire de monoceros01 le 01/11/2005 20:10:07

L'opérateur ternaire est moins bon niveau performance :p

Commentaire de FhX le 01/11/2005 23:29:44

De combien ?
3ms à 10000 passages / 5 secondes ?

J'ai connu pire !

Commentaire de monoceros01 le 02/11/2005 00:10:25

une différence de 14ms pour 100000 itérations!! (Source : http://www.vulgarisation-informatique.com/optimiser-php.php)
C'est horrible o_o

:p

Commentaire de FhX le 02/11/2005 11:12:39

"C'est horrible o_o"
Tu rigoles bien j'espère :)
Parce que je vais décortiquer les stats, tu va voir que c'est 3 fois rien.

14ms pour 100 000 itérations. Certes, cela signifie qu'on touche le serveur 100 000 sur un temps très court (d'ailleurs, le temps d'éxécution aurait été bienvenu :) ). Mais en moyenne, il te faut 5-6 secondes pour exécuter du code comme ca.

Donc en réalité, tu perds 14 ms sur 100 000 itérations / 5 secondes !

Imagine ! Perdre 14ms sur 5 secondes ! C'est fou ce que c'est horrible !
C'est minime tu veux dire !
D'ailleurs, va taper du 100 000 itérations / 5 sec, à moins d'avoir un site ultra-énorme (genre celui de Microsoft), tu n'y arrivera jamais.
Donc, en abaissant le niveau à 100 itérations / 5 sec, tu va avoir une différence de combien ... 2ms ? 1 ms ?

Wouahouh, je te rassure de suite, 1 ou 2 ms tu n'as même pas le temps de le voir :)

Commentaire de coucou747 le 02/11/2005 11:23:56 administrateur CS

en optimisant à fond, mon jeu d'échec est passé de 10 secondes d'attentes à seulement 3... c'est dingue ce que c'est cool les optimisations...

Commentaire de monoceros01 le 03/11/2005 03:48:53

FhX détend-toi c'était ironique... ^_^;;

Commentaire de FhX le 05/11/2005 17:36:23

Ah, à force d'être stressé par le monde extérieur, j'en fini par voir n'importe quoi ;)
M'enfin je défends mon point de vue quand memeuh !

Commentaire de superbaloo78 le 17/11/2005 22:06:36

remarque ton algo c'est pas demain la veille que quelqu'un trouvera la solution :)
étant donné qu'il y a une erreur dans le code de la suite de robinson elle meme ^^

et oui teste par exemple avec un premier chiffre de 7, à partir du rang 3 ca merde :) enfin bon .... c'est pas bien grave :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Message ERREUR Suite tentative de transfert d'un fichier [ par David ] Il en résulte le message d'erreur suivant : Warning: Unable to create '../occas/1.jpg': Permission denied in /home4/eq9846/html/test/prive/admin/edi_o problème d'INCLUDE !!!! [ par nicoy2000 ] j'ai $gourl, qui vaut "scripts/al/al.php3?suite=ok" puis je fais include($gourl); et voici l'erreur: Warning: Failed opening 'scripts/al/al.php3?suite problème d'INCLUDE !!!! [ par nicoy2000 ] j'ai $gourl, qui vaut "scripts/al/al.php3?suite=ok" puis je fais include($gourl); et voici l'erreur: Warning: Failed opening 'scripts/al/al.php3?suite Suivi de navigation suite [ par gby ] Salut à tous,le bout de code qui me permet de récupérer le nom du fichier donc de la page en cours : &lt;?php $nb = count(explode ("/", $REQUEST_URI)) Affichage...suite de tableau [ par Brikse ] Hello tout le monde.... Je rencontre un problème au niveau de l'affichage dans mon code PHP. Alors, le truc est simple.J'ai un code qui insère une ima colorier un ligne sur deux [ par herveguedj ] salut je voulais savoir comment faire pour colorier une ligne sur deux dan sun tableau a la suite d'une requete sql et une boucle while je m'exiplique Mise à jour d'une table MySql, suite à une recherche PHP [ par tanktrasher ] 'lut,j'ai un bleme :j'ai une liste deroulante dans un formulaire PHP qui me permet d'executer une requete de recherche dans une table MySql.Je fais af Suite de discussion lancée dans un code source [ par frop01 ] tout ca c'est complique pour moi Oublions le array et je commence avec un variable entier.voici mon code &lt;html&gt;&lt;head&gt;&lt Suite de nombres [ par jak123 ] Bonjour, j'ai codé une page photos, mon seul hic c'est que j'aimerai que mon chiffre 1 sur mon code ci-dessus, prenne les valeurs de 1 au nombre que j je débute...probleme de lien suite à un while [ par deodato ] Bonsoir à tous, avant tou bonne année. :-)Voilà mon probleme, je vais parler avec des mots simples car le monde du php est tout nouveau pour moi.j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales