Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    combinazioni di array [OT?]

    ciao non mi interessa uno specifico linguaggio, bensi un metodo informatico generale per trovare tutte le combinazioni di n array di n elementi ciascuno.
    Ho provato molto in questi giorni in modo un po grezzo ovvero pensavo nella mente un percorso , attivavo righe ecc... tutte queste cose mi hanno fatto pensare che esiste probabilmente un metodo ben definito, dato che non mi è sembrato tutto cosi banale.
    grazie.
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da giuseppe500 Visualizza il messaggio
    ciao non mi interessa uno specifico linguaggio, bensi un metodo informatico generale per trovare tutte le combinazioni di n array di n elementi ciascuno.
    Ho provato molto in questi giorni in modo un po grezzo ovvero pensavo nella mente un percorso , attivavo righe ecc... tutte queste cose mi hanno fatto pensare che esiste probabilmente un metodo ben definito, dato che non mi è sembrato tutto cosi banale.
    grazie.
    ciao
    cerco di spiegarmi meglio:
    ho n array ,ogni array in ogni cella contiene un numero intero io vorrei trovare tutte le combinazioni non ripetute di ogni serie di numeri che si possono trovare con gli n array .
    ad es:
    123
    456

    14-15-16-24-25-26-34-35-36 in quest ordine l'altro ordine non mi serve , specifico che ho un problema in questa soluzione di muovere di uno step l'array 1 scorrere step per step l'array 0 muovere di uno step l'array 1 scorrere l'array 0 quando arrivo alla fine dell array 1 muovo di uno step l'array 2 e itero prima l'array 0 poi l'array 1 ripetendo quello che ho fatto prima ecc.... quando ho ad es 4 array dato che l'ultimo array viene iterato alla fine e ha all'inizializzazione dei valori mi ripete un valore due volte ad es:
    1234
    1234
    1234
    1234 lo step : 1: non importa , 2,3,1 viene ripetuto in quanto cambioi primi 3 array ma l'ultimo no quindi ne vengono fuiori due a questo punto posso doppo eliminare i duplicati , ma vorrei sapere se c'è un metodo migliore.
    grazie.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ho pensato a qualcosa del genere:
    codice:
    for x= 0 to 3
       for y = 0 to 3
          for z = 0 to 3 
    //trovo gli indici e li aggiungo ad un array o una mappa o una lista
          next
       next
    next
    cosi trovo gli indici ,ed è impossibile che siano duplicati, poi dagli indici risalgo con gli array dei valori alle combinazioni il problema è poi chiudo come faccio ad annidare dei for per il numero di volte che corrisponde al numero degli array dati ? come posso creare una serie di cicli for annidati per quanti array mi sono dati?
    forse con la oop ma non riesco a capire come oppure col % e n e un for piu lungo (la somma della lunghezza degli array dati ma è un po un casino ancora nella mia testa.
    una mano?
    grazie.
    scusate i 3 post.

  4. #4
    Per il discorso dei for annidati, basta fare una funzione ricorsiva.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Per il discorso dei for annidati, basta fare una funzione ricorsiva.
    non ci avevo pensato, grazie 1000!!.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da giuseppe500 Visualizza il messaggio
    non ci avevo pensato, grazie 1000!!.
    scusa ma non ci salto fuori come faccio con un solo for a farne 3 o a4 o 5 o n?
    io ho provato cosi:
    codice:
     Private Function recFor(num As Integer, lofMax As List(Of Integer), loRes As List(Of Integer), loall As List(Of List(Of Integer)), listidx As List(Of Integer))
        Dim i As Integer
        If num < 4 Then
          For i = listidx(num) To lofMax(num)
    
            If num >= 4 Then
              num = 0
            End If
            loRes.Add(i)
            listidx(num) = i
            If loRes.Count Mod 4 = 0 And loRes.Count - 1 <> 0 Then
              loall.Add(loRes)
              loRes = New List(Of Integer)
              num = 0
            End If
            num += 1
          Next
          recFor(num, lofMax, loRes, loall, listidx)
    
    
    
    
        End If
      End Function
    e pensavo di ricevere una serie (lista di n elementi) di 4 int cosi : 0 0 0 1 - 0 0 0 2 - 0 0 0 3 - 0 0 0 4 - 0 0 1 0 - 0 0 1 1 ecc...
    ma penso di aver sbagliato tutto sig non riesco a capire come annidare form in una funzione ricorsiva.
    mi puoi dare un aiuto?
    grazie.ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Per il discorso dei for annidati, basta fare una funzione ricorsiva.
    riuscito, i dati sono pronti dopo che viene chiamato il next grazie , ciao

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.