def test_large(self): for (n, last_digit) in [ (100, 5), (139, 1), # (91239, 6), # (613455, 0), # (999999, 6) ]: self.assertEqual(last_digit_of_fibonacci_number(n), last_digit)
def test_small(self): for n in range(20): self.assertEqual(last_digit_of_fibonacci_number_naive(n), last_digit_of_fibonacci_number(n))
def test_large(self): for (n, last_digit) in [(100, 5), (139, 1), (91239, 6), (35, 5), (36, 2)]: self.assertEqual(last_digit_of_fibonacci_number(n), last_digit)
def test_large(self): # for (n, last_digit) in [(100, 5), (139, 1), (91239, 6), type here]: for (n, last_digit) in [(100, 5), (139, 1), (91239, 6), (170, 5)]: self.assertEqual(last_digit_of_fibonacci_number(n), last_digit)
from test_helper import run_common_tests, failed, passed, check_tests_pass from last_digit_of_fibonacci_number import last_digit_of_fibonacci_number def fibonacci_number_last_digit_reference(n): assert 0 <= n <= 10**6 if n <= 1: return n previous, current = 0, 1 for _ in range(n - 1): previous, current = current, (previous + current) % 10 return current if __name__ == '__main__': run_common_tests() check_tests_pass("last_digit_of_fibonacci_number_unit_tests.py") all_tests_passed = True for m in [2, 3, 239, 240, 1000, 9999, 10**6]: if last_digit_of_fibonacci_number( m) != fibonacci_number_last_digit_reference(m): all_tests_passed = False failed("Wrong answer for n={}".format(m)) break if all_tests_passed: passed()