Added doctest and more explanation about Dijkstra execution. (#1014)

* Added doctest and more explanation about Dijkstra execution.

* tests were not passing with python2 due to missing __init__.py file at number_theory folder

* Removed the dot at the beginning of the imported modules names because 'python3 -m doctest -v data_structures/hashing/*.py' and 'python3 -m doctest -v data_structures/stacks/*.py' were failing not finding hash_table.py and stack.py modules.

* Moved global code to main scope and added doctest for project euler problems 1 to 14.

* Added test case for negative input.

* Changed N variable to do not use end of line scape because in case there is a space after it the script will break making it much more error prone.

* Added problems description and doctests to the ones that were missing. Limited line length to 79 and executed python black over all scripts.

* Changed the way files are loaded to support pytest call.

* Added __init__.py to problems to make them modules and allow pytest execution.

* Added project_euler folder to test units execution

* Changed 'os.path.split(os.path.realpath(__file__))' to 'os.path.dirname()'
This commit is contained in:
Bruno Simas Hadlich
2019-07-16 20:09:53 -03:00
committed by cclauss
parent 2fb3beeaf1
commit 267b5eff40
100 changed files with 2621 additions and 1438 deletions

View File

@ -1,10 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import print_function
try:
raw_input # Python 2
except NameError:
raw_input = input # Python 3
'''
"""
Coin sums
Problem 31
In England the currency is made up of pound, £, and pence, p, and there are
@ -15,7 +10,13 @@ It is possible to make £2 in the following way:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
How many different ways can £2 be made using any number of coins?
'''
"""
from __future__ import print_function
try:
raw_input # Python 2
except NameError:
raw_input = input # Python 3
def one_pence():
@ -50,4 +51,21 @@ def two_pound(x):
return 0 if x < 0 else two_pound(x - 200) + one_pound(x)
print(two_pound(200))
def solution(n):
"""Returns the number of different ways can £n be made using any number of
coins?
>>> solution(500)
6295434
>>> solution(200)
73682
>>> solution(50)
451
>>> solution(10)
11
"""
return two_pound(n)
if __name__ == "__main__":
print(solution(int(str(input()).strip())))