SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/usr/bin/env python | |
| 2 | - | |
| 2 | + | #-*- coding: utf-8 -*- |
| 3 | ||
| 4 | ''' | |
| 5 | Ciąg Fibonacciego i wzór Bineta | |
| 6 | ||
| 7 | Wikipedia: | |
| 8 | - | print fib(20) |
| 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 | - | start = time.time() |
| 12 | + | http://upload.wikimedia.org/math/5/7/e/57eaa418ea8df41ac1473eb5430ca6c9.png |
| 13 | ''' | |
| 14 | ||
| 15 | import time | |
| 16 | ||
| 17 | #----------------------------------------- | |
| 18 | - | print fib(20) |
| 18 | + | |
| 19 | - | stop = time.time() |
| 19 | + | |
| 20 | - | print "czas wykonywania:", stop - start |
| 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() |