Skip to content

Commit

Permalink
Fixes for issue "Fix the LGTM issues TheAlgorithms#1024" (TheAlgorith…
Browse files Browse the repository at this point in the history
…ms#1034)

* 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()'

* Added Burrows-Wheeler transform algorithm.

* Added changes suggested by cclauss

* Fixes for issue 'Fix the LGTM issues TheAlgorithms#1024'.

* Added doctest for different parameter types and negative values.

* Fixed doctest issue added at last commit.
  • Loading branch information
brunohadlich authored and cclauss committed Jul 18, 2019
1 parent 9a55f2b commit f438440
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 10 deletions.
26 changes: 25 additions & 1 deletion project_euler/problem_02/sol4.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"""
from __future__ import print_function
import math
from decimal import *
from decimal import Decimal, getcontext

try:
raw_input # Python 2
Expand All @@ -33,7 +33,31 @@ def solution(n):
0
>>> solution(34)
44
>>> solution(3.4)
2
>>> solution(0)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution(-17)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution([])
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
>>> solution("asd")
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
"""
try:
n = int(n)
except (TypeError, ValueError) as e:
raise TypeError("Parameter n must be int or passive of cast to int.")
if n <= 0:
raise ValueError("Parameter n must be greater or equal to one.")
getcontext().prec = 100
phi = (Decimal(5) ** Decimal(0.5) + 1) / Decimal(2)

Expand Down
27 changes: 25 additions & 2 deletions project_euler/problem_03/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,38 @@ def isprime(no):

def solution(n):
"""Returns the largest prime factor of a given number n.
>>> solution(13195)
29
>>> solution(10)
5
>>> solution(17)
17
>>> solution(3.4)
3
>>> solution(0)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution(-17)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution([])
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
>>> solution("asd")
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
"""
try:
n = int(n)
except (TypeError, ValueError) as e:
raise TypeError("Parameter n must be int or passive of cast to int.")
if n <= 0:
raise ValueError("Parameter n must be greater or equal to one.")
maxNumber = 0
if isprime(n):
return n
Expand All @@ -54,7 +78,6 @@ def solution(n):
elif isprime(i):
maxNumber = i
return maxNumber
return int(sum)


if __name__ == "__main__":
Expand Down
27 changes: 25 additions & 2 deletions project_euler/problem_03/sol2.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
e.g. for 10, largest prime factor = 5. For 17, largest prime factor = 17.
"""
from __future__ import print_function, division
import math

try:
raw_input # Python 2
Expand All @@ -16,14 +15,38 @@

def solution(n):
"""Returns the largest prime factor of a given number n.
>>> solution(13195)
29
>>> solution(10)
5
>>> solution(17)
17
>>> solution(3.4)
3
>>> solution(0)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution(-17)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution([])
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
>>> solution("asd")
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
"""
try:
n = int(n)
except (TypeError, ValueError) as e:
raise TypeError("Parameter n must be int or passive of cast to int.")
if n <= 0:
raise ValueError("Parameter n must be greater or equal to one.")
prime = 1
i = 2
while i * i <= n:
Expand Down
27 changes: 25 additions & 2 deletions project_euler/problem_05/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
def solution(n):
"""Returns the smallest positive number that is evenly divisible(divisible
with no remainder) by all of the numbers from 1 to n.
>>> solution(10)
2520
>>> solution(15)
Expand All @@ -26,7 +26,31 @@ def solution(n):
232792560
>>> solution(22)
232792560
>>> solution(3.4)
6
>>> solution(0)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution(-17)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution([])
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
>>> solution("asd")
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
"""
try:
n = int(n)
except (TypeError, ValueError) as e:
raise TypeError("Parameter n must be int or passive of cast to int.")
if n <= 0:
raise ValueError("Parameter n must be greater or equal to one.")
i = 0
while 1:
i += n * (n - 1)
Expand All @@ -39,7 +63,6 @@ def solution(n):
if i == 0:
i = 1
return i
break


if __name__ == "__main__":
Expand Down
24 changes: 24 additions & 0 deletions project_euler/problem_07/sol2.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,31 @@ def solution(n):
229
>>> solution(100)
541
>>> solution(3.4)
5
>>> solution(0)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution(-17)
Traceback (most recent call last):
...
ValueError: Parameter n must be greater or equal to one.
>>> solution([])
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
>>> solution("asd")
Traceback (most recent call last):
...
TypeError: Parameter n must be int or passive of cast to int.
"""
try:
n = int(n)
except (TypeError, ValueError) as e:
raise TypeError("Parameter n must be int or passive of cast to int.")
if n <= 0:
raise ValueError("Parameter n must be greater or equal to one.")
primes = []
num = 2
while len(primes) < n:
Expand Down
1 change: 0 additions & 1 deletion project_euler/problem_09/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ def solution():
if (a ** 2) + (b ** 2) == (c ** 2):
if (a + b + c) == 1000:
return a * b * c
break


if __name__ == "__main__":
Expand Down
2 changes: 1 addition & 1 deletion project_euler/problem_19/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,4 @@ def solution():


if __name__ == "__main__":
print(solution(171))
print(solution())
1 change: 0 additions & 1 deletion project_euler/problem_234/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ def solution(n):
semidivisible = []
for x in range(n):
l=[i for i in input().split()]
c1=0
c2=1
while(1):
if len(fib(l[0],l[1],c2))<int(l[2]):
Expand Down

0 comments on commit f438440

Please sign in to comment.