Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wykluczenie wszelkich możliwych kombinacji dwóch lub większej ilości liczb z zakresu liczb
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Mam taką małą zagwostkę matematyczną. Mam zakres liczb od 2 do 20 i dwie lub więcej liczb których to muszę wykluczyć wszelkie kombinacje z tego zakresu. Wykombinowałem sobie że zacznę od lewej strony czyli od liczb 2 oraz 3 i przesunę 3 maksymalnie do prawej strony po czym to samo zrobię z liczbą 2. To nie będą jednak wszystkie wykluczenia, bo przecież nie będę mieć w wygenerowanej puli, liczb pośrednich, czyli np. 2-20:3,4. Idąc dalej wymyśliłem że można użyć drugiej iteracji i przesunąć liczby startowe ( 2 i 3 ) razem w prawą stronę. To też jest nie do końca dobre rozwiązanie bo jak wspomniałem wcześniej ilość liczb wykluczanych jest niewiadoma. Macie jakiś pomysł jak to rozwiązać?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Spawnm
post
Post #2





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




może tablica z liczbami do wywalenia w str_replace" title="Zobacz w manualu PHP" target="_manual ?

Ten post edytował Spawnm 18.04.2009, 11:55:19
Go to the top of the page
+Quote Post
starach
post
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Możesz jaśniej, bo nie za bardzo rozumiem.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Mam zakres liczb od 2 do 20 i dwie lub więcej liczb których to muszę wykluczyć wszelkie kombinacje z tego zakresu

Nic z tego nie rozumiem. Opisz to dokladniej i podaj kilka przykladow.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Spawnm
post
Post #5





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




$liczby=2383266;
$wywal=2;
$liczby=str_replace($wywal,'',$liczby);
wywali wszystkie 2 smile.gif
poczytaj manual

albo tak jak pisze dr_bonzo opisz lepiej problem tongue.gif

Ten post edytował Spawnm 18.04.2009, 12:08:33
Go to the top of the page
+Quote Post
starach
post
Post #6





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Ehh spawnm zupełnie nie o to chodzi.
  1. <?php
  2. $zasieg_start = 2;
  3. $zasieg_koniec = 7;
  4. // Liczby początkowe wszystkich kombinacji dwóch jakichokolwiek liczb należących do zakresu 2 do 7
  5. $do_wykluczenia = array(2, 3);
  6. // Przenieś do tempa w celu wykonania innej operacji mieszania
  7. $temp = $do_wykluczenia;
  8. for($j = count($do_wykluczenia) - 1; $j >= 0; $j--)
  9. {
  10.    for($i = $do_wykluczenia[$j]; $i < $zasieg_koniec; $i++)
  11.    {
  12.        echo "$zasieg_start-$zasieg_koniec:".implode(',', $do_wykluczenia)." <br />";
  13.        $do_wykluczenia[$j]++;
  14.    }
  15. }
  16. echo '<hr>';
  17. for($i = end($temp); $i < $zasieg_koniec - 1; $i++)
  18. {
  19.    foreach($temp as $index => $wykluczenie) { $temp[$index]++; }
  20.    echo "$zasieg_start-$zasieg_koniec:".implode(',', $temp)." <br />";
  21. }
  22. ?>

Output:
Kod
2-7:2,3
2-7:2,4
2-7:2,5
2-7:2,6
2-7:2,7
2-7:3,7
2-7:4,7
2-7:5,7
2-7:6,7

2-7:3,4
2-7:4,5
2-7:5,6

Teraz pojawia się tylko pytanie co zrobić jeśli będzie większa ilość liczb.
Cytat
To też jest nie do końca dobre rozwiązanie bo jak wspomniałem wcześniej ilość liczb wykluczanych jest niewiadoma. Macie jakiś pomysł jak to rozwiązać?

edit>
Aha jeszcze sobie zdałem sprawę z tego że to nie są wszystkie możliwe wykluczenia. np. 2-7:3,5 / 2-7:3,6 / 2-7:3,7 ... :|

Ten post edytował orglee 18.04.2009, 12:34:57
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 Aktualny czas: 20.08.2025 - 15:44