IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Faire une pause dans une utilisation de str_shuffle et srand et reprendre


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 197
    Par défaut Faire une pause dans une utilisation de str_shuffle et srand et reprendre
    Bonjour j'espère être au bon endroit, dsl si je suis pas au bon endroit et surtout que le titre soit clair
    Bonjour,
    j'ai une question:
    je génère une chaine aléatoire dans une boucle avec ce code pour créer des anagrammes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche = str_shuffle($mot);
    Si la chaine généré est unique je l'ajoute a un tableau pour avoir que des unique, car souvent on a des doublons.

    J'ai vu dans la doc sur srand() permet de rendre chaque utilisation de str_shuffle() pareil, ça aide, car autrement c'est presque du brut force et quand il y a peut de combinaisons restantes a trouver c'est vite l'horreur autrement. En gros si j'utilise la fonction plusieurs fois j'aurais toujours le même résultat ce qui m'aide car je veux pas d'aléatoire différend a chaque essai.

    Le problème c'est que je ne peux pas en générer trop d'un coup et donc j'aimerais savoir si on peut reprendre la génération a un nombre donnée par exemple si je boucle sur 500, je recharge la page et je boucle sur les 500 suivant. Est ce possible ? La seul solution que j'ai trouvé c'est augmenter le TimeOut et séparer dans plusieurs fichiers le résultat pour que si le serveur crash je perde seulement les données du dernier fichier, mais c'est pas infinie et si je veux tester un nombre énorme de combinaison c'est pas très pratique.
    Quelqu'un aurait une idée ?
    Merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 702
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 702
    Par défaut
    au lieu de faire des mélanges et de tester si vous avez déjà trouvé la combinaison, je pense qu'il serait plus efficace d'utiliser un algorithme qui parcourt une seule fois chaque combinaison.
    voilà un exemple avec une fonction récursive :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    $liste = preg_split("//", "chien", -1, PREG_SPLIT_NO_EMPTY);
     
    $combinaisons = combinaisons([], $liste);
     
     
    function combinaisons($listeBase, $ajouts) {
     
    	if (0 === count($ajouts)) {
    		return [$listeBase];
    	}
     
     
    	$retours = [];
     
    	foreach ($ajouts as $index => $element) {
     
    		$tabReste = $ajouts;
    		array_splice($tabReste, $index, 1);
     
    		$listeDebut = array_merge(
    			  $listeBase
    			, [$element]
    		);
     
     
    		$retours = array_merge(
    			  $retours
    			, combinaisons($listeDebut, $tabReste)
    		);
     
    	}
     
     
    	return $retours;
     
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 197
    Par défaut
    C'est ouf la simplicité du code au point que que je ne comprends même pas comment ça arrive a générer les combinaisons^^. J'ai essayé de le modifier un peut comme d'écrire au fur a mesure dans un fichier ça ralentie a mort le script et a la fin si ça crash on perd le résultat.
    On peut le faire par étape avec cette technique ? Par exemples les 100 premier, puis les 100 suivants... ? Avec une bdd ça serait peut être mieux qu'un fichier ?
    Merci a toi pour ton aide

Discussions similaires

  1. Utilisation d'un thread pour faire une pause.
    Par ropabo dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 11/06/2006, 15h28
  2. Pause dans une application sans utiliser Sleep()
    Par CriPpLe dans le forum MFC
    Réponses: 9
    Dernier message: 25/03/2006, 12h00
  3. [java.util.logging]Faire une pause dans le logging
    Par anthyme dans le forum Logging
    Réponses: 6
    Dernier message: 08/03/2006, 11h43
  4. Faire une pause dans le programme
    Par shinobi dans le forum Access
    Réponses: 6
    Dernier message: 13/06/2005, 17h37
  5. [MFC] Faire une pause dans un thread
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 21/02/2005, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo