nikestylex7
9.10.2012, 22:22:08
Witam mam problem i nie wiem jak się za niego zabrać chciałbym napisać skrypt który będzie mi wyswietlal kombinacje czyli mamy np 4 rzędy po 3 kombinacje czyli 1 2 3 i teraz chce aby skrypt podzielił kombinqcje na ronlzne nie powtarzające się czyli np pierwszy będzie miał 1 1 1 1 drugi 1 1 1 2 trzeci 1 1 1 3 aż wszystkie kombinacje czyli trzy do potęgi czwartej zoetana wydrukowane na ekranie. Przepraszam za pisownię ale pisze przez telefon. Proszę pytać jak są jakieś niejasnosci
abort
9.10.2012, 22:33:22
Najzwyklejsze N pętli zagnieżdżonych coraz głębiej (patrz: matrioszki).
nikestylex7
10.10.2012, 22:06:27
a mógłby mi ktoś podać jakiś przykład ? Bardzo bym był wdzięczny...
styryl
11.10.2012, 08:23:59
//deklaracja elementów tablicy
$tab1[0] = 1;
$tab1[1] = 2;
$tab1[2] = 3;
$tab1[3] = 4;
//przepisanie tablicy do tablicy pomocniczej
$tab2 = $tab1;
for($i=0;$i<$ilosc;$i++)
{
$j=$i+1;
while($j<$ilosc)
{
//wypisanie kombinacji
echo $tab1[$i].','.$tab2[$j].'<br/>'; $j++;
}
}
http://www.drzewo-wiedzy.pl/?page=artykul&...C3%B3w_tablicy_?
A tutaj twój przykład:
$liczby = array( '1','2','3' );
for( $a = 0; $a < count( $liczby ); $a++ ) { for( $b = 0; $b < count( $liczby ); $b++ ) { for( $c = 0; $c < count( $liczby ); $c++ ) { for( $d = 0; $d < count( $liczby ); $d++ ){ $kombinacje[] = $liczby[$a]. $liczby[$b]. $liczby[$c]. $liczby[$d];
}
}
}
}
nikestylex7
11.10.2012, 17:41:50
Bardzo dziękuje. Bardzo mi pomogłeś
cudny
11.10.2012, 17:56:49
Ale to drzewko aż się prosi o rekurencję !
artuross
11.10.2012, 18:05:30
Ja zastosowałbym eval(), @up - to skoro się prosi - utwórz funkcję i pokaż przykład, bo tak nie pomogłeś w żaden sposób
nikestylex7
11.10.2012, 18:22:16
Hmm a widzę że tutaj mam już wprowadzone 4 mecze i dopiero od nich po 3 kombinacje a jak osoba by chciała wprowadzić ilość spotkań np 7 a nie na stałe jakbym chciał za pomocą jquery dodawać nowe spotkanie ?
CuteOne
11.10.2012, 18:27:41
Cytat(nikestylex7 @ 11.10.2012, 19:22:16 )

Hmm a widzę że tutaj mam już wprowadzone 4 mecze i dopiero od nich po 3 kombinacje a jak osoba by chciała wprowadzić ilość spotkań np 7 a nie na stałe jakbym chciał za pomocą jquery dodawać nowe spotkanie ?
Eeee ale o czym ty pleciesz co ma jquery do n+1 zapętleń? Najlepiej opisz swój problem w miarę szczegółowo i zapodaj trochę kodu.
@arturos ty tym bardziej nie pokogłeś sugerując eval()
nikestylex7
11.10.2012, 18:29:58
No w przykładzie widać 4 zapętlenia a b c d bo prosiłem o 4 rzędy a jak osoba by chciała wprowadzić kilka rzędów więcej a potem mniej takie sobie dodawanie w jquery to jak zmienić podany przykład tak aby był uniwersalny czyli osoba podaje 20 rzędów to robi dwadziescia rzędów po 3 kombinacje.
artuross
11.10.2012, 18:36:52
To już napisałem - wykorzystujesz funkcję eval() - ale zanim ją wywołasz tworzysz kod, który ma być przez nią wykonany, w Twoim wypadku musisz zapętlić tworzenie pętli i następnie użyć eval().
@2xup, jak nie

przecież odpowiedziałem na pytanie zanim jeszcze ono się pojawiło
nikestylex7
11.10.2012, 20:21:23
jakiś przykłąd na którym mógłbym bazować?
ale funkcja eval spowalnia wywołanie skryptu bardzo długo trzeba czekać. ładowanie danych statycznie jest szybsze.
darko
11.10.2012, 22:35:38
Hmm, jeżeli mowa o kombinacjach bez powtórzeń, to jakoś nie widzę matematycznie takiej możliwości, żeby ze zbioru 3-element-owego wyciągać podzbiory o większej liczbie elementów niż zbiór pierwotny. Bo niby jak wyznaczyć liczbę kombinacji: n po k (wychodzi 3! / 3!(3-4)! - a co to jest silnia z liczby ujemnej i jak to wyliczyć?
nikestylex7
12.10.2012, 22:55:57
dalej nie rozumiecie. chce kombinacje bez powtórzeń. opisze wam to tak mam 4 rzędy dzieciaków i w każdym rzędzie siedzą 3 osoby ile unikalnych kombinacji mogę z tego wyciągnąć no to 3 * 3 * 3 * 3 = 81 kombinacji i teraz skrypt ma je rozpisać czy na razie do tego doszliśmy . tylko jak teraz zrobić jakbym chciał aby ilość rzędów i kombinacji była zmienna np do wyboru max 10 rzędów i od 2 do 3 kombinacji na rząd.
Czy przykład styryla dałoby radę przerobić tak aby był uniwersalny i gdy osoba wybierze sobie np 10 rzędów kombinacji to mu je obliczy i wyświetli. Chciałybym tutaj uniknąć powtarzania skryptu oraz dużej jego ilości.
ShadowD
12.10.2012, 23:21:44
Dało by tylko weź się i coś zaproponuj coś z kodu, bo tak to szukasz gotowca, a ten dział nie jest od dawania gotowców.
Jeśli chodzi o rady z eval - zapomnij o nich to jest jakaś kpina a nie rada, zamiast tego posłuchaj się ludzi mówiących o rekurencji - poczytaj co to takiego.
W funkcję opakuj 1 wywołanie pętli, a nią samą wywołuj właśnie tyle razy ile chcesz uzyskać rzędów, czyli kolejna pętla.
nikestylex7
12.10.2012, 23:43:39
Ok postaram się jakoś to ogarnąć
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.