Avatar billede baitianlong Nybegynder
22. oktober 2002 - 14:36 Der er 23 kommentarer og
1 løsning

Array fest

Jeg har et array med navne i. Disse navne skal tilfældigt deles op i 5 andre arrays !!

Her er mit mislykkede script

function lavGrupper() {
    navne = new Array();
    navne.push("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
    navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");
    gruppe1 = new Array();
    gruppe2 = new Array();
    gruppe3 = new Array();
    gruppe4 = new Array();
    gruppe5 = new Array();
    brugt = new Array();
        while(brugt.length < navne.length) {
            tal = random(navne.length);
            if(brugt.indexOf(navne[tal]) == -1) {
                brugt.push(navne[tal]);
                this["gruppe" + gruppe].push(navne[tal]);
            }
            gruppe++;
                if(gruppe == 6){
                    gruppe = 1;
                }
        }
    trace(gruppe1.toString());
    trace(gruppe2.toString());
    trace(gruppe3.toString());
    trace(gruppe4.toString());
    trace(gruppe5.toString());
   
}

Hjælp !!
Avatar billede alexander_j Nybegynder
22. oktober 2002 - 21:50 #1
function lavGrupper() {
        navne = new Array();
        navne.push("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
        navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
        navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");
        gruppe0 = new Array("ja");
        gruppe1 = new Array();
        gruppe2 = new Array();
        gruppe3 = new Array();
        gruppe4 = new Array();
       
        while (navne.length>0) {
            this["gruppe"+random(5)].push(navne.shift());
        }

        trace(gruppe0.toString());
        trace(gruppe1.toString());
        trace(gruppe2.toString());
        trace(gruppe3.toString());
        trace(gruppe4.toString());
    }

Et forslag :-)
Avatar billede alexander_j Nybegynder
22. oktober 2002 - 21:52 #2
glem mit "ja" i gruppe0 - bare et tjek for at få respons mens jeg prøvede!
Avatar billede baitianlong Nybegynder
23. oktober 2002 - 16:00 #3
alexander>> Udmærket. Men der skal være lige mange i hver gruppe ! Kan du klare den ?
Avatar billede alexander_j Nybegynder
23. oktober 2002 - 19:27 #4
navne = new Array();
navne.push ("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");
gruppe0 = new Array();
gruppe1 = new Array();
gruppe2 = new Array();
gruppe3 = new Array();
gruppe4 = new Array();
       
while (navne.length>0) {
  for(i=0; i<5; i++) {
      this["gruppe"+i].push(navne.shift(random(navne.length)));
  }
}
       
trace(gruppe0.toString());
trace(gruppe1.toString());
trace(gruppe2.toString());
trace(gruppe3.toString());
trace(gruppe4.toString());

Kan den bruges?
Avatar billede alexander_j Nybegynder
24. oktober 2002 - 20:00 #5
legende det er svært at putte lige mange i hver gruppe, når antallet af grupper ikke går op i antallet af navne - derfor bliver der i dette tilfælde nød til at være en gruppe der har en flere end de andre!
Avatar billede alexander_j Nybegynder
24. oktober 2002 - 20:01 #6
Ellers må jeg til at skære en af dem i stykker (lol)
Avatar billede barklund Nybegynder
25. oktober 2002 - 12:25 #7
navne = new Array();
    navne.push("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
    navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");antantalGrupper = 5;
gruppe = new Array();
for (i = 0; i < antalGrupper; i++)
    gruppe[i] = new Array();

navne.sort(function(a,b){random(3)-1;});

for (var n = navne.pop(), var i = 0; navne.length; n = navne.pop(); i++)
    gruppe[i%antalGrupper].push(n);



Hopla :o)
Avatar billede barklund Nybegynder
25. oktober 2002 - 12:26 #8
Tricket er at lave sit array af navne og randomize dette... Herefter kan man jo bare poppe alle elementerne og putte dem i hver sin stak... :o)
Avatar billede barklund Nybegynder
25. oktober 2002 - 12:27 #9
Det der antantalGrupper er antalGrupper på en ny linie...
Avatar billede barklund Nybegynder
25. oktober 2002 - 14:53 #10
Er væk i weekenden og først tilbage mandag...
Avatar billede baitianlong Nybegynder
25. oktober 2002 - 17:03 #11
Tak for jeres begges forslag. Men alexander>> din laver de samme grupper hver gang !! og Barklund>> "identifyer expected"

Er det virkelig så svært ?
Avatar billede alexander_j Nybegynder
25. oktober 2002 - 18:04 #12
Sorry havde ikke kigget mit forrige forsøg ordenligt igennem - men den her skulle virke :-)

navne = new Array();
navne.push ("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");
gruppe0 = new Array();
gruppe1 = new Array();
gruppe2 = new Array();
gruppe3 = new Array();
gruppe4 = new Array();

while (navne.length>0) {
  for(i=0; i<5; i++) {
      xxx = random(navne.length);
      this["gruppe"+i].push(navne[xxx]);
      navne.splice(xxx,1);
  }
}
       
trace(gruppe0.toString());
trace(gruppe1.toString());
trace(gruppe2.toString());
trace(gruppe3.toString());
trace(gruppe4.toString());
Avatar billede baitianlong Nybegynder
25. oktober 2002 - 18:20 #13
Den laver sq også de samme grupper hver gang. Prøv den evt. med en forløkke !! Der er ingen ændring fra gang til gang !
Avatar billede baitianlong Nybegynder
25. oktober 2002 - 18:21 #14
Nej undskyld !!!! Min fejl. Det virker glimrende (o;
Avatar billede alexander_j Nybegynder
25. oktober 2002 - 23:33 #15
np - og tak for point ;-)

Sjovt at kunne hjælpe en der ligger nr. 7 på flashranglisten og som jeg respekterer som en god flasher :-)!
Avatar billede baitianlong Nybegynder
26. oktober 2002 - 15:53 #16
Jamen jeg er bedst til at få ting til at bevæge sig på den rigtige måde med scripts. Variabelhåndtering og array's er ikke mit speciale (o; - tek for hjælpen, alexander
Avatar billede barklund Nybegynder
28. oktober 2002 - 12:19 #17
Jeg synes stadig, at min version er kønnere... Følgende virker:

navne = new Array();
navne.push("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");
antalGrupper = 5;
gruppe = new Array();

for (i=0; i<antalGrupper; i++)
    gruppe[i] = new Array();

navne.sort(function (a,b) { return random(3)-1;});

for (var i = 0; navne.length; i++)
    gruppe[i%antalGrupper].push(navne.pop());

trace(gruppe.join("\n"));
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 15:40 #18
Jep., Barklund... Den virker perfekt, hvad siger i to så, hvis man skal kunne sikre at f.eks Mads og Per kommer i samme gruppe ?? Så skal man vel skrive en metode, der finder ud af hvilken gruppe personerne er i, sammenligne, og hvis de er forskellige, skal den køre funktionen een gang til ?? Jeg skal nok give nye points, for svar på dette (o;
Avatar billede barklund Nybegynder
28. oktober 2002 - 15:56 #19
Der skal stadig komme lige mange i her (underforstået at det går op)?
Avatar billede barklund Nybegynder
28. oktober 2002 - 15:56 #20
her = hver even
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 16:02 #21
Ja. Der skal være lige mange i hver gruppe, men man skal kunne sige f.eks

navn1 = "Emil";
navn2 = "Jeppe";

og de skal så havne i samme gruppe (o;
Avatar billede barklund Nybegynder
28. oktober 2002 - 17:09 #22
fx:

navne = new Array();
navne.push("Emil", "Asger", "Mads", "Lennart", "Allan", "Jesper", "Muhammed", "Mehmed", "Per", "Jeppe");
navne.push("Nikolaus", "1", "2", "3", "4", "5", "6", "7", "8", "9");
navne.push("10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20");

join = [["Mads", "Per"],["Lennart","2"]];

Og så kommer mads og per hhv. lennart og 2 i samme gruppe?
Avatar billede barklund Nybegynder
28. oktober 2002 - 17:10 #23
Eller vil det altid kun dreje sig om et par og aldrig et triple eller to par eller noget andet? Hvilke variationer er der, spørger jeg faktisk om?
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 17:12 #24
Det var egentlig bare to eller tre personer, der skulle i samme gruppe uanset hvad. Ikke mere !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester