Jump to content
Sign in to follow this  
laby

algo pour créer une liste

Rate this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

Bienvenu sur le Hub laby.

Hoooo c'est un joli casse-tête ! :wacko:

Je pense avoir saisi le truc, après pour l'algo...faut y réfléchir ;)

Edited by Country

Share this post


Link to post
Share on other sites

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 :whistling: , 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." :lol:

Edited by Country

Share this post


Link to post
Share on other sites

Merci pour l'idée, :up:

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 :whistling: 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.

Share this post


Link to post
Share on other sites

oula, jusqu'a 32 !

Déjà avec ce que j'ai fait à 6 sa a du mal... :huh:

(J'ai compri que le nombre de collone = nombre de départ, je ne sais pas si c'est toujours le cas)

Edited by Country

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...