laby Posté 17 Avril 2004 Posté 17 Avril 2004 Bonjour Je voudrais créer une liste qui ressemble à celle-là, et je voudrais de l'aide pour trouver un algorithme. apparemment c simple mais je n'y arrive pas. Le nombre de colonnes du tableau est différent, et le premier nombre peut changer. 5 0 0 0 0 4 1 0 0 0 4 0 1 0 0 4 0 0 1 0 4 0 0 0 1 3 2 0 0 0 3 1 1 0 0 3 1 0 1 0 3 1 0 0 1 3 0 2 0 0 3 0 1 1 0 3 0 1 0 1 3 0 0 2 0 3 0 0 1 1 3 0 0 0 2 2 3 0 0 0 2 2 1 0 0 2 2 0 1 0 2 2 0 0 1 2 1 2 0 0 2 1 1 1 0 2 1 1 0 1 2 1 0 2 0 2 1 0 1 1 2 1 0 0 2 2 0 3 0 0 2 0 2 1 0 2 0 2 0 1 2 0 1 2 0 2 0 1 1 1 2 0 1 0 2 2 0 0 3 0 2 0 0 2 1 2 0 0 1 2 2 0 0 0 3 1 4 0 0 0 1 3 1 0 0 1 3 0 1 0 1 3 0 0 1 1 2 2 0 0 1 2 1 1 0 1 2 1 0 1 1 2 0 2 0 1 2 0 1 1 1 2 0 0 2 1 1 3 0 0 1 1 2 1 0 1 1 2 0 1 1 1 1 2 0 1 1 1 1 1 1 1 1 0 2 1 1 0 3 0 1 1 0 2 1 1 1 0 1 2 1 1 0 0 3 1 0 4 0 0 1 0 3 1 0 1 0 3 0 1 1 0 2 2 0 1 0 2 1 1 1 0 2 0 2 1 0 1 3 0 1 0 1 2 1 1 0 1 1 2 1 0 1 0 3 1 0 0 4 0 1 0 0 3 1 1 0 0 2 2 1 0 0 1 3 1 0 0 0 4 0 5 0 0 0 0 4 1 0 0 0 4 0 1 0 0 4 0 0 1 0 3 2 0 0 0 3 1 1 0 0 3 1 0 1 0 3 0 2 0 0 3 0 1 1 0 3 0 0 2 0 2 3 0 0 0 2 2 1 0 0 2 2 0 1 0 2 1 2 0 0 2 1 1 1 0 2 1 0 2 0 2 0 3 0 0 2 0 2 1 0 2 0 1 2 0 2 0 0 3 0 1 4 0 0 0 1 3 1 0 0 1 3 0 1 0 1 2 2 0 0 1 2 1 1 0 1 2 0 2 0 1 1 3 0 0 1 1 2 1 0 1 1 1 2 0 1 1 0 3 0 1 0 4 0 0 1 0 3 1 0 1 0 2 2 0 1 0 1 3 0 1 0 0 4 0 0 5 0 0 0 0 4 1 0 0 0 4 0 1 0 0 3 2 0 0 0 3 1 1 0 0 3 0 2 0 0 2 3 0 0 0 2 2 1 0 0 2 1 2 0 0 2 0 3 0 0 1 4 0 0 0 1 3 1 0 0 1 2 2 0 0 1 1 3 0 0 1 0 4 0 0 0 5 0 0 0 0 4 1 0 0 0 3 2 0 0 0 2 3 0 0 0 1 4 0 0 0 0 5
Country Posté 17 Avril 2004 Posté 17 Avril 2004 (modifié) Bienvenu sur le Hub laby. Hoooo c'est un joli casse-tête ! Je pense avoir saisi le truc, après pour l'algo...faut y réfléchir Modifié 17 Avril 2004 par Country
Country Posté 17 Avril 2004 Posté 17 Avril 2004 (modifié) Voici le code que j'ai pondu : <?function zero($nb,$long) { while (strlen($nb)<$long) { $nb = "0".$nb; } return $nb;}$num = 5; // Nombre de départ (+ il est grand + c'est long)$nb = "";$tab = array($num);for($i=0;$i<$num;$i++) { if ($i>0) $tab[$i]=0; $nb .= $tab[$i];}while ($nb>=$num) { $somme = 0; for($i=0;$i<$num;$i++) { $nbt[$i] = substr($nb,$i,1); $somme +=$nbt[$i]; } if ($somme==$num) echo zero($nb,$num)."<br>"; $nb--;}?> Bon, j'ai fait sa asser vite alors soyez indulgent , on peut pas dire que ce soit très rapide comme méthode... Comme le dis si bien mon prof de prog : "On bon programme c'est un programme qui marche." Modifié 17 Avril 2004 par Country
laby Posté 17 Avril 2004 Auteur Posté 17 Avril 2004 Merci pour l'idée, Je vais l'essayer et l'adapter à mon programme. J'ai déjà essayé avec une fonction récursive mais ça me prend beaucoup de temps quand le premier nombre atteint les 17 ou 18 alors que j'en ai besoin jusqu'à 32. En fait je travaille en java, mais bof l'algorithme ne change pas. En tout cas merci encore pour le tuyau.
Country Posté 17 Avril 2004 Posté 17 Avril 2004 (modifié) oula, jusqu'a 32 ! Déjà avec ce que j'ai fait à 6 sa a du mal... (J'ai compri que le nombre de collone = nombre de départ, je ne sais pas si c'est toujours le cas) Modifié 17 Avril 2004 par Country
laby Posté 17 Avril 2004 Auteur Posté 17 Avril 2004 Non, nombre de colonne n'est pas toujours égale à nombre de départ, c'était une coincidence. Je voulais seulement rédiger une liste jusqu'à la fin, et j'ai simplifié. En réalité le nombre de colonne est de 20, et le premier nombre peut varier de 1 à 32. Si l'algo marche, je peux l'adapter pour diviser la liste à créer en deux, et de ce fait les 32 peuvent être réduits en 16, n'empêche c'est pas encore trop petit.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant