From 66db8d77b1ad303c80c0210a3a02fd4afc44191a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADkolas=20Vargas?= Date: Sun, 1 Dec 2019 23:49:07 -0300 Subject: [PATCH 01/12] improved prime numbers implementation --- maths/prime_numbers.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index a29a95ea2280..b837b9be2579 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -1,7 +1,7 @@ -from typing import List +from typing import List, Generator -def primes(max: int) -> List[int]: +def primes(max: int) -> Generator[int]: """ Return a list of all primes numbers up to max. >>> primes(10) @@ -13,16 +13,16 @@ def primes(max: int) -> List[int]: >>> primes(1_000_000)[-1] 999983 """ - max += 1 - numbers = [False] * max - ret = [] - for i in range(2, max): - if not numbers[i]: - for j in range(i, max, i): - numbers[j] = True - ret.append(i) - return ret + numbers: Generator = (i for i in range(1, (max + 1))) + for i in filter(lambda x: x > 1, numbers): + for j in range(2, i): + if (i % j) == 0: + break + else: + yield i if __name__ == "__main__": - print(primes(int(input("Calculate primes up to:\n>> ")))) + number = int(input("Calculate primes up to:\n>> ")) + for ret in primes(number): + print(ret) From 4f1cb27a9c5a9ff939f410a643ed015b70281420 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Mon, 2 Dec 2019 02:50:42 +0000 Subject: [PATCH 02/12] fixup! Format Python code with psf/black push --- data_structures/data_structures/heap/heap_generic.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_structures/data_structures/heap/heap_generic.py b/data_structures/data_structures/heap/heap_generic.py index c41a434542e7..fc17c1b1218e 100644 --- a/data_structures/data_structures/heap/heap_generic.py +++ b/data_structures/data_structures/heap/heap_generic.py @@ -30,7 +30,8 @@ def _swap(self, i, j): """Performs changes required for swapping two elements in the heap""" # First update the indexes of the items in index map. self.pos_map[self.arr[i][0]], self.pos_map[self.arr[j][0]] = ( - self.pos_map[self.arr[j][0]], self.pos_map[self.arr[i][0]] + self.pos_map[self.arr[j][0]], + self.pos_map[self.arr[i][0]], ) # Then swap the items in the list. self.arr[i], self.arr[j] = self.arr[j], self.arr[i] From 9a1befaf258c87abbdadf40203b302a1200bae3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADkolas=20Vargas?= Date: Sun, 1 Dec 2019 23:56:42 -0300 Subject: [PATCH 03/12] fix type hint --- maths/prime_numbers.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index b837b9be2579..0f9473bb5ecc 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -1,7 +1,6 @@ -from typing import List, Generator +from typing import Generator, List - -def primes(max: int) -> Generator[int]: +def primes(max: int) -> Generator[int, None, None]: """ Return a list of all primes numbers up to max. >>> primes(10) From f2d7c5e5cceefe49f33b1c1e6e9b2a44820a7c16 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Mon, 2 Dec 2019 02:58:07 +0000 Subject: [PATCH 04/12] fixup! Format Python code with psf/black push --- maths/prime_numbers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index 0f9473bb5ecc..0735e184d3e3 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -1,5 +1,6 @@ from typing import Generator, List + def primes(max: int) -> Generator[int, None, None]: """ Return a list of all primes numbers up to max. From 369a16920889808d3362e77e330a32728cbf7c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADkolas=20Vargas?= Date: Mon, 2 Dec 2019 22:08:57 -0300 Subject: [PATCH 05/12] fix doctests --- maths/prime_numbers.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index 0f9473bb5ecc..f6768857ceab 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -3,14 +3,14 @@ def primes(max: int) -> Generator[int, None, None]: """ Return a list of all primes numbers up to max. - >>> primes(10) - [2, 3, 5, 7] - >>> primes(11) - [2, 3, 5, 7, 11] - >>> primes(25) + >>> list(primes(25)) [2, 3, 5, 7, 11, 13, 17, 19, 23] - >>> primes(1_000_000)[-1] - 999983 + >>> list(primes(11)) + [2, 3, 5, 7, 11] + >>> list(primes(33)) + [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31] + >>> list(primes(10000))[-1] + 9973 """ numbers: Generator = (i for i in range(1, (max + 1))) for i in filter(lambda x: x > 1, numbers): @@ -22,6 +22,6 @@ def primes(max: int) -> Generator[int, None, None]: if __name__ == "__main__": - number = int(input("Calculate primes up to:\n>> ")) + number = int(input("Calculate primes up to:\n>> ").strip()) for ret in primes(number): print(ret) From 284832bd97ed28c901f34ddc45b15bdd5dd379de Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Tue, 3 Dec 2019 01:10:46 +0000 Subject: [PATCH 06/12] updating DIRECTORY.md --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index a3db3636e34c..8fa83227bd72 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -252,6 +252,7 @@ * [Binomial Coefficient](https://github.com/TheAlgorithms/Python/blob/master/maths/binomial_coefficient.py) * [Ceil](https://github.com/TheAlgorithms/Python/blob/master/maths/ceil.py) * [Collatz Sequence](https://github.com/TheAlgorithms/Python/blob/master/maths/collatz_sequence.py) + * [Eulers Totient](https://github.com/TheAlgorithms/Python/blob/master/maths/eulers_totient.py) * [Explicit Euler](https://github.com/TheAlgorithms/Python/blob/master/maths/explicit_euler.py) * [Extended Euclidean Algorithm](https://github.com/TheAlgorithms/Python/blob/master/maths/extended_euclidean_algorithm.py) * [Factorial Python](https://github.com/TheAlgorithms/Python/blob/master/maths/factorial_python.py) @@ -286,6 +287,7 @@ * [Prime Factors](https://github.com/TheAlgorithms/Python/blob/master/maths/prime_factors.py) * [Prime Numbers](https://github.com/TheAlgorithms/Python/blob/master/maths/prime_numbers.py) * [Prime Sieve Eratosthenes](https://github.com/TheAlgorithms/Python/blob/master/maths/prime_sieve_eratosthenes.py) + * [Pythagoras](https://github.com/TheAlgorithms/Python/blob/master/maths/pythagoras.py) * [Qr Decomposition](https://github.com/TheAlgorithms/Python/blob/master/maths/qr_decomposition.py) * [Quadratic Equations Complex Numbers](https://github.com/TheAlgorithms/Python/blob/master/maths/quadratic_equations_complex_numbers.py) * [Radix2 Fft](https://github.com/TheAlgorithms/Python/blob/master/maths/radix2_fft.py) From 6c1bd334b3419b24d15a782150c30aeea6469193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADkolas=20Vargas?= Date: Mon, 2 Dec 2019 22:14:13 -0300 Subject: [PATCH 07/12] added prime tests with negative numbers --- maths/prime_numbers.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index cf7cfb2f7e7c..9fe92dd95f5c 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -4,6 +4,12 @@ def primes(max: int) -> Generator[int, None, None]: """ Return a list of all primes numbers up to max. + >>> list(primes(0)) + [] + >>> list(primes(-1)) + [] + >>> list(primes(-10)) + [] >>> list(primes(25)) [2, 3, 5, 7, 11, 13, 17, 19, 23] >>> list(primes(11)) From 2a539aa9cbfc31d3eec2ae15b0228f516562d676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADkolas=20Vargas?= Date: Fri, 6 Dec 2019 20:43:50 -0300 Subject: [PATCH 08/12] using for instead filter --- maths/prime_numbers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index 9fe92dd95f5c..fc9eec0fe599 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -20,7 +20,7 @@ def primes(max: int) -> Generator[int, None, None]: 9973 """ numbers: Generator = (i for i in range(1, (max + 1))) - for i in filter(lambda x: x > 1, numbers): + for i in (n for n in numbers if n > 1): for j in range(2, i): if (i % j) == 0: break From 609fb054d67229d3bda4e2e8acc7210fcfda5772 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Fri, 6 Dec 2019 23:45:03 +0000 Subject: [PATCH 09/12] updating DIRECTORY.md --- DIRECTORY.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 8fa83227bd72..468fe65298d9 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -133,6 +133,7 @@ * [Gaussian Filter](https://github.com/TheAlgorithms/Python/blob/master/digital_image_processing/filters/gaussian_filter.py) * [Median Filter](https://github.com/TheAlgorithms/Python/blob/master/digital_image_processing/filters/median_filter.py) * [Sobel Filter](https://github.com/TheAlgorithms/Python/blob/master/digital_image_processing/filters/sobel_filter.py) + * [Index Calculation](https://github.com/TheAlgorithms/Python/blob/master/digital_image_processing/index_calculation.py) * Rotation * [Rotation](https://github.com/TheAlgorithms/Python/blob/master/digital_image_processing/rotation/rotation.py) * [Test Digital Image Processing](https://github.com/TheAlgorithms/Python/blob/master/digital_image_processing/test_digital_image_processing.py) @@ -216,6 +217,7 @@ ## Hashes * [Chaos Machine](https://github.com/TheAlgorithms/Python/blob/master/hashes/chaos_machine.py) * [Enigma Machine](https://github.com/TheAlgorithms/Python/blob/master/hashes/enigma_machine.py) + * [Hamming Code](https://github.com/TheAlgorithms/Python/blob/master/hashes/hamming_code.py) * [Md5](https://github.com/TheAlgorithms/Python/blob/master/hashes/md5.py) * [Sha1](https://github.com/TheAlgorithms/Python/blob/master/hashes/sha1.py) @@ -234,6 +236,7 @@ * [Linear Discriminant Analysis](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/linear_discriminant_analysis.py) * [Linear Regression](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/linear_regression.py) * [Logistic Regression](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/logistic_regression.py) + * [Multilayer Perceptron Classifier](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/multilayer_perceptron_classifier.py) * [Polymonial Regression](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/polymonial_regression.py) * [Scoring Functions](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/scoring_functions.py) * [Sequential Minimum Optimization](https://github.com/TheAlgorithms/Python/blob/master/machine_learning/sequential_minimum_optimization.py) @@ -501,11 +504,11 @@ * [I Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/i_sort.py) * [Insertion Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/insertion_sort.py) * [Merge Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/merge_sort.py) - * [Merge Sort Fastest](https://github.com/TheAlgorithms/Python/blob/master/sorts/merge_sort_fastest.py) * [Odd Even Transposition Parallel](https://github.com/TheAlgorithms/Python/blob/master/sorts/odd_even_transposition_parallel.py) * [Odd Even Transposition Single Threaded](https://github.com/TheAlgorithms/Python/blob/master/sorts/odd_even_transposition_single_threaded.py) * [Pancake Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/pancake_sort.py) * [Pigeon Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/pigeon_sort.py) + * [Pigeonhole Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/pigeonhole_sort.py) * [Quick Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/quick_sort.py) * [Quick Sort 3 Partition](https://github.com/TheAlgorithms/Python/blob/master/sorts/quick_sort_3_partition.py) * [Radix Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/radix_sort.py) @@ -518,6 +521,7 @@ * [Tim Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/tim_sort.py) * [Topological Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/topological_sort.py) * [Tree Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/tree_sort.py) + * [Unknown Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/unknown_sort.py) * [Wiggle Sort](https://github.com/TheAlgorithms/Python/blob/master/sorts/wiggle_sort.py) ## Strings From b5f294badef0f8be1716858069d9a18e853edfa2 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sat, 7 Dec 2019 06:25:48 +0100 Subject: [PATCH 10/12] Remove unused typing.List --- maths/prime_numbers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/prime_numbers.py b/maths/prime_numbers.py index fc9eec0fe599..f9325996500c 100644 --- a/maths/prime_numbers.py +++ b/maths/prime_numbers.py @@ -1,4 +1,4 @@ -from typing import Generator, List +from typing import Generator def primes(max: int) -> Generator[int, None, None]: From fea8077362537c36c971051194092b3dfe68f654 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sat, 7 Dec 2019 06:31:53 +0100 Subject: [PATCH 11/12] Remove tab indentation --- digital_image_processing/index_calculation.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/digital_image_processing/index_calculation.py b/digital_image_processing/index_calculation.py index f4f8759ad010..fc5b169650a2 100644 --- a/digital_image_processing/index_calculation.py +++ b/digital_image_processing/index_calculation.py @@ -176,10 +176,10 @@ def calculation( def ARVI2(self): """ - Atmospherically Resistant Vegetation Index 2 - https://www.indexdatabase.de/db/i-single.php?id=396 - :return: index - −0.18+1.17*(self.nir−self.red)/(self.nir+self.red) + Atmospherically Resistant Vegetation Index 2 + https://www.indexdatabase.de/db/i-single.php?id=396 + :return: index + −0.18+1.17*(self.nir−self.red)/(self.nir+self.red) """ return -0.18 + (1.17 * ((self.nir - self.red) / (self.nir + self.red))) From 266ad42da5706228642739a892f5b36a3ab23f5f Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sat, 7 Dec 2019 06:34:46 +0100 Subject: [PATCH 12/12] print("Sorted order is:", " ".join(a)) --- sorts/pigeonhole_sort.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sorts/pigeonhole_sort.py b/sorts/pigeonhole_sort.py index d8eb61fc0e08..a91e1d054442 100644 --- a/sorts/pigeonhole_sort.py +++ b/sorts/pigeonhole_sort.py @@ -36,8 +36,9 @@ def pigeonhole_sort(a): def main(): - pigeonhole_sort([8, 3, 2, 7, 4, 6, 8]) - print("Sorted order is: ", " ", join(a)) + a = [8, 3, 2, 7, 4, 6, 8] + pigeonhole_sort(a) + print("Sorted order is:", " ".join(a)) if __name__ == "__main__":