![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 7.02.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie,
Siedzę od kilku godzin na pewnym skryptem, ale bez skutecznie więc postanowiłem poprosić o pomoc ekspertów. Chciałbym napisać funkcję która zwróci mi wszystkie możliwe kombinacje rozłożenia X osób w Y grupach. Funkcja musiałaby być uniwersalna i obsługiwać dowolne wartości X i Y. Na przykład: 3 osoby można rozłożyć w 2 grupach na 8 sposobów: 0, 123 (0 osób w pierwszej grupie, osoby: 1, 2 i 3 w drugiej grupie) 1,23 (Osoba: 1 w pierwszej grupie, osoby 2 i 3 w drugiej grupie) 2,13 3,12 12,3 13,2 23,1 123,0 (...) Kodu właśnie nie mam jeszcze bo nie wiem jak się za to zabrać. Myślałem coś o rekurencji, ale nie mam pojęcia jak zacząć. Nie proszę o gotowe rozwiązanie, tylko o jakieś naprowadzenie jak to zrobić. Wszystkich kombinacji jest: pow(Y, X) czyli Y do potęgi X. Ten post edytował Kshyhoo 7.02.2014, 20:40:25
Powód edycji: [Kshyhoo]: to Forum nie stosuje takich metod
|
|
|
![]()
Post
#2
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Pokaż swój kod, takie panują tu zasady. Dodaj też tagi do tematu.
Nie dopisuj się do posta, tylko użyj opcji "odpowiedz". Skąd bierzesz dane? Formularz, plik, baza danych? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 7.02.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dane pochodzą z wcześniejszych obliczeń. Dokładnie problem dotyczy tego że:
Mam X hurtowni (np. 2) i Y towarów do kupienia (np. 3) no i muszę obliczyć gdzie najbardziej opłaca mi się zrobić zakupy. W jakiej hurtowni muszę kupić jaki towar. Np. kup z hurtowni A towar 1 i 2, a w hurtowni B towar 3. Znam liczbę hurtowni, np.: $wholesalesCounter = 2; i ID produktów: $products = array(1, 2); No i w tym przypadku funkcja powinna zwrócić: 0 # 1 i 2 1 # 2 2 # 1 1 i 2 # 0 Ten post edytował radiopraca 7.02.2014, 20:51:24 |
|
|
![]()
Post
#4
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Lukaj i dostosuj do swoich potrzeb.
Powód edycji: [Kshyhoo]:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 7.02.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki kolego, ale próbuje to przerabiać i nic.
Wykonałem ten Twój kodzik na serwerze i zwraca on: a,a a,b b,a b,b czyli kombinacje każdy z każdym z powtórzeniami. W mojej sytuacji nie może być powtórzeń a dla "a,b,c" musi zwrócić również coś takiego: abc,- ab,c ac,b a,bc itd. |
|
|
![]()
Post
#6
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
A tak:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 7.02.2014 Ostrzeżenie: (0%) ![]() ![]() |
Też nie do konca.
Dla: kombinacje("abc", 2); Zwraca: ILE: 3 ab ac bc Poprawny skrypt powinien zawsze w każdym wierszu wyniku, zwracać (a,b i c) w róznych kombinacjach. Zawsze chcemy kupić wszystkie (3) produkty a nie tylko 2 (a i b czy b i c). |
|
|
![]()
Post
#8
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
No bo zwraca kombinacje 2 danych wejściowych. Powinieneś użyć kombinacje("abc", 3), czyli 3 kombinacje 3 danych (3 artykuły z 3 hurtowni) (IMG:style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 7.02.2014 Ostrzeżenie: (0%) ![]() ![]() |
Przerobiłem i działa. Efekt: Kombinacje abc
Dla 'ab' zrobiłem array_diff(abc, ab) i zwrciło to co pozostało i działa. Jeszcze trochę doszlifuję i dam skrypcik. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:20 |