comment générer un suite spécifique de nombres ?

Petit nouveau ! | 9 Messages

14 avr. 2022, 11:35

-----------------------------------------------------------------------------------------------------------
Bonjour,

Je voudrais générer toutes les possibilités uniques de 10 nombres compris 00 à 99, chaque possibilité n'utilisant qu'une seule fois le même chiffre dans les dizaines ou dans les unités.

.../...

Je pense qu'il faudrait une fonction récursive, mais je n'arrive pas à la structurer.

Merci de votre attention et pour vos orientations, suggestions ou proposions de code.
-----------------------------------------------------------------------------------------------------------
Bonjour,

J'ai une erreur que je ne comprends pas dans ce code :
.../...

J'essaye de faire toutes les combinaisons répondant à ma règle : xxxx avec x compris de 0 à 6 et aucune répétition de x.
Quand je boucle de 0 à 6 ça déconne, alors que de 1 à 7 ça fonctionne. Pourquoi ?
-----------------------------------------------------------------------------------------------------------

Merci pour la première fonction, pc_permute.
Je vais l'étudier car elle est récursive.

Merci aussi pour l'autre fonction, pc_permute2.
Je vais aussi l'étudier, mais à première vue il me semble que les tests imbriqués genre
if ($k1 == $k2) continue;
dans chaque boucle correspondrait à mes
if(in_array($a,$mem)===false)
que j'aurais pu écrire
if(in_array($a,$mem) !== false) continue;

J'espère avoir un peu de temps durant le we prochain.

Quelle est la fonction qui demande 1Go de mémoire ?

Mammouth du PHP | 1967 Messages

15 avr. 2022, 15:03

Je n'ai pas regardé ton code,

les 2 fonction demande + de 600 Mo de mémoire pour gérer le tableau de retour générant les suites.
je pense qu'il est possible de contourner cela en en ne les stockant pas mais en les écrivant dans un fichier texte par exemple. j'ai cherché à les afficher mais la aussi j’atteignais une limite de mémoire
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphanteau du PHP | 41 Messages

09 juin 2022, 18:41

je propose je ne sais pas si c'est correcte :

<?php
$chiffre_max = 10;
$tableau_1 = ['01','10','22','33','44','55','66','77','88','99'];
$tableau_2 = array();

foreach($tableau_1 as $clee => $valeur) {
	foreach($tableau_1 as $clee2 => $valeur2) {
		
		$tableau_2 = $tableau_1;
		
		$save = $tableau_2[$clee2];
		$tableau_2[$clee2] = $tableau_1[$clee];
		$tableau_2[$clee] = $save;
		
		echo implode(chr(32), $tableau_2) . PHP_EOL;

	}
}

ça retourne cela

Code : Tout sélectionner

01 10 22 33 44 55 66 77 88 99 10 01 22 33 44 55 66 77 88 99 22 10 01 33 44 55 66 77 88 99 33 10 22 01 44 55 66 77 88 99 44 10 22 33 01 55 66 77 88 99 55 10 22 33 44 01 66 77 88 99 66 10 22 33 44 55 01 77 88 99 77 10 22 33 44 55 66 01 88 99 88 10 22 33 44 55 66 77 01 99 99 10 22 33 44 55 66 77 88 01 10 01 22 33 44 55 66 77 88 99 01 10 22 33 44 55 66 77 88 99 01 22 10 33 44 55 66 77 88 99 01 33 22 10 44 55 66 77 88 99 01 44 22 33 10 55 66 77 88 99 01 55 22 33 44 10 66 77 88 99 01 66 22 33 44 55 10 77 88 99 01 77 22 33 44 55 66 10 88 99 01 88 22 33 44 55 66 77 10 99 01 99 22 33 44 55 66 77 88 10 22 10 01 33 44 55 66 77 88 99 01 22 10 33 44 55 66 77 88 99 01 10 22 33 44 55 66 77 88 99 01 10 33 22 44 55 66 77 88 99 01 10 44 33 22 55 66 77 88 99 01 10 55 33 44 22 66 77 88 99 01 10 66 33 44 55 22 77 88 99 01 10 77 33 44 55 66 22 88 99 01 10 88 33 44 55 66 77 22 99 01 10 99 33 44 55 66 77 88 22 33 10 22 01 44 55 66 77 88 99 01 33 22 10 44 55 66 77 88 99 01 10 33 22 44 55 66 77 88 99 01 10 22 33 44 55 66 77 88 99 01 10 22 44 33 55 66 77 88 99 01 10 22 55 44 33 66 77 88 99 01 10 22 66 44 55 33 77 88 99 01 10 22 77 44 55 66 33 88 99 01 10 22 88 44 55 66 77 33 99 01 10 22 99 44 55 66 77 88 33 44 10 22 33 01 55 66 77 88 99 01 44 22 33 10 55 66 77 88 99 01 10 44 33 22 55 66 77 88 99 01 10 22 44 33 55 66 77 88 99 01 10 22 33 44 55 66 77 88 99 01 10 22 33 55 44 66 77 88 99 01 10 22 33 66 55 44 77 88 99 01 10 22 33 77 55 66 44 88 99 01 10 22 33 88 55 66 77 44 99 01 10 22 33 99 55 66 77 88 44 55 10 22 33 44 01 66 77 88 99 01 55 22 33 44 10 66 77 88 99 01 10 55 33 44 22 66 77 88 99 01 10 22 55 44 33 66 77 88 99 01 10 22 33 55 44 66 77 88 99 01 10 22 33 44 55 66 77 88 99 01 10 22 33 44 66 55 77 88 99 01 10 22 33 44 77 66 55 88 99 01 10 22 33 44 88 66 77 55 99 01 10 22 33 44 99 66 77 88 55 66 10 22 33 44 55 01 77 88 99 01 66 22 33 44 55 10 77 88 99 01 10 66 33 44 55 22 77 88 99 01 10 22 66 44 55 33 77 88 99 01 10 22 33 66 55 44 77 88 99 01 10 22 33 44 66 55 77 88 99 01 10 22 33 44 55 66 77 88 99 01 10 22 33 44 55 77 66 88 99 01 10 22 33 44 55 88 77 66 99 01 10 22 33 44 55 99 77 88 66 77 10 22 33 44 55 66 01 88 99 01 77 22 33 44 55 66 10 88 99 01 10 77 33 44 55 66 22 88 99 01 10 22 77 44 55 66 33 88 99 01 10 22 33 77 55 66 44 88 99 01 10 22 33 44 77 66 55 88 99 01 10 22 33 44 55 77 66 88 99 01 10 22 33 44 55 66 77 88 99 01 10 22 33 44 55 66 88 77 99 01 10 22 33 44 55 66 99 88 77 88 10 22 33 44 55 66 77 01 99 01 88 22 33 44 55 66 77 10 99 01 10 88 33 44 55 66 77 22 99 01 10 22 88 44 55 66 77 33 99 01 10 22 33 88 55 66 77 44 99 01 10 22 33 44 88 66 77 55 99 01 10 22 33 44 55 88 77 66 99 01 10 22 33 44 55 66 88 77 99 01 10 22 33 44 55 66 77 88 99 01 10 22 33 44 55 66 77 99 88 99 10 22 33 44 55 66 77 88 01 01 99 22 33 44 55 66 77 88 10 01 10 99 33 44 55 66 77 88 22 01 10 22 99 44 55 66 77 88 33 01 10 22 33 99 55 66 77 88 44 01 10 22 33 44 99 66 77 88 55 01 10 22 33 44 55 99 77 88 66 01 10 22 33 44 55 66 99 88 77 01 10 22 33 44 55 66 77 99 88 01 10 22 33 44 55 66 77 88 99