Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Instrukcja warunkowa spowalniajaca wykonywanie scryptu
malpiszon
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2012

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


Witam!

Odrazu wkleje kod:

  1. for($i = 0; $i < 435; $i++)
  2. {
  3. $a = $i;
  4. $liczba[$i] = rand(0, 29);
  5. $liczba2[$i] = rand(0, 29);
  6.  
  7. if($liczba[$i] == $liczba2[$i])
  8. $i--;
  9.  
  10. else
  11. {
  12. for($j = 0; $j < $i; $j++)
  13. {
  14. if(($liczba[$j] == $liczba[$i] && $liczba2[$j] == $liczba2[$i]) || ($liczba[$j] == $liczba2[$i] && $liczba2[$j] == $liczba[$i]))
  15. {
  16. $i--;
  17. break;
  18. }
  19. }
  20.  
  21. if($a == $i) // ta instrukcja spowalnia wykonywanie scryptu
  22. {
  23. if($i % 15)
  24. {
  25. if($b != 0)
  26. {
  27. for($k = $i - $b; $k < $i; $k++)
  28. {
  29. if($liczba[$i] == $liczba[$k] || $liczba2[$i] == $liczba2[$k] || $liczba[$i] == $liczba2[$k] || $liczba2[$i] == $liczba[$k])
  30. {
  31. $i--;
  32. $b--;
  33. break;
  34. }
  35. }
  36. }
  37. }
  38. else
  39. {
  40. $b = 0;
  41. }
  42.  
  43. if($a == $i)
  44. {
  45. echo $i.". ".$liczba[$i]." - ".$liczba2[$i]."<br>";
  46. }
  47.  
  48. $b++;
  49. }
  50. }
  51. }


Moj problem polega na tym ze instrukcja warunkowa zaznaczona w tym tekscie komentarzem spowalnia wykonywanie scryptu lecz musi ona byc zeby scrypt sie poprawnie wykonal. Prosil bym was zebyscie znalezli jakis bład (o ile jakis jest) lub powiedzieli mi jak zrobic to zeby nie spowalnialo wykonywana scryptu.
Z góry dziekuje smile.gif;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Fajnie jakbyś pisał po polsku lub po angielsku wink.gif tj. skrypt wink.gif ew. script (w tej wersji pisz wszystko po ang)

Napisz co ten kod ma robić w założeniu i skąd wiesz, że akurat w tym miejscu zwalnia


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
malpiszon
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2012

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


Powiem inaczej jak go przekształcic zeby działał szybko?

Ten algorytm losuje 2 liczby na jedno obejscie fora i te liczby nigdy nie moga byc takie same (tzn. kazda z kazda musza byc) i jedna liczba moze wystapic raz na 15 powtórzen petli.
Go to the top of the page
+Quote Post
peter13135
post
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Myślisz, że informatołki są takie pracowite, że będą analizować Twój kod ? tongue.gif
Powiedz konkretnie jaki skrypt potrzebujesz, to może ktoś Ci napisze optymalniejszą wersję.


--------------------
:)
Go to the top of the page
+Quote Post
malpiszon
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2012

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


Jezeli sie troche na tym znasz to raczej bedziesz wiedzial po przeczytaniu tego scryptu o co w nim chodzi..
A jezeli zaawansowany to bedziesz wiedzial gdzie jest bład.. tylko jestes leniem i nie chce cie sie nawet tego przeczytac.
A po za tym nie musisz wymyslac nowego tylko poprostu napisz krotko co zrobilem zle ze scrypt sie laguje.
Go to the top of the page
+Quote Post
d3ut3r
post
Post #6





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


krótko mówiąc masz nieoptymalny algorytm. Sorry ale sam chciałeś smile.gif

Cytat
tylko poprostu napisz krotko co zrobilem zle ze scrypt sie laguje.


a teraz poważniej napisz normalnie co chcesz osiągnąć to ktoś Ci coś poradzi. Nie wymagaj od ludzi żeby analizowali twój kod.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
malpiszon
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2012

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


Algorytm ma losowac 2 liczby (liczba1 i liczba2) te dwie liczby nie moga byc takie same nigdy czyli kazda z kazda ma "byc". Jeszcze jakakolwiek liczba nie moze sie powtózyc w "15-sce" czyli od 0 do 14 od 14 do 29 (w tych 15 miejscach moze byc tylko raz)
Go to the top of the page
+Quote Post
shinuexx
post
Post #8





Grupa: Zarejestrowani
Postów: 78
Pomógł: 9
Dołączył: 2.02.2011
Skąd: undefined

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


Nie mogłem się w twoim algorytmie połapać. Wydukałem coś takiego. Generuje się bardzo szybko:
  1. $liczba = array();
  2. $liczba2 = array();
  3.  
  4. $max = 30;
  5. for( $x = 0; $x < $max; $x++){
  6. $pos = floor($x/15);
  7. do{
  8. $rand = rand(0,29);
  9. }
  10. while(in_array($rand,array_slice($liczba,$pos*15,15)) || in_array($rand,array_slice($liczba2,$pos*15,15)));
  11. $liczba[] = $rand;
  12. do{
  13. $rand2 = rand(0,29);
  14. }
  15. while(in_array($rand2,array_slice($liczba,$pos*15,15)) || in_array($rand2,array_slice($liczba2,$pos*15,15)));
  16. $liczba2[] = $rand2;
  17.  
  18. echo $x.". ".$liczba[$x]." - ".$liczba2[$x].PHP_EOL;
  19. }


Generowane w około : 0.0238 [s]
O to ci chodziło??
Go to the top of the page
+Quote Post
malpiszon
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2012

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


Mozna powiedziec ze prawie o to smile.gif pare rzeczy tylko trzeba poprawic zeby bylo to co chce.
Dzieki ci wielki!
Go to the top of the page
+Quote Post
gothye
post
Post #10





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


usleep

// wait for 2 seconds
usleep(2000000);


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
malpiszon
post
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2012

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


Cytat(shinuexx @ 14.03.2012, 20:17:11 ) *
Nie mogłem się w twoim algorytmie połapać. Wydukałem coś takiego. Generuje się bardzo szybko:
  1. $liczba = array();
  2. $liczba2 = array();
  3.  
  4. $max = 30;
  5. for( $x = 0; $x < $max; $x++){
  6. $pos = floor($x/15);
  7. do{
  8. $rand = rand(0,29);
  9. }
  10. while(in_array($rand,array_slice($liczba,$pos*15,15)) || in_array($rand,array_slice($liczba2,$pos*15,15)));
  11. $liczba[] = $rand;
  12. do{
  13. $rand2 = rand(0,29);
  14. }
  15. while(in_array($rand2,array_slice($liczba,$pos*15,15)) || in_array($rand2,array_slice($liczba2,$pos*15,15)));
  16. $liczba2[] = $rand2;
  17.  
  18. echo $x.". ".$liczba[$x]." - ".$liczba2[$x].PHP_EOL;
  19. }


Generowane w około : 0.0238 [s]
O to ci chodziło??


Borykam sie z jeszcze jednym problemem bo jezeli chce aby kazda liczba była w parze z inną liczba (bo w tym scrypcie powtarzaja sie pary) to znowu mi zamula algorytm. Poczytalem troche na necie jeszcze o tych wszystkich funkcjach do losowania i tablic i nie moge za nic wymyslec jak to zrobic. Moze tobie cos do głowy przyjdzie

Ten post edytował malpiszon 15.03.2012, 14:40:28
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 - 17:44