Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak wyeliminowac "inwersje" w kodzie (petli)?
AndyPSV
post
Post #1





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


Jak wyleminowac w najskuteczniejszy sposob powtorzenia w parach walut, czyli: 1 -> PLN / EUR, 2 -> EUR / PLN (to wyelimowac zeby tylko PLN / EUR zostalo)

KOD.

  1. $q_curr = q('SELECT * FROM `'.PRFX.'curr'.LG.'`'); if(n_r($q_curr) == 0) die(H.'no currencies'); while($_curr = f($q_curr)) $curr[] = $_curr;
  2.  
  3. # 2. CREATE ALL CURRENCY PAIR COMBINATIONS, BY DOING 2x FOREACH at the same VALUE; ELIMINATING INVERSIONS eg. PLN / EUR, EUR / PLN
  4. foreach($curr as $k => $val) {
  5. foreach($curr as $v) {
  6. if($curr[$k]['t'] <> $v['t']) {
  7. echo $curr[$k]['t'].' / '.$v['t'].'<br/>';
  8. }
  9. }
  10. }


  1. CREATE TABLE `x_curr_pl` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `t` char(3) NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=6 ;
  6.  
  7. --
  8. -- Dumping data for table `x_curr_pl`
  9. --
  10.  
  11. INSERT INTO `x_curr_pl` (`id`, `t`) VALUES
  12. (1, 'PLN'),
  13. (2, 'EUR'),
  14. (3, 'USD'),
  15. (4, 'GBP'),
  16. (5, 'CHF');



  1. PLN / EUR
  2. PLN / USD
  3. PLN / GBP
  4. PLN / CHF
  5. EUR / PLN
  6. EUR / USD
  7. EUR / GBP
  8. EUR / CHF
  9. USD / PLN
  10. USD / EUR
  11. USD / GBP
  12. USD / CHF
  13. GBP / PLN
  14. GBP / EUR
  15. GBP / USD
  16. GBP / CHF
  17. CHF / PLN
  18. CHF / EUR
  19. CHF / USD
  20. CHF / GBP


Ten post edytował AndyPSV 5.11.2010, 10:09:09
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


To co chcesz uzyskać to dwuelementowa wariacja bez powtórzeń.

W sieci jest pełno przykładów jak wybrać wszystkie elementy takiego czegoś.
Go to the top of the page
+Quote Post
AndyPSV
post
Post #3





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


Szukalem ale rozwiazania w postaci kodu php nie znalazlem.

Ja mam pare rozwiazan ale przy 100 * k permutacji skrypt bedzie sie zbyt dlugo wykonywal, a zalezy mi na tym aby to byl czas najkrotszy.
Moglbys podac rozwiazanie?
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. $tab = range(1,5); // tutaj twoja tablic walut
  2.  
  3. $length = count($tab);
  4. $l1 = 0;
  5. $l2 = 0;
  6.  
  7. for($l1 = 0; $l1<($length-1); $l1++)
  8. {
  9. for($l2 = $l1+1; $l2<$length; $l2++)
  10. {
  11. echo $tab[$l1].' / '.$tab[$l2].PHP_EOL;
  12. }
  13. }


Ten post edytował wookieb 5.11.2010, 15:57:24
Go to the top of the page
+Quote Post
AndyPSV
post
Post #5





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


dzieki stary pomogles bardzo!
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: 24.08.2025 - 00:01