Suite de robinson

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 630 fois - Téléchargée 26 fois

Contenu du snippet

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

Veuillez 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 / Exemple :


<?

/* 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.

A voir également

Ajouter un commentaire Commentaires
Messages postés
87
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
19 mai 2006

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 :)
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
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 !
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

FhX détend-toi c'était ironique... ^_^;;
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
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...
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"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 :)
Afficher les 15 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.