Pythonic Data Structures and Algorithms
Minimal and clean example implementations of data structures and algorithms in Python 3.
Contributing
Thanks for your interest in contributing! There are many ways to contribute to this project. Get started here
Tests
Use unittest
For running all tests write down:
$ python3 -m unittest discover tests
For running some specific tests you can do this as following (Ex: sort):
$ python3 -m unittest tests.test_sort
Use pytest
For running all tests write down:
$ python3 -m pytest tests
Install
If you want to use the API algorithms in your code, it is as simple as:
$ pip3 install algorithms
You can test by creating a python file: (Ex: use merge_sort in sort)
from algorithms.sort import merge_sort
if __name__ == "__main__":
my_list = [1, 8, 3, 5, 6]
my_list = merge_sort(my_list)
print(my_list)Uninstall
If you want to uninstall algorithms, it is as simple as:
$ pip3 uninstall -y algorithms
List of Implementations
- arrays
- automata
- backtrack
- bfs
- bit
- compression
- dfs
- distribution
- dp
- graph
- heap
- linkedlist
- map
- maths
- power
- base_conversion
- combination
- cosine_similarity
- decimal_to_binary_ip
- euler_totient
- extended_gcd
- factorial
- gcd/lcm
- generate_strobogrammtic
- is_strobogrammatic
- modular_exponential
- next_bigger
- next_perfect_square
- nth_digit
- prime_check
- primes_sieve_of_eratosthenes
- pythagoras
- rabin_miller
- rsa
- sqrt_precision_factor
- summing_digits
- hailstone
- recursive_binomial_coefficient
- find_order
- find_primitive_root
- diffie_hellman_key_exchange
- matrix
- queues
- search
- set
- sort
- stack
- strings
- fizzbuzz
- delete_reoccurring
- strip_url_params
- validate_coordinates
- domain_extractor
- merge_string_checker
- add_binary
- breaking_bad
- decode_string
- encode_decode
- group_anagrams
- int_to_roman
- is_palindrome
- license_number
- make_sentence
- multiply_strings
- one_edit_distance
- rabin_karp
- reverse_string
- reverse_vowel
- reverse_words
- roman_to_int
- word_squares
- unique_morse
- judge_circle
- strong_password
- caesar_cipher
- check_pangram
- contain_string
- count_binary_substring
- repeat_string
- min_distance
- longest_common_prefix
- rotate
- first_unique_char
- repeat_substring
- longest_palindromic_substring
- knuth_morris_pratt
- tree
- unix
- unionfind
Contributors
Thanks to all the contributors who helped in building the repo.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

