Advertisement
furas

Fibonacci i Binet - czas i test

Dec 10th, 2014
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3.  
  4. '''
  5. Ciąg Fibonacciego i wzór Bineta
  6.  
  7. Wikipedia:
  8.  opis:
  9.    http://pl.wikipedia.org/wiki/Ciąg_Fibonacciego
  10.    http://pl.wikipedia.org/wiki/Ciąg_Fibonacciego#Wzór_Bineta
  11.  wzór:
  12.    http://upload.wikimedia.org/math/5/7/e/57eaa418ea8df41ac1473eb5430ca6c9.png
  13. '''
  14.  
  15. import time
  16.  
  17. #-----------------------------------------
  18.  
  19. def fib(n):
  20.  
  21.     a, b = 0, 1
  22.  
  23.     for i in range(n):
  24.         a, b = b, a+b
  25.  
  26.     return a
  27.  
  28. #-----------------------------------------
  29.  
  30. def binet(n):
  31.  
  32.     # TODO: obliczenia wedlug podanego wzoru
  33.     print 'TODO: obliczenia wedlug podanego wzoru'
  34.  
  35.     wynik = 0
  36.  
  37.     return wynik
  38.  
  39. #-----------------------------------------
  40.  
  41. def czas_fib(n):
  42.  
  43.     start = time.time()
  44.     fib(n)
  45.     stop = time.time()
  46.  
  47.     print "czas wykonywania dla fib(%d): %f" % (n, stop - start)
  48.  
  49. #-----------------------------------------
  50.  
  51. def czas_binet(n):
  52.  
  53.     start = time.time()
  54.     binet(n)
  55.     stop = time.time()
  56.  
  57.     print "czas wykonywania dla binet(%d): %f" % (n, stop - start)
  58.  
  59. #-----------------------------------------
  60.  
  61. def czas():
  62.    
  63.     dane = [0, 1, 10, 15, 1000, 10000]
  64.  
  65.     for n in dane:
  66.         czas_fib(n)
  67.         czas_binet(n)
  68.         print # linia odstepu miedzy probami
  69.        
  70. #-----------------------------------------
  71.  
  72. def test_fib(n, oczekiwany_wynik):
  73.  
  74.     print "test fib(%d) == %d :" % (n, oczekiwany_wynik),
  75.  
  76.     wynik = fib(n)
  77.  
  78.     if wynik == oczekiwany_wynik:
  79.         print 'OK'
  80.     else:
  81.         print '!!', wynik
  82.  
  83. #-----------------------------------------
  84.  
  85. def test_binet(n, oczekiwany_wynik):
  86.  
  87.     print "test binet(%d) == %d :" % (n, oczekiwany_wynik),
  88.  
  89.     wynik = binet(n)
  90.  
  91.     if wynik == oczekiwany_wynik:
  92.         print 'OK'
  93.     else:
  94.         print '!!', wynik
  95.  
  96. #-----------------------------------------
  97.  
  98. def test():
  99.    
  100.     dane = [ (0, 0), (1, 1), (2, 1), (3, 2), (4, 3), (10, 55), (15, 610) ]
  101.    
  102.     for n, oczekiwany in dane:
  103.         test_fib(n, oczekiwany)
  104.  
  105.     print # linia odstepu miedzy probami
  106.    
  107.     for n, oczekiwany in dane:
  108.         test_binet(n, oczekiwany)
  109.  
  110.     print # linia odstepu miedzy probami
  111.    
  112. #-----------------------------------------
  113.  
  114. test()
  115. czas()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement