Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kombinacje
nikestylex7
post
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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

Ten post edytował nikestylex7 9.10.2012, 22:24:37
Go to the top of the page
+Quote Post
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Najzwyklejsze N pętli zagnieżdżonych coraz głębiej (patrz: matrioszki).
Go to the top of the page
+Quote Post
nikestylex7
post
Post #3





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


a mógłby mi ktoś podać jakiś przykład ? Bardzo bym był wdzięczny...
Go to the top of the page
+Quote Post
styryl
post
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

Ostrzeżenie: (0%)
-----


  1. //deklaracja elementów tablicy
  2. $tab1[0] = 1;
  3. $tab1[1] = 2;
  4. $tab1[2] = 3;
  5. $tab1[3] = 4;
  6. $ilosc=count($tab1);
  7. //przepisanie tablicy do tablicy pomocniczej
  8. $tab2 = $tab1;
  9. for($i=0;$i<$ilosc;$i++)
  10. {
  11. $j=$i+1;
  12. while($j<$ilosc)
  13. {
  14. //wypisanie kombinacji
  15. echo $tab1[$i].','.$tab2[$j].'<br/>';
  16. $j++;
  17. }
  18. }


http://www.drzewo-wiedzy.pl/?page=artykul&...C3%B3w_tablicy_?

A tutaj twój przykład:

  1. $liczby = array( '1','2','3' );
  2. $kombinacje = array();
  3.  
  4. for( $a = 0; $a < count( $liczby ); $a++ ) {
  5. for( $b = 0; $b < count( $liczby ); $b++ ) {
  6. for( $c = 0; $c < count( $liczby ); $c++ ) {
  7. for( $d = 0; $d < count( $liczby ); $d++ ){
  8. $kombinacje[] = $liczby[$a]. $liczby[$b]. $liczby[$c]. $liczby[$d];
  9. }
  10. }
  11. }
  12. }
  13.  
  14. echo '<pre>';
  15. print_r( $kombinacje );
  16. echo '</pre>';


Ten post edytował styryl 11.10.2012, 08:28:32
Go to the top of the page
+Quote Post
nikestylex7
post
Post #5





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Bardzo dziękuje. Bardzo mi pomogłeś
Go to the top of the page
+Quote Post
cudny
post
Post #6





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Ale to drzewko aż się prosi o rekurencję !
Go to the top of the page
+Quote Post
artuross
post
Post #7





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nikestylex7
post
Post #8





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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 ?
Go to the top of the page
+Quote Post
CuteOne
post
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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() (IMG:style_emoticons/default/sleep.gif)

Ten post edytował CuteOne 11.10.2012, 18:28:14
Go to the top of the page
+Quote Post
nikestylex7
post
Post #10





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
artuross
post
Post #11





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/tongue.gif) przecież odpowiedziałem na pytanie zanim jeszcze ono się pojawiło (IMG:style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
nikestylex7
post
Post #12





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
darko
post
Post #13





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
nikestylex7
post
Post #14





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
ShadowD
post
Post #15





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nikestylex7
post
Post #16





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Ok postaram się jakoś to ogarnąć
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 20:16