forked from TheAlgorithms/Python
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added doctest and more explanation about Dijkstra execution. (TheAlgo…
…rithms#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()'
- Loading branch information
1 parent
2fb3bee
commit 267b5ef
Showing
100 changed files
with
2,651 additions
and
1,468 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -26,6 +26,7 @@ script: | |
matrix | ||
networking_flow | ||
other | ||
project_euler | ||
searches | ||
sorts | ||
strings | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
from .hash_table import HashTable | ||
from hash_table import HashTable | ||
from collections import deque | ||
|
||
|
||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,34 @@ | ||
''' | ||
""" | ||
Problem Statement: | ||
If we list all the natural numbers below 10 that are multiples of 3 or 5, | ||
we get 3,5,6 and 9. The sum of these multiples is 23. | ||
Find the sum of all the multiples of 3 or 5 below N. | ||
''' | ||
""" | ||
from __future__ import print_function | ||
|
||
try: | ||
raw_input # Python 2 | ||
raw_input # Python 2 | ||
except NameError: | ||
raw_input = input # Python 3 | ||
n = int(raw_input().strip()) | ||
print(sum([e for e in range(3, n) if e % 3 == 0 or e % 5 == 0])) | ||
|
||
|
||
def solution(n): | ||
"""Returns the sum of all the multiples of 3 or 5 below n. | ||
>>> solution(3) | ||
0 | ||
>>> solution(4) | ||
3 | ||
>>> solution(10) | ||
23 | ||
>>> solution(600) | ||
83700 | ||
>>> solution(-7) | ||
0 | ||
""" | ||
|
||
return sum([e for e in range(3, n) if e % 3 == 0 or e % 5 == 0]) | ||
|
||
|
||
if __name__ == "__main__": | ||
print(solution(int(raw_input().strip()))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,39 @@ | ||
''' | ||
""" | ||
Problem Statement: | ||
If we list all the natural numbers below 10 that are multiples of 3 or 5, | ||
we get 3,5,6 and 9. The sum of these multiples is 23. | ||
Find the sum of all the multiples of 3 or 5 below N. | ||
''' | ||
""" | ||
from __future__ import print_function | ||
|
||
try: | ||
raw_input # Python 2 | ||
raw_input # Python 2 | ||
except NameError: | ||
raw_input = input # Python 3 | ||
n = int(raw_input().strip()) | ||
sum = 0 | ||
terms = (n-1)//3 | ||
sum+= ((terms)*(6+(terms-1)*3))//2 #sum of an A.P. | ||
terms = (n-1)//5 | ||
sum+= ((terms)*(10+(terms-1)*5))//2 | ||
terms = (n-1)//15 | ||
sum-= ((terms)*(30+(terms-1)*15))//2 | ||
print(sum) | ||
|
||
|
||
def solution(n): | ||
"""Returns the sum of all the multiples of 3 or 5 below n. | ||
>>> solution(3) | ||
0 | ||
>>> solution(4) | ||
3 | ||
>>> solution(10) | ||
23 | ||
>>> solution(600) | ||
83700 | ||
""" | ||
|
||
sum = 0 | ||
terms = (n - 1) // 3 | ||
sum += ((terms) * (6 + (terms - 1) * 3)) // 2 # sum of an A.P. | ||
terms = (n - 1) // 5 | ||
sum += ((terms) * (10 + (terms - 1) * 5)) // 2 | ||
terms = (n - 1) // 15 | ||
sum -= ((terms) * (30 + (terms - 1) * 15)) // 2 | ||
return sum | ||
|
||
|
||
if __name__ == "__main__": | ||
print(solution(int(raw_input().strip()))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,50 +1,66 @@ | ||
from __future__ import print_function | ||
|
||
''' | ||
""" | ||
Problem Statement: | ||
If we list all the natural numbers below 10 that are multiples of 3 or 5, | ||
we get 3,5,6 and 9. The sum of these multiples is 23. | ||
Find the sum of all the multiples of 3 or 5 below N. | ||
''' | ||
''' | ||
This solution is based on the pattern that the successive numbers in the series follow: 0+3,+2,+1,+3,+1,+2,+3. | ||
''' | ||
""" | ||
from __future__ import print_function | ||
|
||
try: | ||
raw_input # Python 2 | ||
raw_input # Python 2 | ||
except NameError: | ||
raw_input = input # Python 3 | ||
n = int(raw_input().strip()) | ||
sum=0 | ||
num=0 | ||
while(1): | ||
num+=3 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
num+=2 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
num+=1 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
num+=3 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
num+=1 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
num+=2 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
num+=3 | ||
if(num>=n): | ||
break | ||
sum+=num | ||
|
||
print(sum); | ||
|
||
def solution(n): | ||
""" | ||
This solution is based on the pattern that the successive numbers in the | ||
series follow: 0+3,+2,+1,+3,+1,+2,+3. | ||
Returns the sum of all the multiples of 3 or 5 below n. | ||
>>> solution(3) | ||
0 | ||
>>> solution(4) | ||
3 | ||
>>> solution(10) | ||
23 | ||
>>> solution(600) | ||
83700 | ||
""" | ||
|
||
sum = 0 | ||
num = 0 | ||
while 1: | ||
num += 3 | ||
if num >= n: | ||
break | ||
sum += num | ||
num += 2 | ||
if num >= n: | ||
break | ||
sum += num | ||
num += 1 | ||
if num >= n: | ||
break | ||
sum += num | ||
num += 3 | ||
if num >= n: | ||
break | ||
sum += num | ||
num += 1 | ||
if num >= n: | ||
break | ||
sum += num | ||
num += 2 | ||
if num >= n: | ||
break | ||
sum += num | ||
num += 3 | ||
if num >= n: | ||
break | ||
sum += num | ||
return sum | ||
|
||
|
||
if __name__ == "__main__": | ||
print(solution(int(raw_input().strip()))) |
Oops, something went wrong.