Newsgroup: it.comp.lang.visual-basic
Titolo: giochino con i colori

Spero di essere chiaro...
in un giochio con i colori, ho 8 array di 23 codici di colori ciascuno
(suddivisi e codificati per tonalità).
Esiste un algoritmo (semplice da implementare :-P) che mi calcola tutte le
possibili combinazioni
dei colori contenuti negli array? (i colori possono anche ripetersi più
volte all'interno di una combinazione...)
Qualcuno sa dove posso trovare delle informazioni a riguardo?
Grazie, Giorgio.



Non ho capito se il tuo scopo è di sapere quante sono le combinazioni
possibili (permutazione) o se vuoi esportare l'elenco...
se ti interessa quante sono... 23^8 ... ventitrè alla ottava.
se vuoi l'elenco.... attento!!! sono 23 alla ottava!!!!
Cla

 Cla
No no, accipicchia, io volevo sapere l'elenco delle combinazioni, ma 23 alla
ottava sono un po' tante, forse meglio se lo limito un po' :-PPP
Cmq. mi interessava sapere se esiste per l'appunto un algoritmo che sia in
grado di calcolarmi proprio tutto l'elenco delle combinazioni dei codici dei
colori... anche su un numero + limitato
di combinazioni (magari una combinazione da 4 colori e che ne so, con solo 6
o 8 colori negli array di possibili colori, cosě č piů potabile...) :-). Ma
a parte sapere se esiste (ed esiste di sicuro) sapere dove trovare
informazioni per l'implementazione...
Ciao, Giorgio.
P.S.: alla prossima faccio un MasterMind :-PPP

 colori... anche su un numero + limitato
Potresti provare a fare 8 cicli for uno dentro all'altro con 8 indici
diversi :-)))
....oppure 27 con 27 indici diversi!!! :-)))
Alx

colori... anche su un numero + limitato
per trovare tutte le permutazioni procedi come nella numerazione...
tieni ferme i primi item mentre elenchi progressivamente quelli
dell'ultimo ad esempio
col1 col2 col3 
verde blu giallo
verde blu blu
verde bu verde
quando hai finito gli items dell'ultimo (in questo caso solo
giallo-verde e blu) fai incrementare il penultimo...
posto che dopo il blu di col2 ci vosse il verde...
col1 col2 col3
verde verde giallo
verde verde blu
verde verde verde
dopodiche continui il ciclo sul successivo.
non è bellissimo ma un codice tipo quello che segue funzionerebbe....
a1 = Split("verde,blu,rosso,giallo", ",")
a2 = Split("magenta,blu,rosso,giallo,ocra", ",")
a3 = Split("ciano,rosso,giallo,marrone", ",")
For i1 = 0 To UBound(a1)
    For i2 = 0 To UBound(a2)
        For i3 = 0 To UBound(a3)
            Debug.Print a1(i1) & " - " & a2(i2) & " - " & a3(i3)
        Next
    Next
Next
Ciao, Cla

 Next
È un'idea, grazie per il tempo che mi hai dedicato, ma non era esattamente
quello che cercavo.
Nel senso che dovrei anche dare all'utente la possibilità (tramite opzione)
di scegliere la quantità di colori con cui giocare, quindi, nel caso da te
descritto, dovrei aggiungere un ciclo, cosa che però non credo si possa fare
dinamicamente... spero di aver reso l'idea, adesso sto iniziando a fondermi
il cervello :-(
Ciao, Giorgio.


Se vuoi aumentare il numero di colori disponibili (blu, verde, ecc...)
utilizzando UBound funziona...
Se vuoi aumentare il numero di combinazioni, cioè i tre cicli uno dentro
all'altro fino a n, potresti usare una funzione ricorsiva, che ha anche un
parametro che conta fino al numero da te richiesto e richiama se stessa con
n=n-1.
Questo valore decide sostanzialmente la posizione del colore (vuoi fare un
Mr.Mind giusto??)...però forse sto dicendo qualche stronzata...
Alx

 se ti interessa quante sono... 23^8 ... ventitrè alla ottava.
In realtà sono meno perchè devi considerare univoche le doppie combinazioni
che ottengono lo stesso risultato.
Prendi ad esempio 2 monete: diciamo che croce vale 0 e testa vale 1. Se le
lanci puoi ottenere queste combinazioni:
10
11
11
01
Cioè sono 4 combinazioni, ma solo 3 sono quelle distinte.
Lo stesso problema ce l'hai con i colori.
Però bisogna capire cosa si intende per 8 array di 23 colori. Su un singolo
array ci sono 23 colori possibili contemporaneamente? Oppure sono meno ma
presi da un elenco di 23 colori?
In ogni caso per questo genere di problema i risultati riguardano più i
fattoriali che le potenze (e comunque si tratta sempre di numeri
astronomici, nel peggiore dei casi).
Ciao
*Roby*

 possibili combinazioni ...
L' algoritmo che cerchi lo puoi trovare nel progetto CalcComb
a 
http://www.flanguasco.org
Cosi', ad occhio, direi che ti servono le combinazioni semplici.
Ciao e se hai problemi contattami pure.
Franco

 a 
http://www.flanguasco.org
Ciao, Franco, ti posso dire una cosa?
sei il mio mito personale :-)
Grazie mille, per la disponibilità e per lo splendido materiale sul tuo
sito...
Ciao e buon lavoro (e ancora grazie).
Giorgio.


Ciao, penso che il migliore approccio per generare tutte le permutazioni sia
quello di fare una funzione ricorsiva.
La funzione che trovi sotto trova (dovrebbe trovare) tutte le permutazioni
dei caratteri della stringa passata come parametro.
Ad es. passando "ab" ritorna "ab" e "ba", passando "abc" trova "abc", "acb",
"bac", "bca", "cab", "cba" , passando "abcd"... beh insomma si è capito ;)
Spero possa essere utile.
8<----------------------------
Public Function Perm(ByVal S As String) As Collection
    Dim Ret As New Collection, Car As String, ToAdd As String, Aux As
String, W
    If Len(S) = 1 Then
        Ret.Add S
    Else
        Car = Left$(S, 1)
        Set Aux = Perm(Mid$(S, 2))
        For Each W In Aux
            For i = 0 To Len(W)
                ToAdd = Left$(W, i) & Car & Mid$(W, i + 1)
                Ret.Add ToAdd
            Next i
        Next W
    End If
    Set Perm = Ret
End Function
8<----------------------------


ops... ovviamente era "Aux as Collection"

 a 
http://www.flanguasco.org
Tempo fa usando questo codice ho scritto una classe che permettesse di
calcolare le combinazioni e permutazioni di valori arbitrari (il tuo
algoritmo forniva solo gli "indici").
Se ti interessa... (magari lo mando anche al Sito Comune)
Ciao
--
using System.Gtk.Forms = "
http://www.neodatatype.net/windowsforms/sgf.aspx
"
mathParser = "
http://www.neodatatype.net
"
sitoComune = "
http://www.it-lang-vb.net
"

 Ciao
Se hai tempo di postarla o metterla sul sito comune, sarebbe parecchio
interessante credo :-) farebbe piacere anche a me :-P
Ciao, Giorgio.

 sito...
Grazie, sei troppo gentile.  Il S/W per me e' solo un
hobby ed ho sempre detto che un hobby deve essere
"costoso ed inutile, se no smette di essere un hobby
e diventa un lavoro": se mi fai dubitare della sua
inutilita' mi rovini...
Ciao, grazie ed a risentirci.
Franco

 Se ti interessa... (magari lo mando anche al Sito Comune)
Te ne sarei molto grato anche perche' io, vecchio dinosauro
dell' era del FORTRAN e dell' Assembler, con le classi ci so'
fare molto poco ed averne una gia' pronta potrebbe semplificarmi
parecchi problemi.
Ciao, per ora, grazie ed a risentirci.
Franco

 Ciao, Giorgio.
Ok, datemi il tempo di renderla indipendente dal progetto originale e per
fine settimana potrebbe essere up.
