Visualizzazione dei risultati da 1 a 10 su 10

Discussione: combinazioni ricursive

  1. #1
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012

    combinazioni ricursive

    buongiornoa tutti
    ho 4 array di cui devo generare tutte le possibili combinazioni
    ecco un esempio
    Codice PHP:
    <script>
    var 
    a=['a','b','c','d'];
    var 
    b=['1','2','3','4'];
    //var b=[];
    var c=['I','II','III','IV'];
    var 
    c=['A','B','C','D'];

    var 
    end=[];
    for (var 
    w=0a.lengthw++)
      {
      for (var 
    x=0b.lengthx++)
        {
        for (var 
    y=0c.lengthy++)
          {
          for (var 
    z=0d.lengthz++)
            {
            
            }
        
          }
      
        }
      
      }


    </script> 
    i cicli for annidati sono corretti come concetto, ma il mio problema è quando uno degli array non ha elementi...
    che tipo di controllo posso mettere per continuare i cicli qual' ora incontrassi un array vuoto?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  2. #2
    un'idea al volo

    e se ridefinisci gli array vuoti?

    if(b.length == 0)
    b = [""];

    potrebbe funzionare?

  3. #3
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    mi sa che non ho capito...

    var a=['a','b','c','d'];
    var b=['1','2','3','4'];
    var c=[];
    var d=[];

    var end=[];
    for (var w=0; w < a.length || w == 0; w++)
    for (var x=0; x < b.length || x == 0; x++)
    for (var y=0; y < c.length || y == 0; y++)
    for (var z=0; z < d.length || z == 0; z++)
    {
    var _b="";
    if(a[w]) _b += a[w];
    if(b[x]) _b += b[x];
    if(c[y]) _b += c[y];
    if(d[z]) _b += d[z];
    document.write(_b+"
    ");
    }
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

  4. #4
    @Gunn

    credo che il problema di dottwatson sia che se un array e' vuoto non entra nel ciclo e non fa nulla.

    Ecco il perche' della mia soluzione

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da raven74
    @Gunn

    credo che il problema di dottwatson sia che se un array e' vuoto non entra nel ciclo e non fa nulla.

    Ecco il perche' della mia soluzione
    esatto è questo il problema...

    come ha proposto Gunn funziona perforza... mi azzera gli array finali quindi funziona per forza.. ma quando un array intermedio è vuoto? perdo la sequenzialità...
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da raven74
    @Gunn

    credo che il problema di dottwatson sia che se un array e' vuoto non entra nel ciclo e non fa nulla.

    Ecco il perche' della mia soluzione
    mmhhh.. il mio problema è che la tua forzatura mi inquina i dati successivi, quindi dovrei teoricamente lavorare in purezza dei dati..
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    ok, ma anche dal punto di vista matematico ha senso... le combinazioni di un insieme vuoto e un insieme numerato danno l'insieme vuoto.

    Non puoi creare copia degli array?

    oppure svuotare gli array che contengono solo un "" dopo la tua funzione?

    Altrimenti devi riempirti di if

  8. #8
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    Originariamente inviato da dottwatson
    esatto è questo il problema...

    come ha proposto Gunn funziona perforza... mi azzera gli array finali quindi funziona per forza.. ma quando un array intermedio è vuoto? perdo la sequenzialità...
    come sarebbe che perdi la sequenzialità?

    var a=['a','b','c','d'];
    var b=['1','2','3','4'];
    //var b=[];
    var c=[];
    var d=['sd','sd','sd','sd'];

    var end=[];
    for (var w=0; w < a.length || w == 0; w++)
    for (var x=0; x < b.length || x == 0; x++)
    for (var y=0; y < c.length || y == 0; y++)
    for (var z=0; z < d.length || z == 0; z++)
    {
    var _b="";
    if(a[w]) _b += a[w];
    if(b[x]) _b += b[x];
    if(c[y]) _b += c[y];
    if(d[z]) _b += d[z];
    document.write(_b+"
    ");
    }
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ho provato lo script di Gunn con

    Codice PHP:
    var a=['a','b','c','d'];
    var 
    b=['1','2','3','4'];
    var 
    c=[];
    var 
    d=['I','II','III','IV'];

    var 
    end=[];
    for (var 
    w=0a.length || == 0w++)
    for (var 
    x=0b.length || == 0x++)
    for (var 
    y=0c.length || == 0y++)
    for (var 
    z=0d.length || == 0z++)
      {
      var 
    _b="";
      if(
    a[w]) _b += a[w];
      if(
    b[x]) _b += b[x];
      if(
    c[y]) _b += c[y];
      if(
    d[z]) _b += d[z];
      
    document.write(_b+"
    "
    );
      } 
    e sembra proprio funzionare correttamente...

    ma prima di cantare vittoria lo metto in produzione e vediamo come si comporta.. grazie intanto
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    giuro che non avevo visto gli or nello script di gunn

    ok scusate le mie considerazioni insensate, mi pare una buona soluzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.