![]() |
Jag sitter och sliter mitt hår för jag har en liten otrevlig bugg som jag bara inte kan se, trots att det är ett enkelt matematiskt problem jag försöker lösa. Möjligen är min hjärna för trött för att fungera just nu....
Jag försöker åstadkomma kombination av alla möjliga kombinationer av array med integer. När jag tar ut fakulteten av 3 dvs 3! ska det resultera i 6 olika möjliga permutationer (en permutation är ju en kombination där även ordningen har betydelse). Jag får ut 5 permutationer mot förväntade 6. Någon som har bättre koll på matematiken som kan se vad jag gör för fel. Jag har kollat på många webbsidor med detta matematiska problem så det finns många som har löst det. Men nu har jag försökt med min enkla lilla algoritm men kört i diket. Kod:
' Fil: Module1.bas Kod:
' Fil: Permutation.cls |
OT: Blir påmind om att jag har kursen "Diskret matematik" som ligger och släpar :(
|
Citat:
|
I permutera funktionen serjag två saker jag tycker verkar konstiga:
Kod:
intSlutPos = arr.Length - 2 |
Och nu lite pseudokod för att lösa problemet:
Kod:
print_array_permutation(array): |
Detta påminner mig om det mycket trevliga språket Haskell, för funktionell programmering. Det blir ofta väldigt kompakt syntax, men har man lärt sig hur det funkar är det otroligt smidigt t.ex. för den här typen av problem.
Kod:
perms :: Eq a => [a] -> [[a]] [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] |
Alla tider är GMT +2. Klockan är nu 11:20. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson