![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 3 Dołączył: 22.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie. Chciałem stworzyć sobie klasę, która będzie mi generowała losową próbkę spośród zestawu liter.
Następnie dla tak wygenerowanej próbki znajduje wszystkie wariacje (permutacje) bez powtórzeń. Np dla wylosowanego zbioru licz: A,B,C ma zwrócić: A,B,C A,C,B B,A,C B,C,A C,A,B C,B,A ale dla zbioru: A,B,A ma już zwrócić A,A,B A,B,A B,A,A Poniżej znajdziecie klasę, która działa "prawie" dobrze. Niestety jak to bywa, prawie robi różnicę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zwraca mianowicie dla zestawu A,B,C A,B,C B,A,C C,A,B czyli zwraca pierwszą znalezioną kombinację, zaczynającą się kolejno od litery:A, następnie od B, a następnie od C Poniżej klasa i jej wywołanie: wywołanie
klasa
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 3 Dołączył: 22.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Dwa słowa komentarza do Twojego kodu
Zaznaczyłem pomógł, bo faktycznie kod działa, tak jak napisałem w założeniach w pierwszym poście, ale jest ale (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Rozjeżdża się całkowicie w przypadku kiedy w stringu są polskie litery - zwraca nieprawidłową ilość permutacji - trzeba używać funkcji mb_* . Ale z racji, że bez polskich literek działa, to zaznaczyłem iż pomogłeś - napracowałeś się i Ci się należy. Mi również udało się spłodzić metodę (kombinując to co znalazłem w sieci wraz z tym co napisałem) Zwracam sobie tablicę 2-wymiarową, gdzie pierwszy wymiar, to liczba liter. Funkcja ma dodatkowe opcje: zwracaj tylko permutacje o zadanej długości (od..do) spośród ciągu.
Ten post edytował Aztech 15.05.2008, 23:10:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 10:41 |