Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> z dzięsiętnej na binarną alternatywnie, graficzna interp. ciągu Fibonacciego
onlyX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

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


Staram się zrobić graficzną interpretację dwójkową ciagu Fibbonacciego, tak jak jest pokazane na tej stronie: http://pl.wikipedia.org/wiki/Ci%C4%85g_Fib...a_dw.C3.B3jkowa

Tylko natrafiłem na dosyc powazny problem. php ma kłopot z konwersją dużych liczb dziesiętnych na binarne. Efekt: http://www.understyle.linuxpl.com/php_test/fibonacci.php

Cały kod wygląda tak:
  1. <?php
  2. $fib = array();
  3.  
  4. for($i=0; $i<150; $i++) {
  5. if ($i==0) {
  6. $fib[]=0;
  7. }
  8. else if ($i==1) {
  9. $fib[]=1;
  10. }
  11. else {
  12. $fib[]=bcadd($fib[$i-1], $fib[$i-2]);
  13. }
  14. }
  15.  
  16. echo '<p style=\"width:150px; text-align:right; line-height:1px\">';
  17.  
  18. for($i=0; $i<count($fib); $i++) {
  19. $txt = base_convert($fib[$i],10,2);
  20. // $txt = decbin($fib[$i]);
  21. $txt = str_replace(&#092;"0\", '<img src=\"w.gif\" />', $txt);
  22. $txt = str_replace(&#092;"1\", '<img src=\"b.gif\" />', $txt);
  23. echo $txt .&#092;"<br />\";
  24. }
  25. echo &#092;"</p>\";
  26.  
  27. ?>


Czy istnieje jakaś inna metoda zamiany liczb dzięsiętnych na binarne?

Próbowałem zamiast:
Kod
base_convert(int,10,2)

użyć:
Kod
decbin(int)

ale ta funkcja okazała się jeszcze słabsza.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
onlyX
post
Post #2





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

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


Wiem jakiej biblioteki trzeba użyć. Ale nie znam się na jej obsłudze.
Wymyśliłem, żeby zamiast GIFów uzyć tekstu z odpowiednim stylem:
  1. <?php
  2. // (...)
  3. echo '<pre style=\"text-align:right; font-weight:bold; line-height:1px; font-size:1px\">';
  4. for($i=0; $i<count($fib); $i++) {
  5. $txt = dec2bin($fib[$i]); //konwersja z dziesietnej na binarna
  6. $txt = str_replace(&#092;"0\", ' ', $txt); //w zastepstwie bialego GIFa
  7. $txt = str_replace(&#092;"1\", '8', $txt); // //w zastepstwie czarnego GIFa
  8. //$txt = str_replace(\"0\", '<img src=\"w.gif\" />', $txt);
  9. //$txt = str_replace(\"1\", '<img src=\"b.gif\" />', $txt);
  10. echo $txt .&#092;"<br />\";
  11. }
  12. echo &#092;"</pre>\";
  13.  
  14. ?>

Różnica jest prawie niezauważalna, a skrypt mocno zyskuje na wydajności.
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 21:33