mogelijke lettercombinaties

Status
Niet open voor verdere reacties.

dejongetje

Gebruiker
Lid geworden
15 sep 2006
Berichten
11
mensen,

Ik heb een vraag.
Hoe krijg ik het volgende voor elkaar :

ik wil alle mogelijke combinaties hebben van :

AAAAAAAAAAAAAAAA

t/m

DDDDDDDDDDDDDDDD

Er mogen dus alleen maar letters van A T/M D voor komen, en alle 16 posities moeten gebruikt worden.

Volgens mijn berekening kom ik dan uit op 65536 mogelijke combinaties.
Iedere combinatie moet vervolgens een nummertje hebben, en weer worden opgeslagen in een groot bestand.

Heeft iemand een idee ?
Ik heb werkelijk geen idee hoe ik het moet aanpakken
 
Als ik je vraag juist heb begrepen denk ik wel dat je er wat naast zit me je aantal mogelijk combinaties:
Zoals ik je vraag interpreteer wil je dus alle mogelijk combinaties hebben van a/d voor 16 letters.
Voor 2 letters zou het dan geven:
1. AA
2. BA
3. CA
4. DA
5. AB
6. BB
...

Dus hier (in mijn geval) zullen het aantalmogelijk combinaties 4 * 4 zijn of 4 ^ 2.
Als we nu 16 letters hebben is het aantal mogelijke combinaties 4 ^ 16 of 4294967296 mogelijke combinaties. Als je zoveel combinaties wil laten bereken door je computer zal ie daar wel eventjes met zout zijn. Maar zal hiet het aantal combinaties posten voor 3 letters:
1. aaa
2. baa
3. caa
4. daa
5. aba
6. bba
7. cba
8. dba
9. aca
10. bca
11. cca
12. dca
13. ada
14. bda
15. cda
16. dda
17. aab
18. bab
19. cab
20. dab
21. abb
22. bbb
23. cbb
24. dbb
25. acb
26. bcb
27. ccb
28. dcb
29. adb
30. bdb
31. cdb
32. ddb
33. aac
34. bac
35. cac
36. dac
37. abc
38. bbc
39. cbc
40. dbc
41. acc
42. bcc
43. ccc
44. dcc
45. adc
46. bdc
47. cdc
48. ddc
49. aad
50. bad
51. cad
52. dad
53. abd
54. bbd
55. cbd
56. dbd
57. acd
58. bcd
59. ccd
60. dcd
61. add
62. bdd
63. cdd
64. ddd

Gz,

Michael!

P.S. als je de code zou wille hebben laat dan maar een berichtje
 
Hartstikke bedankt voor je reaktie.
Ik kreeg gisteren een ingeving, en daarbij kwam ik tot de volgende code, die mijn pc idd heeft laten vastlopen :

dim teller,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16 as integer 'iedere positie 1
teller=1
dim outtext as string 'hierin wordt telkens 1 mogelijkheid opgebouwd
t1=t2=t3=t4=t5=t6=t7=t8=t9=t10=t11=t12=t13=t14=t15=t16=0


for t1 = 65 to 68
tor t2 = 65 to 68
tor t3 = 65 to 68
tor t4 = 65 to 68
tor t5 = 65 to 68
t/m
tor t16 = 65 to 68

outtext= chr(t1) & chr(t2) ......... chr(t16) & " id " & teller

teller=teller+1

next t16
next t5
next t4
next t3
next t2
next t1

------------------------------------------------------
Deze code vind de pc idd niet zo errug leuk ;)

Daarom heb ik het nog maar een keer gedaan maar dan in een shell script op linux.
Dat draait een stuk soepeler, en idd het werd een giga bestand
 
Dit is wat ik had, het zal wss wel 1000 keer korter kunne ma soit, dit werkte bij mij

Code:
    Const AANTALLETTERS = 3  'Aantal letters, in jouw voorbeeld 16
    Const AANTALCOMBINATIES = 5 'Tot hoeveel hij moet tellen in jouw geval 4 (D) of hier 5 (E)

    Dim Letters(AANTALLETTERS - 1) As Integer
    Dim Finished As Boolean
    Dim Letter As Integer
    Dim Uitkomst As String
    Dim i As Integer
    Dim EentjeBij As Boolean
    Dim Regel As String
    Dim Teller As Integer
    Dim OutPut As String
    
    Teller = 0
    For i = 0 To AANTALLETTERS - 1 Step 1
        Letters(i) = 1
    Next
    Letters(0) = 0
    
    Do
            Teller = Teller + 1
            Letter = -1
            Do
                EentjeBij = False
                Letter = Letter + 1
                    If Letters(Letter) = AANTALCOMBINATIES Then
                        If AANTALLETTERS - 1 = Letter Then
                            EentjeBij = True
                            Finished = True
                        End If
                       Letters(Letter) = 1
                    Else
                        Letters(Letter) = Letters(Letter) + 1
                        EentjeBij = True
                    End If
            Loop While EentjeBij = False
        If Finished = False Then
            Regel = ""
            For i = 0 To AANTALLETTERS - 1 Step 1
                Regel = Regel + Chr(Letters(i) + 64)
            Next
            OutPut = OutPut + CStr(Teller) & ". " & Regel + vbCrLf
        End If
    Loop While Finished = False

Note wel dat we hier gebruik maken van een string, en dat je daar niet oneindig veel tekens in kan opslagen hoeveel weet ik nietvanbuiten, zal wel veel zijn, maar 10.000 combinatie zal hij wss al niet kunne opslagen. Als je toch zoveel combinaties hebt, zou ik tijdens het uitvoeren van de code, om de 4000 combinaties ofzo uw output dumpen in een text bestand.
 
Laatst bewerkt:
Dat ziet er idd strak uit.
Omdat ik in eerste instantie de volledige 16 loops liet doorlopen en hij na ongeveer 1 uur (vermoedelijk) niets meer deed, heb ik een check ingebakken die na iedere lus een regel wegschrijft in een bestand, zodoende kan ik volgen of hij is vast gelopen.

Mijn programma heeft inmiddels zijn werk gedaan, en heeft gewoon 1 uur gedraaid om alle 65 duizend combinaties weg te schrijven.

In ieder geval bedankt voor uw hulp
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan