Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jaka funkcja lub algorytm.
woxala123
post 14.08.2017, 12:47:14
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Witam.
Mam taki oto np- układ liczb 123. I chcę zrobić tak by pokazywano mi że powstają z tego 3 parki 1,2- 2,3-1,3 i zlicza że są 3 pary.
Jaką funkcję zastosować lub jakiś podobny przykład.
POZDRAWIAM
Go to the top of the page
+Quote Post
trueblue
post 14.08.2017, 13:25:20
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Kombinacje bez powtórzeń.


--------------------
Go to the top of the page
+Quote Post
woxala123
post 14.08.2017, 18:16:42
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Zrobiłem coś takiego teraz
  1. $words = array('21', '24', '31');
  2.  
  3. $num = count($words);
  4.  
  5.  
  6.  
  7. //The total number of possible combinations
  8.  
  9. $total = pow(2, $num);
  10.  
  11.  
  12.  
  13. //Loop through each possible combination
  14.  
  15. for ($i = 0; $i < $total; $i++) {
  16.  
  17. //For each combination check if each bit is set
  18. for ($j = 0; $j < $num; $j++) {
  19.  
  20. //Is bit $j set in $i?
  21.  
  22. if (pow(2, $j) & $i) echo $words[$j] . ' ';
  23.  
  24. }

i wynik tego działania jest taki
21
24
21 24
31
21 31
24 31
21 24 31
Tylko chcę by pokazały mi się same parki. Nie wiem które działanie za to odpowiada.
Go to the top of the page
+Quote Post
trueblue
post 14.08.2017, 19:12:00
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


  1. $words = array('21', '24', '31');
  2.  
  3. for($k = 0; $k<=2; $k++) {
  4. for ($n = $k; $n < count($words); $n++) {
  5. if ($words[$k] != $words[$n] ) {
  6. echo $words[$k] . "," . $words[$n] . " ";
  7. }
  8. }
  9. }


--------------------
Go to the top of the page
+Quote Post
woxala123
post 14.08.2017, 20:24:33
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Fajnie że pomogłeś a czy jeszcze to idzie rozpisac np: na trójki i jak policzyć liczbę kombinacji razem?
Go to the top of the page
+Quote Post
Spawnm
post 14.08.2017, 20:43:55
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Liczbę kombinacji policzysz implementując wzór: https://pl.wikipedia.org/wiki/Kombinacja_be...%C3%B3rze%C5%84

Ewentualnie inkrementuj w iteracji
Go to the top of the page
+Quote Post
woxala123
post 15.08.2017, 13:23:03
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


okey zrobiłem takie rozwiązanie
  1.  
  2. $numbers = array(1,2,45,65,67,8);
  3.  
  4.  
  5.  
  6. $solutions = array();
  7.  
  8. function generate($k, $solution)
  9. {
  10. global $solutions, $numbers;
  11. if (count($solution) == 4) {
  12. $solutions[] = $solution;
  13. }
  14. if (count($solution) < 4)
  15. for ($i = $k; $i < count($numbers); $i++) {
  16. $solution[] = $numbers[$i];
  17. generate($i + 1, $solution);
  18. array_pop($solution);
  19. }
  20.  
  21. }
  22.  
  23. generate(0, array());
  24.  
  25. echo "<P>Razem kombinacji:" . count($solutions) . "</p>";
  26. echo "<p> rozwiązania: </p>";
  27. foreach ($solutions as $sol) {
  28. echo "<p> {$sol[0]} {$sol[1]} {$sol[2]} {$sol[3]} </p>";
  29. }
  30.  


Tylko teraz chcę dane liczb wprowadzać przez formularz i zrobiłem coś takiego
  1. <form action="mor.php" method="POST">
  2.  
  3.  
  4. <div>
  5. <label for="numbers">Wprowadź liczby</label>
  6. <input id="numbers" name="numbers" class="text" type="text" />
  7. </div>
  8.  
  9. <div>
  10. <input class="submit" type="submit" value="Wyślij" />
  11. </div>
  12.  
  13. </form>
  14.  

  1.  
  2. $numbers = $_POST['array()'];
  3.  
  4.  
  5. $solutions = array();
  6.  
  7. function generate($k, $solution)
  8. {
  9. global $solutions, $numbers;
  10. if (count($solution) == 4) {
  11. $solutions[] = $solution;
  12. }
  13. if (count($solution) < 4)
  14. for ($i = $k; $i < count($numbers); $i++) {
  15. $solution[] = $numbers[$i];
  16. generate($i + 1, $solution);
  17. array_pop($solution);
  18. }
  19.  
  20. }
  21.  
  22. generate(0, array());
  23.  
  24. echo "<P>Total number of combinations:" . count($solutions) . "</p>";
  25. echo "<p> solutions: </p>";
  26. foreach ($solutions as $sol) {
  27. echo "<p> {$sol[0]} {$sol[1]} {$sol[2]} {$sol[3]} </p>";
  28. }
  29.  

No i niestety nic nie wychodzi bo jak wprowadzam wartości to nic nie oblicza kombinacji. Gdzie robię błąd.?
Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 15.08.2017, 13:39:07
Post #8





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Naprawde po takim czasie z php jeszcze nie ogarniasz formularzy?
Co to niby ma byc:
$numbers = $_POST['array()'];
questionmark.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
woxala123
post 15.08.2017, 14:23:13
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Wiem że jest to gó...o. Tylko nie wiem jak ogarnąć ten formularz.

To gdzie zacząć poprawiać?
Proszę o pomoc
Go to the top of the page
+Quote Post
nospor
post 15.08.2017, 14:44:46
Post #10





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Nie
$numbers = $_POST['array()'];

a:
$numbers = $_POST['numbers'];

Toz twoje pole w formularzu nazywa sie NUMBERS a nie ARRAY() no nie?

edit: a dokladniej
$numbers = explode(',', $_POST['numbers']);
Przy zalozeniu ze w input wpiszesz liczby oddzielone przecinkiem


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
woxala123
post 15.08.2017, 14:49:43
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


  1. <form action="mor.php" method="POST">
  2. <fieldset>
  3.  
  4.  
  5. <div>
  6. <label for="numbers">Wprowadź liczby</label>
  7. <input id="numbers" name="numbers" class="text" type="text" />
  8. </div>
  9.  
  10. <div>
  11. <input class="submit" type="submit" value="Wyślij" />
  12. </div>
  13.  
  14. </fieldset>
  15. </form>
  16. <?php
  17. $numbers = explode(',', $_POST['numbers']);
  18.  
  19. $numbers=array();
  20.  
  21. $solutions = array();
  22.  
  23. function generate($k, $solution)
  24. {
  25. global $solutions, $numbers;
  26. if (count($solution) == 4) {
  27. $solutions[] = $solution;
  28. }
  29. if (count($solution) < 4)
  30. for ($i = $k; $i < count($numbers); $i++) {
  31. $solution[] = $numbers[$i];
  32. generate($i + 1, $solution);
  33. array_pop($solution);
  34. }
  35.  
  36. }
  37.  
  38. generate(0, array());
  39.  
  40. echo "<P>Total number of combinations:" . count($solutions) . "</p>";
  41. echo "<p> solutions: </p>";
  42. foreach ($solutions as $sol) {
  43. echo "<p> {$sol[0]} {$sol[1]} {$sol[2]} {$sol[3]} </p>";
  44. }
  45.  
  46.  
  47. ?>
  48.  

I nie oblicza kombinacji mimo że np: wprowadzam w pole input 21,24,45,56,67,
Okey dziala wywaliłem z kodu zmienną members=array().
Dzięki nospor no teraz to już tylko Tobie piwo postawić

Ten post edytował woxala123 15.08.2017, 14:52:07
Go to the top of the page
+Quote Post
nospor
post 15.08.2017, 14:51:03
Post #12





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Wez wlacz myslenie...

$numbers = explode(',', $_POST['numbers']);
$numbers=array();

Najpierw pobierasz dane z forma a zaraz potem nadpisujesz je pusta tablica... Gdzie tu logika?!


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 07:31