![]() |
Forum SELFHTML: Archives: |
|
|
Le message suivant est de: Bapt,
neoz@laposte.net, 16. 04. 2005, 17:44
Slt à tous,
Je voudrais mélanger un tableau en jvacsript, qui contient des chiffres et des lettres, rien de plus. Je pense qu'il faut mélanger les indices du tableau pr aller plus vite et ne pas faire un second tableau, mais je n'ai pas trouvé la fonction... il n'y aurait pas une peite fonction 'unsort()' ?? =)
Merci d'avance pour vos réponses !
Le message suivant est de: Patrick Andrieu, 17. 04. 2005, 14:47
http://actuel.fr.selfhtml.org/equipe/patrick.htm
Bonjour!
»» Je voudrais mélanger un tableau en jvacsript, qui contient des chiffres et des lettres, rien de plus. Je pense qu'il faut mélanger les indices du tableau pr aller plus vite et ne pas faire un second tableau, mais je n'ai pas trouvé la fonction... il n'y aurait pas une peite fonction 'unsort()' ?? =)
Si tu pouvais concrétiser (exemple)?...
--
_ au delà du délire _

Le message suivant est de: Bapt,
neoz@laposte.net, 23. 04. 2005, 11:56
re,
je concrétise :
j'ai une fonction d'initialisation :
function Init(intCol) //On remplie le tableau av chiffres et lettres
{
var arrJeu = new Array(intCol * intCol);
var strDeb="0";
for(var i = 0 ; i < intCol*intCol - 1 ; i++) // -1 pr avoir une case vide (la dernière)
{
if(i == 0)
var intDeb = strDeb.charCodeAt(0);
if(i == 10)
{
strDeb='A';
intDeb=strDeb.charCodeAt(0); // Renvoie le code associé au caractère à la position n
}
arrJeu[i] = String.fromCharCode(intDeb); // On remplit le tableau (chiffres et lettres)
intDeb++;
}
arrJeu[i]=""; // pour éviter le "undefined" de la dernière case
AfficherTableau(arrJeu,intCol);
}
Ce qu'il fau retenir c'est que j'ai un tableau rempli av 1,2,...9,a,b,....
et que je voudrai le mélanger. J'ai essayé les solution de Celelibi, mais ça mélange tjrs de la meme manière. Il n'existerait pas une fonciton d'initialisation pr le random genre srand() comme en c(++)?
Merci de votre aide =)
Le message suivant est de: Celelibi,
_monpseudosanslamajuscule_@gmail.com, 23. 04. 2005, 20:25
»» re,
re
»» Ce qu'il fau retenir c'est que j'ai un tableau rempli av 1,2,...9,a,b,....
»» et que je voudrai le mélanger. J'ai essayé les solution de Celelibi, mais ça mélange tjrs de la meme manière. Il n'existerait pas une fonciton d'initialisation pr le random genre srand() comme en c(++)?
Moi je n'ai pas ce problème avec firefox sous linux.
Il n'existe pas de fonction prévu pour faire celà.
Mais on peut quand même modifié le code source pour qu'il ne retourne pas la même séquence de nombres aléatoirs.
<script>
function shuffle() {
var funct = function ()
{
var dt = new Date();
return Math.floor((1000*Math.random()+dt.getTime())%3 - 1); // retourne -1, 0 ou 1
};
return this.sort(funct);
}
Array.prototype.shuffle = shuffle;
var tablo = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
tablo.shuffle();
alert(tablo.toSource());
</script>
En gros on fait maintenant intervenir l'heure, chose que l'on fait généralement par en C par srand(time()).
Voilà, j'espère que ce code te conviendra cette fois. :)
Celelibi
--
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GS/M>O d-@>-- s: a--->? C++(+++)>$ UL++>++++$
P++(+)>++++$ L+++(++)>+++++$ E-?>++@ W+++>$
N?>++@ o?>+++++$ K->++++@$ !w>$ O? M- V? PS
PE Y+(++)>+++@ PGP+@>+++ t?>+@ 5? X+()R->+@
!tv>$ b(-) DI? !D>----@$ G>+++@ e+>+++++
h!>*$ r-- y>$
------END GEEK CODE BLOCK------
Le message suivant est de: Celelibi,
_monpseudosanslamajuscule_@gmail.com, 18. 04. 2005, 11:41
»» Slt à tous,
Salut à toi,
»» Je voudrais mélanger un tableau en jvacsript, qui contient des chiffres et des lettres, rien de plus. Je pense qu'il faut mélanger les indices du tableau pr aller plus vite et ne pas faire un second tableau, mais je n'ai pas trouvé la fonction... il n'y aurait pas une peite fonction 'unsort()' ?? =)
Il n'existe pas de méthode pour mélanger les éléments d'un tableau, nonobstant, tu peux toujours tricher un peu avec la méthode sort().
regarde cet exemple :
<script>
function rand() {
return Math.floor((3*Math.random())-1);
}
var tablo = new Array(9, 5, 1, 7, 0, 3, 2, 8, 6, 4);
tablo.sort();
alert(tablo.toSource());
tablo.sort(rand);
alert(tablo.toSource());
</script>
Tu peux aussi créer toi même la méthode shuffle() comme ça :
<script>
function shuffle() {
return this.sort(function() { return Math.floor( (3*Math.random()) - 1 );} );
}
Array.prototype.shuffle = shuffle;
var tablo = new Array(9, 5, 1, 7, 0, 3, 2, 8, 6, 4);
tablo.sort();
alert(tablo.toSource());
tablo.shuffle();
alert(tablo.toSource());
</script>
ou alors si tu veux pouvoir passer un argument à shuffle() pour créer ta propre fonction de mélange, tu peux utiliser le code ci-dessous.
<script>
function shuffle() {
if (typeof shuffle.arguments[0] != 'function') {
var funct = function ()
{
return Math.floor((3*Math.random())-1); // retourne -1, 0 ou 1
};
} else {
var funct = shuffle.arguments[0];
}
return this.sort(funct);
}
function test(a, b) {
return a-b;
}
Array.prototype.shuffle = shuffle;
var tablo = new Array(9, 5, 1, 7, 0, 3, 2, 8, 6, 4);
tablo.sort();
alert(tablo.toSource());
tablo.shuffle(test); // là en fait on va trier
alert(tablo.toSource());
</script>
voilà, j'espère que ce code t'ira. :)
Celelibi
--
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GS/M>O d-@>-- s: a--->? C++(+++)>$ UL++>++++$
P++(+)>++++$ L+++(++)>+++++$ E-?>++@ W+++>$
N?>++@ o?>+++++$ K->++++@$ !w>$ O? M- V? PS
PE Y+(++)>+++@ PGP+@>+++ t?>+@ 5? X+()R->+@
!tv>$ b(-) DI? !D>----@$ G>+++@ e+>+++++
h!>*$ r-- y>$
------END GEEK CODE BLOCK------
© 1998-2004
selfhtml@fr.selfhtml.org