2215 Commits

Author SHA1 Message Date
433b804f7d Added morphological operations, fixes: #5197 (#5199)
* Added morphological operations, fixes: #5197

* Added dilation tests and type hints

* Added erosion tests and type hints

* fixes: TheAlgorithms#5197

* fixes: TheAlgorithms#5197

* Update erosion_operation.py

* made suggested changes in dilation

* made suggested changes in erosion

* made suggested changes in dilation

* removed extra spaces in the tests

* removed extra spaces in the tests
2021-10-16 16:32:40 +02:00
37385883aa Improved readability of web_programming/get_imdbtop.py and added documentations with doctests (#4855)
* improved readability of the existing method by reformatting, adding documentations with doctests.

* improved readability of the existing method by reformatting, adding documentations with doctests.

* fixed typo in test

* added doctest to parse dictionary method

* added doctest to parse dictionary method

* Changed return type, removed print() from method and implemented doctests as suggested

* Fixed doctest error, removed print() from method, created new script as suggested

* Update get_imdbtop.py

* Fix typo discovered by codespell

* return ()

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-16 03:32:33 +02:00
152261765a Show images from google query (#4853)
* Added new script to open the google image tab with a search query.

* Added new script to open the google image tab with a search query.

* Added new script to open the google image tab with a search query with doctests.

* Fixed doctest error, removed print() from method, changed return type

* Update web_programming/show_image_tab_from_google_query.py

using iterators instead of lists

Co-authored-by: Christian Clauss <cclauss@me.com>

* Update web_programming/show_image_tab_from_google_query.py

Improve readability by removing one-time used variable

Co-authored-by: Christian Clauss <cclauss@me.com>

* Update web_programming/show_image_tab_from_google_query.py

Decreasing complication through standard practices.

Co-authored-by: Christian Clauss <cclauss@me.com>

* Update web_programming/show_image_tab_from_google_query.py

Exception Handling

Co-authored-by: Christian Clauss <cclauss@me.com>

* changed complete method to download images from google search query

* Update download_images_from_google_query.py

* Delete show_image_tab_from_google_query.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-16 02:02:44 +02:00
4cf1aaeb96 Updated mypy.ini, removed ok folders that were excluded (#5331) 2021-10-15 23:57:41 +02:00
1d457be29d Matching min vertex cover (#5326)
* matching algorithm for min vertex cover problem

* fixed hint on row 37

* changed variable names

* provided doctest for get_edges function

* Removed dict.keys() iteration

* Update matching_min_vertex_cover.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-15 17:03:57 +02:00
908cb4f1e7 Greedy min vertex cover hacktoberfest (#5241)
* added complete graph generator function

* added doctest, type hints, wikipedia explanation

* added return type hint for function complete_graph

* added descriptive name for the parameter: n

* random graph generator with doctest and type hints

* added Greedy min vertex algorithm

* pre-commit hook(s) made changes

* Delete complete_graph_generator.py

* Delete random_graph_generator.py

* fixed doctest

* updated commit following highligths

* fixed following pre-commit highlights

* modified variables names
2021-10-15 15:04:38 +02:00
545fec7a14 Fix documentation (#5311) 2021-10-15 12:33:39 +02:00
ca842b4add It is OK to test ./scripts (#5290)
* It is OK to test ./scripts

* updating DIRECTORY.md

* Update build.yml

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2021-10-14 18:19:47 +02:00
618f9ca885 Add Proth number to maths (#5246)
* Add Proth number to maths

* Add test for 0 and more informative output

* Fixing test failure issue - unused variable

* Update proth_number.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-14 16:30:52 +02:00
bb37ebbe50 Create baconian_cipher.py (#5251)
* Create baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py

* Update baconian_cipher.py
2021-10-14 16:01:38 +02:00
d561de0bd9 Add surface area of cone and cylinder and hemisphere (#5220)
* Update area.py

* Update area.py

* Update area.py

* Update area.py

* Update area.py

* Update area.py

* Update area.py

* Update area.py
2021-10-14 13:23:18 +02:00
9b4cb05ee5 Modified Euler's Method (#5258)
* Magnitude and Angle 

Core function to find Magnitude and Angle of two Given Vector

* Magnitude and Angle with Doctest

added Doctest to the functions

* Update linear_algebra/src/lib.py

Co-authored-by: Christian Clauss <cclauss@me.com>

* Update linear_algebra/src/lib.py

Co-authored-by: Christian Clauss <cclauss@me.com>

* Changes done 

and Magnitude and Angle Issues

* black

* Modified Euler's Method

Adding Modified Euler's method, which was the further change to a Euler method and known for better accuracy to the given value

* Modified Euler's Method (changed the typing of function)

Modified function is used for better accuracy

* Link added

Added link to an explanation as per Contributions Guidelines

* Resolving Pre-Commit error

* Pre-Commit Error Resolved

* Pre-Commit Error import statement Change

* Removed Import Math

* import math built issue

* adding space pre-commit error

* statement sorter for doc

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-14 12:53:03 +02:00
943e03fc54 Added Optimal Merge Pattern Algorithm (#5274)
* Minor changes due to precommit

* Update optimal_merge_pattern.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-14 12:51:13 +02:00
1b0ac73da2 Magnitude and Angle of Vector (#5225)
* Magnitude and Angle 

Core function to find Magnitude and Angle of two Given Vector

* Magnitude and Angle with Doctest

added Doctest to the functions

* Update linear_algebra/src/lib.py

Co-authored-by: Christian Clauss <cclauss@me.com>

* Update linear_algebra/src/lib.py

Co-authored-by: Christian Clauss <cclauss@me.com>

* Changes done 

and Magnitude and Angle Issues

* black

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-12 11:51:27 +02:00
9586a6a98e Change comments for improved consistency (#5223)
* Change comments for improved consistency

https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md#L56
https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md#L80
https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md#L87

* updating DIRECTORY.md

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2021-10-12 00:44:38 +08:00
abaa0d754b Add type annotations (#4814) 2021-10-12 00:34:30 +08:00
bcfca67faa [mypy] fix type annotations for all Project Euler problems (#4747)
* [mypy] fix type annotations for problem003/sol1 and problem003/sol3

* [mypy] fix type annotations for project euler problem007/sol2

* [mypy] fix type annotations for project euler problem008/sol2

* [mypy] fix type annotations for project euler problem009/sol1

* [mypy] fix type annotations for project euler problem014/sol1

* [mypy] fix type annotations for project euler problem 025/sol2

* [mypy] fix type annotations for project euler problem026/sol1.py

* [mypy] fix type annotations for project euler problem037/sol1

* [mypy] fix type annotations for project euler problem044/sol1

* [mypy] fix type annotations for project euler problem046/sol1

* [mypy] fix type annotations for project euler problem051/sol1

* [mypy] fix type annotations for project euler problem074/sol2

* [mypy] fix type annotations for project euler problem080/sol1

* [mypy] fix type annotations for project euler problem099/sol1

* [mypy] fix type annotations for project euler problem101/sol1

* [mypy] fix type annotations for project euler problem188/sol1

* [mypy] fix type annotations for project euler problem191/sol1

* [mypy] fix type annotations for project euler problem207/sol1

* [mypy] fix type annotations for project euler problem551/sol1
2021-10-12 00:33:44 +08:00
e311b02e70 Remove unnecessary branch (#4824)
* Algorithm Optimized

* Update divide_and_conquer/inversions.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update divide_and_conquer/inversions.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update divide_and_conquer/inversions.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

Co-authored-by: John Law <johnlaw.po@gmail.com>
2021-10-12 00:33:06 +08:00
fadb97609f Add carrier concentrations calculation algorithm (#4791)
* added carrier concentrations algorithm

* Add more references

Added more references to the carrier concentrations file

* Update electronics/carrier_concentration.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update electronics/carrier_concentration.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

Co-authored-by: John Law <johnlaw.po@gmail.com>
2021-10-12 00:29:52 +08:00
729b4d875a Add Sylvester's sequence to maths (#5171)
* Add Sylvester's sequence to maths

* Update sylvester_sequence.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-10 20:02:44 +02:00
97562c19f8 Added doctest (#5182) 2021-10-10 20:00:04 +02:00
7578e0b920 Used in-built method (#5183)
* Used in-built method

* Delete swap_case.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-10-10 19:52:38 +02:00
77b243e62b bugfix: Add empty list detection for find_max/min (#4881)
* bugfix: Add empty list detection for find_max/min

* fix shebangs check
2021-10-07 23:20:32 +08:00
d324f91fe7 Fix mypy errors for data_structures->linked_list directory files (#4927) 2021-10-07 23:18:23 +08:00
d654806eae Improve Project Euler problem 112 solution 1 (#4808) 2021-10-06 22:11:50 +08:00
629369a34f Improve Project Euler problem 203 solution 1 (#4807) 2021-10-06 22:11:15 +08:00
a4d68d69f1 bugfix: Add abs_max.py & abs_min.py empty list detection (#4844)
* bugfix: Add abs_max.py & abs_min.py empty list detection

* fix shebangs check
2021-10-06 22:06:49 +08:00
90db98304e Fix word typos in comments (#4928)
* fixed: spelling

nonegative -> non-negative

* fixed: spelling

transpostiion -> transposition

* fixed: spelling

topolical -> topological

* fixed: spelling

sufix -> suffix
2021-10-04 12:07:58 +08:00
d530d2bcf4 fix: comment in patience sort (#4972) 2021-10-04 11:33:42 +08:00
c873fa0b1b Correct grammar of comment in backtracking/hamiltonian_cycle.py (#4868) 2021-10-02 15:51:53 +02:00
31b34af9fa Correct grammar in backtracking/n_queens_math.py (#4869) 2021-10-02 15:37:28 +02:00
6341f351aa Fix comments in backtracking/coloring.py (#4857) 2021-10-01 23:48:47 +02:00
d1e70cfa3a docs: renovate README (#4620)
Conjunctive adverbs should be followed by a comma.

For more details, kindly refer:
https://www.aje.com/arc/editing-tip-commas-conjunctive-adverbs/

Separate out the labels into two rows

Co-authored-by: John Law <johnlaw.po@gmail.com>
Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com>
2021-09-29 23:34:35 +05:30
b9f18152b7 Create check_polygon.py (#4605)
* Create check_polygon.py

* Update check_polygon.py

* Update maths/check_polygon.py

* Update check_polygon.py

* Update check_polygon.py

Co-authored-by: John Law <johnlaw.po@gmail.com>
2021-09-30 00:49:42 +08:00
02bc4bf417 Add Julia sets to fractals (#4382)
* Added Julia sets drawing

* Forgot the .py extension

* Update julia_sets.py

Added online sources for comparison.
Added more examples of fractal Julia sets.
Added all type hints.
Only show one picture
Silented RuntuleWarning's (there's no way of avoiding them and they're not an issue per se)

* Added doctest example for "show_results"

* Filtering Nan's and infinites

* added 1 missing type hint

* in iterate_function, convert to dtype=complex64

* RuntimeWarning (fine) filtering

* Type hint, test for ignore_warnings function, typo in header

* Update julia_sets.py

Type of expected output value for iterate function int array -> complex array (throws an error on test)

* Update julia_sets.py

- More accurate type for tests cases in eval_quadratic_polynomial and iterate_function
- added more characters for variables c & z in eval_quadratic_polynomial and eval_exponential to silent bot warnings

* Function def formatting

Blocked by black

* Update julia_sets.py

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

* added more doctests for eval_exponential

* Update fractals/julia_sets.py

Co-authored-by: John Law <johnlaw.po@gmail.com>

Co-authored-by: John Law <johnlaw.po@gmail.com>
2021-09-29 13:42:11 +08:00
5d02103b27 Fixed #4764 (#4779)
* Fixed #4764

* Fixes #4764
2021-09-24 12:54:38 +02:00
66a528b171 Improve Project Euler problem 014 solution 2 (#4752) 2021-09-24 02:55:18 +08:00
15d1cfabb1 from __future__ import annotations (#4763)
* from __future__ import annotations

* updating DIRECTORY.md

* from __future__ import annotations

* from __future__ import annotations

* Update xor_cipher.py

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2021-09-22 23:11:51 +02:00
dc07a85076 Update and rename check_valid_ip_address.py to is_ip_v4_address_valid.py (#4665)
* Update and rename check_valid_ip_address.py to is_ip_v4_address_valid.py

New test cases that the algorithm must detect:
* [ ] an octet much bigger than 255
* [ ] an octet is negative
* [ ] number of octets is less than 4
* [ ] number of octets is greater than 4
* [ ] an octet is a letter

* updating DIRECTORY.md

* Add two more tests to is_ip_v4_address_valid.py

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
Co-authored-by: John Law <johnlaw.po@gmail.com>
2021-09-23 02:03:11 +08:00
abc725f12d mypy --install-types --non-interactive . (#4530)
* mypy --install-types --non-interactive .

@dhruvmanila Is this useful/needed given that we do not pin our dependencies?

https://mypy-lang.blogspot.com/2021/06/mypy-0910-released.html

* updating DIRECTORY.md

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2021-09-23 01:37:18 +08:00
a7b9e28bc3 Improve Project Euler problem 009 solution 1 (#4749)
* Improve solution

* Uncomment code that has been commented due to slow execution affecting Travis
2021-09-21 13:28:27 +02:00
4761fef1a5 Double factorial iterative (#4760)
* Adding the double factorial algorithm

* Adding the double factorial algorithm

Co-authored-by: Jonathan Ocles <jocles@chiang.ec>
2021-09-19 03:22:47 +02:00
01d58562cc Fix typos in Project Euler problem 034 solution 1 (#4748)
* Fix comment

* Fix output
2021-09-18 21:33:03 +02:00
cecf43d648 Pyupgrade to Python 3.9 (#4718)
* Pyupgrade to Python 3.9

* updating DIRECTORY.md

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2021-09-07 13:37:03 +02:00
5d5831bdd0 Physics new code (#4709)
* added gamma_function

* Add files via upload

* Resolved issue with str.format

And also changed output to math notation

* Update gamma_function.py

* Rename physics/gamma_function.py to maths/gamma_recursive.py

* Fixes: #4709 Fixed issues for pre-commit test

* Fixes: #4709 solved issues with doctests

And comments

* Fixes: #4709 Added failed tests to doctest

* Align with Python's Standard Library math.gamma()

Replicate the exceptions of https://docs.python.org/3/library/math.html#math.gamma

* Update gamma_recursive.py

* Update gamma_recursive.py

* Update gamma_recursive.py

* Update gamma_recursive.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-09-06 23:57:18 +02:00
imp
c1b15a86ba [mypy] Fix type annotations for dynamic programming (#4687)
* Fix mypy error for knapsack.py

* Fix mypy error for longest_increasing_subsequence

* Fix mypy error for fractional_knapsack_2.py
2021-09-03 11:49:23 +02:00
757d4fb84f Added Dutch National Flag algorithm #4636 (#4639)
* Added Dutch national flag sort Algorithm

* Changed file name to dnf_sort.py

* Added descriptive name and type hint 

Added descriptive name and type hint  for parameter with doctest for the function dnf_sort.

* Added test cases

* Added doctest cases

* Update sorts/dnf_sort.py

* Added doctest for dutch_national_flag_sort sorts/dnf_sort.py

* Update sorts/dnf_sort.py

* Added doctest for the function
dutch_national_flag_sort

* update file as per black code formatter

* Update dnf_sort.py

* Update and rename dnf_sort.py to dutch_national_flag_sort.py

Co-authored-by: Christian Clauss <cclauss@me.com>
2021-08-31 22:06:49 +02:00
ef9827166e Approve functions used as default arguments (#4699)
* Approve functions used as default argumenets

* The default value for **seed** is the result of a function call

The default value for **seed** is the result of a function call which is not normally recommended and causes flake8-bugbear to raise a B008 error. However, in this case, it is accptable because `LinearCongruentialGenerator.__init__()` will only be called once per instance and it ensures that each instance will generate a unique sequence of numbers.

* The default value for **backend** is the result of a function call

The default value for **backend** is the result of a function call which is not normally recommended and causes flake8-bugbear to raise a B008 error. However, in this case, it is accptable because `Aer.get_backend()` is called when the function is definition and that same backend is then reused for function calls.

* Update linear_congruential_generator.py

* Update ripple_adder_classic.py

* Update ripple_adder_classic.py

* Update ripple_adder_classic.py

* Update ripple_adder_classic.py

* Update ripple_adder_classic.py
2021-08-31 07:56:19 +02:00
097f830238 Avoid mutable default arguments (#4691) 2021-08-31 06:56:15 +02:00
3acca3d1d1 Fix type annotations for integer_partition.py #4052 (#4689) 2021-08-30 10:06:59 +02:00