From c6f9dd094d79d4dfb64fcb78994ee2ad2ff75991 Mon Sep 17 00:00:00 2001 From: aymanpopje <76626896+aymanpopje@users.noreply.github.com> Date: Thu, 13 Jun 2024 13:42:11 +0200 Subject: [PATCH 01/10] Added README.md template (see section 3.6 in Assignemnt 1), Renamed the original README.md to README_original.md (Required by Assignemnt 1). --- README.md | 491 +++++++-------------------------------------- README_original.md | 424 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 491 insertions(+), 424 deletions(-) create mode 100644 README_original.md diff --git a/README.md b/README.md index 65caeb5ca..fd8293229 100644 --- a/README.md +++ b/README.md @@ -1,424 +1,67 @@ -[![PyPI version](https://badge.fury.io/py/algorithms.svg)](https://badge.fury.io/py/algorithms) -[![Open Source Helpers](https://www.codetriage.com/keon/algorithms/badges/users.svg)](https://www.codetriage.com/keon/algorithms) -[![Build Status](https://travis-ci.org/keon/algorithms.svg?branch=master)](https://travis-ci.org/keon/algorithms) -[![Coverage Status](https://coveralls.io/repos/github/keon/algorithms/badge.svg?branch=master)](https://coveralls.io/github/keon/algorithms?branch=master) - -

- -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](CONTRIBUTING.md) - -## 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`) - -```python3 -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](algorithms/arrays) - - [delete_nth](algorithms/arrays/delete_nth.py) - - [flatten](algorithms/arrays/flatten.py) - - [garage](algorithms/arrays/garage.py) - - [josephus_problem](algorithms/arrays/josephus.py) - - [limit](algorithms/arrays/limit.py) - - [longest_non_repeat](algorithms/arrays/longest_non_repeat.py/) - - [max_ones_index](algorithms/arrays/max_ones_index.py) - - [merge_intervals](algorithms/arrays/merge_intervals.py) - - [missing_ranges](algorithms/arrays/missing_ranges.py) - - [plus_one](algorithms/arrays/plus_one.py) - - [remove_duplicates](algorithms/arrays/remove_duplicates.py) - - [rotate](algorithms/arrays/rotate.py) - - [summarize_ranges](algorithms/arrays/summarize_ranges.py) - - [three_sum](algorithms/arrays/three_sum.py) - - [trimmean](algorithms/arrays/trimmean.py) - - [top_1](algorithms/arrays/top_1.py) - - [two_sum](algorithms/arrays/two_sum.py) - - [move_zeros](algorithms/arrays/move_zeros.py) - - [n_sum](algorithms/arrays/n_sum.py) -- [greedy](algorithms/greedy/) - - [max_contiguous_subsequence_sum](algorithms/greedy/max_contiguous_subsequence_sum.py) -- [automata](algorithms/automata) - - [DFA](algorithms/automata/dfa.py) -- [backtrack](algorithms/backtrack) - - [general_solution.md](algorithms/backtrack/) - - [add_operators](algorithms/backtrack/add_operators.py) - - [anagram](algorithms/backtrack/anagram.py) - - [array_sum_combinations](algorithms/backtrack/array_sum_combinations.py) - - [combination_sum](algorithms/backtrack/combination_sum.py) - - [factor_combinations](algorithms/backtrack/factor_combinations.py) - - [generate_abbreviations](algorithms/backtrack/generate_abbreviations.py) - - [generate_parenthesis](algorithms/backtrack/generate_parenthesis.py) - - [letter_combination](algorithms/backtrack/letter_combination.py) - - [palindrome_partitioning](algorithms/backtrack/palindrome_partitioning.py) - - [pattern_match](algorithms/backtrack/pattern_match.py) - - [permute](algorithms/backtrack/permute.py) - - [permute_unique](algorithms/backtrack/permute_unique.py) - - [subsets](algorithms/backtrack/subsets.py) - - [subsets_unique](algorithms/backtrack/subsets_unique.py) -- [bfs](algorithms/bfs) - - [maze_search](algorithms/bfs/maze_search.py) - - [shortest_distance_from_all_buildings](algorithms/bfs/shortest_distance_from_all_buildings.py) - - [word_ladder](algorithms/bfs/word_ladder.py) -- [bit](algorithms/bit) - - [add_bitwise_operator](algorithms/bit/add_bitwise_operator.py) - - [bit_operation](algorithms/bit/bit_operation.py) - - [bytes_int_conversion](algorithms/bit/bytes_int_conversion.py) - - [count_flips_to_convert](algorithms/bit/count_flips_to_convert.py) - - [count_ones](algorithms/bit/count_ones.py) - - [find_difference](algorithms/bit/find_difference.py) - - [find_missing_number](algorithms/bit/find_missing_number.py) - - [flip_bit_longest_sequence](algorithms/bit/flip_bit_longest_sequence.py) - - [power_of_two](algorithms/bit/power_of_two.py) - - [reverse_bits](algorithms/bit/reverse_bits.py) - - [single_number](algorithms/bit/single_number.py) - - [single_number2](algorithms/bit/single_number2.py) - - [single_number3](algorithms/bit/single_number3.py) - - [subsets](algorithms/bit/subsets.py) - - [swap_pair](algorithms/bit/swap_pair.py) - - [has_alternative_bit](algorithms/bit/has_alternative_bit.py) - - [insert_bit](algorithms/bit/insert_bit.py) - - [remove_bit](algorithms/bit/remove_bit.py) - - [binary_gap](algorithms/bit/binary_gap.py) -- [compression](algorithms/compression) - - [huffman_coding](algorithms/compression/huffman_coding.py) - - [rle_compression](algorithms/compression/rle_compression.py) - - [elias](algorithms/compression/elias.py) -- [dfs](algorithms/dfs) - - [all_factors](algorithms/dfs/all_factors.py) - - [count_islands](algorithms/dfs/count_islands.py) - - [pacific_atlantic](algorithms/dfs/pacific_atlantic.py) - - [sudoku_solver](algorithms/dfs/sudoku_solver.py) - - [walls_and_gates](algorithms/dfs/walls_and_gates.py) -- [distribution](algorithms/distribution) - - [histogram](algorithms/distribution/histogram.py) -- [dp](algorithms/dp) - - [buy_sell_stock](algorithms/dp/buy_sell_stock.py) - - [climbing_stairs](algorithms/dp/climbing_stairs.py) - - [coin_change](algorithms/dp/coin_change.py) - - [combination_sum](algorithms/dp/combination_sum.py) - - [egg_drop](algorithms/dp/egg_drop.py) - - [house_robber](algorithms/dp/house_robber.py) - - [int_divide](algorithms/dp/int_divide.py) - - [job_scheduling](algorithms/dp/job_scheduling.py) - - [knapsack](algorithms/dp/knapsack.py) - - [longest_increasing](algorithms/dp/longest_increasing.py) - - [matrix_chain_order](algorithms/dp/matrix_chain_order.py) - - [max_product_subarray](algorithms/dp/max_product_subarray.py) - - [max_subarray](algorithms/dp/max_subarray.py) - - [min_cost_path](algorithms/dp/min_cost_path.py) - - [num_decodings](algorithms/dp/num_decodings.py) - - [regex_matching](algorithms/dp/regex_matching.py) - - [rod_cut](algorithms/dp/rod_cut.py) - - [word_break](algorithms/dp/word_break.py) - - [fibonacci](algorithms/dp/fib.py) - - [hosoya triangle](algorithms/dp/hosoya_triangle.py) - - [K-Factor_strings](algorithms/dp/k_factor.py) - - [planting_trees](algorithms/dp/planting_trees.py) -- [graph](algorithms/graph) - - [check_bipartite](algorithms/graph/check_bipartite.py) - - [strongly_connected](algorithms/graph/check_digraph_strongly_connected.py) - - [clone_graph](algorithms/graph/clone_graph.py) - - [cycle_detection](algorithms/graph/cycle_detection.py) - - [find_all_cliques](algorithms/graph/find_all_cliques.py) - - [find_path](algorithms/graph/find_path.py) - - [graph](algorithms/graph/graph.py) - - [dijkstra](algorithms/graph/dijkstra.py) - - [markov_chain](algorithms/graph/markov_chain.py) - - [minimum_spanning_tree](algorithms/graph/minimum_spanning_tree.py) - - [satisfiability](algorithms/graph/satisfiability.py) - - [minimum_spanning_tree_prims](algorithms/graph/prims_minimum_spanning.py) - - [tarjan](algorithms/graph/tarjan.py) - - [traversal](algorithms/graph/traversal.py) - - [maximum_flow](algorithms/graph/maximum_flow.py) - - [maximum_flow_bfs](algorithms/graph/maximum_flow_bfs.py) - - [maximum_flow_dfs](algorithms/graph/maximum_flow_dfs.py) - - [all_pairs_shortest_path](algorithms/graph/all_pairs_shortest_path.py) - - [bellman_ford](algorithms/graph/bellman_ford.py) - - [Count Connected Components](algorithms/graph/count_connected_number_of_component.py) -- [heap](algorithms/heap) - - [merge_sorted_k_lists](algorithms/heap/merge_sorted_k_lists.py) - - [skyline](algorithms/heap/skyline.py) - - [sliding_window_max](algorithms/heap/sliding_window_max.py) - - [binary_heap](algorithms/heap/binary_heap.py) - - [k_closest_points](algorithms/heap/k_closest_points.py) -- [linkedlist](algorithms/linkedlist) - - [add_two_numbers](algorithms/linkedlist/add_two_numbers.py) - - [copy_random_pointer](algorithms/linkedlist/copy_random_pointer.py) - - [delete_node](algorithms/linkedlist/delete_node.py) - - [first_cyclic_node](algorithms/linkedlist/first_cyclic_node.py) - - [is_cyclic](algorithms/linkedlist/is_cyclic.py) - - [is_palindrome](algorithms/linkedlist/is_palindrome.py) - - [kth_to_last](algorithms/linkedlist/kth_to_last.py) - - [linkedlist](algorithms/linkedlist/linkedlist.py) - - [remove_duplicates](algorithms/linkedlist/remove_duplicates.py) - - [reverse](algorithms/linkedlist/reverse.py) - - [rotate_list](algorithms/linkedlist/rotate_list.py) - - [swap_in_pairs](algorithms/linkedlist/swap_in_pairs.py) - - [is_sorted](algorithms/linkedlist/is_sorted.py) - - [remove_range](algorithms/linkedlist/remove_range.py) -- [map](algorithms/map) - - [hashtable](algorithms/map/hashtable.py) - - [separate_chaining_hashtable](algorithms/map/separate_chaining_hashtable.py) - - [longest_common_subsequence](algorithms/map/longest_common_subsequence.py) - - [longest_palindromic_subsequence](algorithms/map/longest_palindromic_subsequence.py) - - [randomized_set](algorithms/map/randomized_set.py) - - [valid_sudoku](algorithms/map/valid_sudoku.py) - - [word_pattern](algorithms/map/word_pattern.py) - - [is_isomorphic](algorithms/map/is_isomorphic.py) - - [is_anagram](algorithms/map/is_anagram.py) -- [maths](algorithms/maths) - - [base_conversion](algorithms/maths/base_conversion.py) - - [chinese_remainder_theorem](algorithms/maths/chinese_remainder_theorem.py) - - [combination](algorithms/maths/combination.py) - - [cosine_similarity](algorithms/maths/cosine_similarity.py) - - [decimal_to_binary_ip](algorithms/maths/decimal_to_binary_ip.py) - - [diffie_hellman_key_exchange](algorithms/maths/diffie_hellman_key_exchange.py) - - [euler_totient](algorithms/maths/euler_totient.py) - - [extended_gcd](algorithms/maths/extended_gcd.py) - - [factorial](algorithms/maths/factorial.py) - - [find_order](algorithms/maths/find_order_simple.py) - - [find_primitive_root](algorithms/maths/find_primitive_root_simple.py) - - [gcd/lcm](algorithms/maths/gcd.py) - - [generate_strobogrammtic](algorithms/maths/generate_strobogrammtic.py) - - [hailstone](algorithms/maths/hailstone.py) - - [is_strobogrammatic](algorithms/maths/is_strobogrammatic.py) - - [krishnamurthy_number](algorithms/maths/krishnamurthy_number.py) - - [magic_number](algorithms/maths/magic_number.py) - - [modular_exponential](algorithms/maths/modular_exponential.py) - - [modular_inverse](algorithms/maths/modular_inverse.py) - - [next_bigger](algorithms/maths/next_bigger.py) - - [next_perfect_square](algorithms/maths/next_perfect_square.py) - - [nth_digit](algorithms/maths/nth_digit.py) - - [num_perfect_squares](algorithms/maths/num_perfect_squares.py) - - [polynomial](algorithms/maths/polynomial.py) - - [power](algorithms/maths/power.py) - - [prime_check](algorithms/maths/prime_check.py) - - [primes_sieve_of_eratosthenes](algorithms/maths/primes_sieve_of_eratosthenes.py) - - [pythagoras](algorithms/maths/pythagoras.py) - - [rabin_miller](algorithms/maths/rabin_miller.py) - - [recursive_binomial_coefficient](algorithms/maths/recursive_binomial_coefficient.py) - - [rsa](algorithms/maths/rsa.py) - - [sqrt_precision_factor](algorithms/maths/sqrt_precision_factor.py) - - [summing_digits](algorithms/maths/summing_digits.py) - - [symmetry_group_cycle_index](algorithms/maths/symmetry_group_cycle_index.py) -- [matrix](algorithms/matrix) - - [sudoku_validator](algorithms/matrix/sudoku_validator.py) - - [bomb_enemy](algorithms/matrix/bomb_enemy.py) - - [copy_transform](algorithms/matrix/copy_transform.py) - - [count_paths](algorithms/matrix/count_paths.py) - - [matrix_exponentiation](algorithms/matrix/matrix_exponentiation.py) - - [matrix_inversion](algorithms/matrix/matrix_inversion.py) - - [matrix_multiplication](algorithms/matrix/multiply.py) - - [rotate_image](algorithms/matrix/rotate_image.py) - - [search_in_sorted_matrix](algorithms/matrix/search_in_sorted_matrix.py) - - [sparse_dot_vector](algorithms/matrix/sparse_dot_vector.py) - - [sparse_mul](algorithms/matrix/sparse_mul.py) - - [spiral_traversal](algorithms/matrix/spiral_traversal.py) - - [crout_matrix_decomposition](algorithms/matrix/crout_matrix_decomposition.py) - - [cholesky_matrix_decomposition](algorithms/matrix/cholesky_matrix_decomposition.py) - - [sum_sub_squares](algorithms/matrix/sum_sub_squares.py) - - [sort_matrix_diagonally](algorithms/matrix/sort_matrix_diagonally.py) -- [queues](algorithms/queues) - - [max_sliding_window](algorithms/queues/max_sliding_window.py) - - [moving_average](algorithms/queues/moving_average.py) - - [queue](algorithms/queues/queue.py) - - [reconstruct_queue](algorithms/queues/reconstruct_queue.py) - - [zigzagiterator](algorithms/queues/zigzagiterator.py) -- [search](algorithms/search) - - [binary_search](algorithms/search/binary_search.py) - - [first_occurrence](algorithms/search/first_occurrence.py) - - [last_occurrence](algorithms/search/last_occurrence.py) - - [linear_search](algorithms/search/linear_search.py) - - [search_insert](algorithms/search/search_insert.py) - - [two_sum](algorithms/search/two_sum.py) - - [search_range](algorithms/search/search_range.py) - - [find_min_rotate](algorithms/search/find_min_rotate.py) - - [search_rotate](algorithms/search/search_rotate.py) - - [jump_search](algorithms/search/jump_search.py) - - [next_greatest_letter](algorithms/search/next_greatest_letter.py) - - [interpolation_search](algorithms/search/interpolation_search.py) -- [set](algorithms/set) - - [randomized_set](algorithms/set/randomized_set.py) - - [set_covering](algorithms/set/set_covering.py) - - [find_keyboard_row](algorithms/set/find_keyboard_row.py) -- [sort](algorithms/sort) - - [bitonic_sort](algorithms/sort/bitonic_sort.py) - - [bogo_sort](algorithms/sort/bogo_sort.py) - - [bubble_sort](algorithms/sort/bubble_sort.py) - - [bucket_sort](algorithms/sort/bucket_sort.py) - - [cocktail_shaker_sort](algorithms/sort/cocktail_shaker_sort.py) - - [comb_sort](algorithms/sort/comb_sort.py) - - [counting_sort](algorithms/sort/counting_sort.py) - - [cycle_sort](algorithms/sort/cycle_sort.py) - - [exchange_sort](algorithms/sort/exchange_sort.py) - - [gnome_sort](algorithms/sort/gnome_sort.py) - - [heap_sort](algorithms/sort/heap_sort.py) - - [insertion_sort](algorithms/sort/insertion_sort.py) - - [meeting_rooms](algorithms/sort/meeting_rooms.py) - - [merge_sort](algorithms/sort/merge_sort.py) - - [pancake_sort](algorithms/sort/pancake_sort.py) - - [pigeonhole_sort](algorithms/sort/pigeonhole_sort.py) - - [quick_sort](algorithms/sort/quick_sort.py) - - [radix_sort](algorithms/sort/radix_sort.py) - - [selection_sort](algorithms/sort/selection_sort.py) - - [shell_sort](algorithms/sort/shell_sort.py) - - [sort_colors](algorithms/sort/sort_colors.py) - - [stooge_sort](algorithms/sort/stooge_sort.py) - - [top_sort](algorithms/sort/top_sort.py) - - [wiggle_sort](algorithms/sort/wiggle_sort.py) -- [stack](algorithms/stack) - - [longest_abs_path](algorithms/stack/longest_abs_path.py) - - [simplify_path](algorithms/stack/simplify_path.py) - - [stack](algorithms/stack/stack.py) - - [valid_parenthesis](algorithms/stack/valid_parenthesis.py) - - [stutter](algorithms/stack/stutter.py) - - [switch_pairs](algorithms/stack/switch_pairs.py) - - [is_consecutive](algorithms/stack/is_consecutive.py) - - [remove_min](algorithms/stack/remove_min.py) - - [is_sorted](algorithms/stack/is_sorted.py) -- [streaming](algorithms/streaming) - - [1-sparse-recovery](algorithms/streaming/one_sparse_recovery.py) - - [misra-gries](algorithms/streaming/misra_gries.py) -- [strings](algorithms/strings) - - [fizzbuzz](algorithms/strings/fizzbuzz.py) - - [delete_reoccurring](algorithms/strings/delete_reoccurring.py) - - [strip_url_params](algorithms/strings/strip_url_params.py) - - [validate_coordinates](algorithms/strings/validate_coordinates.py) - - [domain_extractor](algorithms/strings/domain_extractor.py) - - [merge_string_checker](algorithms/strings/merge_string_checker.py) - - [add_binary](algorithms/strings/add_binary.py) - - [breaking_bad](algorithms/strings/breaking_bad.py) - - [decode_string](algorithms/strings/decode_string.py) - - [encode_decode](algorithms/strings/encode_decode.py) - - [group_anagrams](algorithms/strings/group_anagrams.py) - - [int_to_roman](algorithms/strings/int_to_roman.py) - - [is_palindrome](algorithms/strings/is_palindrome.py) - - [license_number](algorithms/strings/license_number.py) - - [make_sentence](algorithms/strings/make_sentence.py) - - [multiply_strings](algorithms/strings/multiply_strings.py) - - [one_edit_distance](algorithms/strings/one_edit_distance.py) - - [rabin_karp](algorithms/strings/rabin_karp.py) - - [reverse_string](algorithms/strings/reverse_string.py) - - [reverse_vowel](algorithms/strings/reverse_vowel.py) - - [reverse_words](algorithms/strings/reverse_words.py) - - [roman_to_int](algorithms/strings/roman_to_int.py) - - [word_squares](algorithms/strings/word_squares.py) - - [unique_morse](algorithms/strings/unique_morse.py) - - [judge_circle](algorithms/strings/judge_circle.py) - - [strong_password](algorithms/strings/strong_password.py) - - [caesar_cipher](algorithms/strings/caesar_cipher.py) - - [check_pangram](algorithms/strings/check_pangram.py) - - [contain_string](algorithms/strings/contain_string.py) - - [count_binary_substring](algorithms/strings/count_binary_substring.py) - - [repeat_string](algorithms/strings/repeat_string.py) - - [min_distance](algorithms/strings/min_distance.py) - - [longest_common_prefix](algorithms/strings/longest_common_prefix.py) - - [rotate](algorithms/strings/rotate.py) - - [first_unique_char](algorithms/strings/first_unique_char.py) - - [repeat_substring](algorithms/strings/repeat_substring.py) - - [atbash_cipher](algorithms/strings/atbash_cipher.py) - - [longest_palindromic_substring](algorithms/strings/longest_palindromic_substring.py) - - [knuth_morris_pratt](algorithms/strings/knuth_morris_pratt.py) - - [panagram](algorithms/strings/panagram.py) -- [tree](algorithms/tree) - - [bst](algorithms/tree/bst) - - [array_to_bst](algorithms/tree/bst/array_to_bst.py) - - [bst_closest_value](algorithms/tree/bst/bst_closest_value.py) - - [BSTIterator](algorithms/tree/bst/BSTIterator.py) - - [delete_node](algorithms/tree/bst/delete_node.py) - - [is_bst](algorithms/tree/bst/is_bst.py) - - [kth_smallest](algorithms/tree/bst/kth_smallest.py) - - [lowest_common_ancestor](algorithms/tree/bst/lowest_common_ancestor.py) - - [predecessor](algorithms/tree/bst/predecessor.py) - - [serialize_deserialize](algorithms/tree/bst/serialize_deserialize.py) - - [successor](algorithms/tree/bst/successor.py) - - [unique_bst](algorithms/tree/bst/unique_bst.py) - - [depth_sum](algorithms/tree/bst/depth_sum.py) - - [count_left_node](algorithms/tree/bst/count_left_node.py) - - [num_empty](algorithms/tree/bst/num_empty.py) - - [height](algorithms/tree/bst/height.py) - - [fenwick_tree](algorithms/tree/fenwick_tree/fenwick_tree.py) - - [red_black_tree](algorithms/tree/red_black_tree) - - [red_black_tree](algorithms/tree/red_black_tree/red_black_tree.py) - - [segment_tree](algorithms/tree/segment_tree) - - [segment_tree](algorithms/tree/segment_tree/segment_tree.py) - - [iterative_segment_tree](algorithms/tree/segment_tree/iterative_segment_tree.py) - - [traversal](algorithms/tree/traversal) - - [inorder](algorithms/tree/traversal/inorder.py) - - [level_order](algorithms/tree/traversal/level_order.py) - - [postorder](algorithms/tree/traversal/postorder.py) - - [preorder](algorithms/tree/traversal/preorder.py) - - [zigzag](algorithms/tree/traversal/zigzag.py) - - [trie](algorithms/tree/trie) - - [add_and_search](algorithms/tree/trie/add_and_search.py) - - [trie](algorithms/tree/trie/trie.py) - - [b_tree](algorithms/tree/b_tree.py) - - [binary_tree_paths](algorithms/tree/binary_tree_paths.py) - - [bin_tree_to_list](algorithms/tree/bin_tree_to_list.py) - - [construct_tree_preorder_postorder](algorithms/tree/construct_tree_postorder_preorder.py) - - [deepest_left](algorithms/tree/deepest_left.py) - - [invert_tree](algorithms/tree/invert_tree.py) - - [is_balanced](algorithms/tree/is_balanced.py) - - [is_subtree](algorithms/tree/is_subtree.py) - - [is_symmetric](algorithms/tree/is_symmetric.py) - - [longest_consecutive](algorithms/tree/longest_consecutive.py) - - [lowest_common_ancestor](algorithms/tree/lowest_common_ancestor.py) - - [max_height](algorithms/tree/max_height.py) - - [max_path_sum](algorithms/tree/max_path_sum.py) - - [min_height](algorithms/tree/min_height.py) - - [path_sum](algorithms/tree/path_sum.py) - - [path_sum2](algorithms/tree/path_sum2.py) - - [pretty_print](algorithms/tree/pretty_print.py) - - [same_tree](algorithms/tree/same_tree.py) - - [tree](algorithms/tree/tree.py) -- [unix](algorithms/unix) - - [path](algorithms/unix/path/) - - [join_with_slash](algorithms/unix/path/join_with_slash.py) - - [full_path](algorithms/unix/path/full_path.py) - - [split](algorithms/unix/path/split.py) - - [simplify_path](algorithms/unix/path/simplify_path.py) -- [unionfind](algorithms/unionfind) - - [count_islands](algorithms/unionfind/count_islands.py) - - -## Contributors - -Thanks to [all the contributors](https://github.com/keon/algorithms/graphs/contributors) -who helped in building the repo. +# Report for Assignment 1 + +## Project chosen + +Name: + +URL: + +Number of lines of code and the tool used to count it: + +Programming language: + +## Coverage measurement + +### Existing tool + + + + + +### Your own coverage tool + + + + + + + + + + + + + + + +## Coverage improvement + +### Individual tests + + + + + + + + + + + + + + + + + + + +### Overall + + + + + +## Statement of individual contributions + + diff --git a/README_original.md b/README_original.md new file mode 100644 index 000000000..25bf3bc03 --- /dev/null +++ b/README_original.md @@ -0,0 +1,424 @@ +[![PyPI version](https://badge.fury.io/py/algorithms.svg)](https://badge.fury.io/py/algorithms) +[![Open Source Helpers](https://www.codetriage.com/keon/algorithms/badges/users.svg)](https://www.codetriage.com/keon/algorithms) +[![Build Status](https://travis-ci.org/keon/algorithms.svg?branch=master)](https://travis-ci.org/keon/algorithms) +[![Coverage Status](https://coveralls.io/repos/github/keon/algorithms/badge.svg?branch=master)](https://coveralls.io/github/keon/algorithms?branch=master) + +

+ +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](CONTRIBUTING.md) + +## 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`) + +```python3 +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](algorithms/arrays) + - [delete_nth](algorithms/arrays/delete_nth.py) + - [flatten](algorithms/arrays/flatten.py) + - [garage](algorithms/arrays/garage.py) + - [josephus_problem](algorithms/arrays/josephus.py) + - [limit](algorithms/arrays/limit.py) + - [longest_non_repeat](algorithms/arrays/longest_non_repeat.py/) + - [max_ones_index](algorithms/arrays/max_ones_index.py) + - [merge_intervals](algorithms/arrays/merge_intervals.py) + - [missing_ranges](algorithms/arrays/missing_ranges.py) + - [plus_one](algorithms/arrays/plus_one.py) + - [remove_duplicates](algorithms/arrays/remove_duplicates.py) + - [rotate](algorithms/arrays/rotate.py) + - [summarize_ranges](algorithms/arrays/summarize_ranges.py) + - [three_sum](algorithms/arrays/three_sum.py) + - [trimmean](algorithms/arrays/trimmean.py) + - [top_1](algorithms/arrays/top_1.py) + - [two_sum](algorithms/arrays/two_sum.py) + - [move_zeros](algorithms/arrays/move_zeros.py) + - [n_sum](algorithms/arrays/n_sum.py) +- [greedy](algorithms/greedy/) + - [max_contiguous_subsequence_sum](algorithms/greedy/max_contiguous_subsequence_sum.py) +- [automata](algorithms/automata) + - [DFA](algorithms/automata/dfa.py) +- [backtrack](algorithms/backtrack) + - [general_solution.md](algorithms/backtrack/) + - [add_operators](algorithms/backtrack/add_operators.py) + - [anagram](algorithms/backtrack/anagram.py) + - [array_sum_combinations](algorithms/backtrack/array_sum_combinations.py) + - [combination_sum](algorithms/backtrack/combination_sum.py) + - [factor_combinations](algorithms/backtrack/factor_combinations.py) + - [generate_abbreviations](algorithms/backtrack/generate_abbreviations.py) + - [generate_parenthesis](algorithms/backtrack/generate_parenthesis.py) + - [letter_combination](algorithms/backtrack/letter_combination.py) + - [palindrome_partitioning](algorithms/backtrack/palindrome_partitioning.py) + - [pattern_match](algorithms/backtrack/pattern_match.py) + - [permute](algorithms/backtrack/permute.py) + - [permute_unique](algorithms/backtrack/permute_unique.py) + - [subsets](algorithms/backtrack/subsets.py) + - [subsets_unique](algorithms/backtrack/subsets_unique.py) +- [bfs](algorithms/bfs) + - [maze_search](algorithms/bfs/maze_search.py) + - [shortest_distance_from_all_buildings](algorithms/bfs/shortest_distance_from_all_buildings.py) + - [word_ladder](algorithms/bfs/word_ladder.py) +- [bit](algorithms/bit) + - [add_bitwise_operator](algorithms/bit/add_bitwise_operator.py) + - [bit_operation](algorithms/bit/bit_operation.py) + - [bytes_int_conversion](algorithms/bit/bytes_int_conversion.py) + - [count_flips_to_convert](algorithms/bit/count_flips_to_convert.py) + - [count_ones](algorithms/bit/count_ones.py) + - [find_difference](algorithms/bit/find_difference.py) + - [find_missing_number](algorithms/bit/find_missing_number.py) + - [flip_bit_longest_sequence](algorithms/bit/flip_bit_longest_sequence.py) + - [power_of_two](algorithms/bit/power_of_two.py) + - [reverse_bits](algorithms/bit/reverse_bits.py) + - [single_number](algorithms/bit/single_number.py) + - [single_number2](algorithms/bit/single_number2.py) + - [single_number3](algorithms/bit/single_number3.py) + - [subsets](algorithms/bit/subsets.py) + - [swap_pair](algorithms/bit/swap_pair.py) + - [has_alternative_bit](algorithms/bit/has_alternative_bit.py) + - [insert_bit](algorithms/bit/insert_bit.py) + - [remove_bit](algorithms/bit/remove_bit.py) + - [binary_gap](algorithms/bit/binary_gap.py) +- [compression](algorithms/compression) + - [huffman_coding](algorithms/compression/huffman_coding.py) + - [rle_compression](algorithms/compression/rle_compression.py) + - [elias](algorithms/compression/elias.py) +- [dfs](algorithms/dfs) + - [all_factors](algorithms/dfs/all_factors.py) + - [count_islands](algorithms/dfs/count_islands.py) + - [pacific_atlantic](algorithms/dfs/pacific_atlantic.py) + - [sudoku_solver](algorithms/dfs/sudoku_solver.py) + - [walls_and_gates](algorithms/dfs/walls_and_gates.py) +- [distribution](algorithms/distribution) + - [histogram](algorithms/distribution/histogram.py) +- [dp](algorithms/dp) + - [buy_sell_stock](algorithms/dp/buy_sell_stock.py) + - [climbing_stairs](algorithms/dp/climbing_stairs.py) + - [coin_change](algorithms/dp/coin_change.py) + - [combination_sum](algorithms/dp/combination_sum.py) + - [egg_drop](algorithms/dp/egg_drop.py) + - [house_robber](algorithms/dp/house_robber.py) + - [int_divide](algorithms/dp/int_divide.py) + - [job_scheduling](algorithms/dp/job_scheduling.py) + - [knapsack](algorithms/dp/knapsack.py) + - [longest_increasing](algorithms/dp/longest_increasing.py) + - [matrix_chain_order](algorithms/dp/matrix_chain_order.py) + - [max_product_subarray](algorithms/dp/max_product_subarray.py) + - [max_subarray](algorithms/dp/max_subarray.py) + - [min_cost_path](algorithms/dp/min_cost_path.py) + - [num_decodings](algorithms/dp/num_decodings.py) + - [regex_matching](algorithms/dp/regex_matching.py) + - [rod_cut](algorithms/dp/rod_cut.py) + - [word_break](algorithms/dp/word_break.py) + - [fibonacci](algorithms/dp/fib.py) + - [hosoya triangle](algorithms/dp/hosoya_triangle.py) + - [K-Factor_strings](algorithms/dp/k_factor.py) + - [planting_trees](algorithms/dp/planting_trees.py) +- [graph](algorithms/graph) + - [check_bipartite](algorithms/graph/check_bipartite.py) + - [strongly_connected](algorithms/graph/check_digraph_strongly_connected.py) + - [clone_graph](algorithms/graph/clone_graph.py) + - [cycle_detection](algorithms/graph/cycle_detection.py) + - [find_all_cliques](algorithms/graph/find_all_cliques.py) + - [find_path](algorithms/graph/find_path.py) + - [graph](algorithms/graph/graph.py) + - [dijkstra](algorithms/graph/dijkstra.py) + - [markov_chain](algorithms/graph/markov_chain.py) + - [minimum_spanning_tree](algorithms/graph/minimum_spanning_tree.py) + - [satisfiability](algorithms/graph/satisfiability.py) + - [minimum_spanning_tree_prims](algorithms/graph/prims_minimum_spanning.py) + - [tarjan](algorithms/graph/tarjan.py) + - [traversal](algorithms/graph/traversal.py) + - [maximum_flow](algorithms/graph/maximum_flow.py) + - [maximum_flow_bfs](algorithms/graph/maximum_flow_bfs.py) + - [maximum_flow_dfs](algorithms/graph/maximum_flow_dfs.py) + - [all_pairs_shortest_path](algorithms/graph/all_pairs_shortest_path.py) + - [bellman_ford](algorithms/graph/bellman_ford.py) + - [Count Connected Components](algorithms/graph/count_connected_number_of_component.py) +- [heap](algorithms/heap) + - [merge_sorted_k_lists](algorithms/heap/merge_sorted_k_lists.py) + - [skyline](algorithms/heap/skyline.py) + - [sliding_window_max](algorithms/heap/sliding_window_max.py) + - [binary_heap](algorithms/heap/binary_heap.py) + - [k_closest_points](algorithms/heap/k_closest_points.py) +- [linkedlist](algorithms/linkedlist) + - [add_two_numbers](algorithms/linkedlist/add_two_numbers.py) + - [copy_random_pointer](algorithms/linkedlist/copy_random_pointer.py) + - [delete_node](algorithms/linkedlist/delete_node.py) + - [first_cyclic_node](algorithms/linkedlist/first_cyclic_node.py) + - [is_cyclic](algorithms/linkedlist/is_cyclic.py) + - [is_palindrome](algorithms/linkedlist/is_palindrome.py) + - [kth_to_last](algorithms/linkedlist/kth_to_last.py) + - [linkedlist](algorithms/linkedlist/linkedlist.py) + - [remove_duplicates](algorithms/linkedlist/remove_duplicates.py) + - [reverse](algorithms/linkedlist/reverse.py) + - [rotate_list](algorithms/linkedlist/rotate_list.py) + - [swap_in_pairs](algorithms/linkedlist/swap_in_pairs.py) + - [is_sorted](algorithms/linkedlist/is_sorted.py) + - [remove_range](algorithms/linkedlist/remove_range.py) +- [map](algorithms/map) + - [hashtable](algorithms/map/hashtable.py) + - [separate_chaining_hashtable](algorithms/map/separate_chaining_hashtable.py) + - [longest_common_subsequence](algorithms/map/longest_common_subsequence.py) + - [longest_palindromic_subsequence](algorithms/map/longest_palindromic_subsequence.py) + - [randomized_set](algorithms/map/randomized_set.py) + - [valid_sudoku](algorithms/map/valid_sudoku.py) + - [word_pattern](algorithms/map/word_pattern.py) + - [is_isomorphic](algorithms/map/is_isomorphic.py) + - [is_anagram](algorithms/map/is_anagram.py) +- [maths](algorithms/maths) + - [base_conversion](algorithms/maths/base_conversion.py) + - [chinese_remainder_theorem](algorithms/maths/chinese_remainder_theorem.py) + - [combination](algorithms/maths/combination.py) + - [cosine_similarity](algorithms/maths/cosine_similarity.py) + - [decimal_to_binary_ip](algorithms/maths/decimal_to_binary_ip.py) + - [diffie_hellman_key_exchange](algorithms/maths/diffie_hellman_key_exchange.py) + - [euler_totient](algorithms/maths/euler_totient.py) + - [extended_gcd](algorithms/maths/extended_gcd.py) + - [factorial](algorithms/maths/factorial.py) + - [find_order](algorithms/maths/find_order_simple.py) + - [find_primitive_root](algorithms/maths/find_primitive_root_simple.py) + - [gcd/lcm](algorithms/maths/gcd.py) + - [generate_strobogrammtic](algorithms/maths/generate_strobogrammtic.py) + - [hailstone](algorithms/maths/hailstone.py) + - [is_strobogrammatic](algorithms/maths/is_strobogrammatic.py) + - [krishnamurthy_number](algorithms/maths/krishnamurthy_number.py) + - [magic_number](algorithms/maths/magic_number.py) + - [modular_exponential](algorithms/maths/modular_exponential.py) + - [modular_inverse](algorithms/maths/modular_inverse.py) + - [next_bigger](algorithms/maths/next_bigger.py) + - [next_perfect_square](algorithms/maths/next_perfect_square.py) + - [nth_digit](algorithms/maths/nth_digit.py) + - [num_perfect_squares](algorithms/maths/num_perfect_squares.py) + - [polynomial](algorithms/maths/polynomial.py) + - [power](algorithms/maths/power.py) + - [prime_check](algorithms/maths/prime_check.py) + - [primes_sieve_of_eratosthenes](algorithms/maths/primes_sieve_of_eratosthenes.py) + - [pythagoras](algorithms/maths/pythagoras.py) + - [rabin_miller](algorithms/maths/rabin_miller.py) + - [recursive_binomial_coefficient](algorithms/maths/recursive_binomial_coefficient.py) + - [rsa](algorithms/maths/rsa.py) + - [sqrt_precision_factor](algorithms/maths/sqrt_precision_factor.py) + - [summing_digits](algorithms/maths/summing_digits.py) + - [symmetry_group_cycle_index](algorithms/maths/symmetry_group_cycle_index.py) +- [matrix](algorithms/matrix) + - [sudoku_validator](algorithms/matrix/sudoku_validator.py) + - [bomb_enemy](algorithms/matrix/bomb_enemy.py) + - [copy_transform](algorithms/matrix/copy_transform.py) + - [count_paths](algorithms/matrix/count_paths.py) + - [matrix_exponentiation](algorithms/matrix/matrix_exponentiation.py) + - [matrix_inversion](algorithms/matrix/matrix_inversion.py) + - [matrix_multiplication](algorithms/matrix/multiply.py) + - [rotate_image](algorithms/matrix/rotate_image.py) + - [search_in_sorted_matrix](algorithms/matrix/search_in_sorted_matrix.py) + - [sparse_dot_vector](algorithms/matrix/sparse_dot_vector.py) + - [sparse_mul](algorithms/matrix/sparse_mul.py) + - [spiral_traversal](algorithms/matrix/spiral_traversal.py) + - [crout_matrix_decomposition](algorithms/matrix/crout_matrix_decomposition.py) + - [cholesky_matrix_decomposition](algorithms/matrix/cholesky_matrix_decomposition.py) + - [sum_sub_squares](algorithms/matrix/sum_sub_squares.py) + - [sort_matrix_diagonally](algorithms/matrix/sort_matrix_diagonally.py) +- [queues](algorithms/queues) + - [max_sliding_window](algorithms/queues/max_sliding_window.py) + - [moving_average](algorithms/queues/moving_average.py) + - [queue](algorithms/queues/queue.py) + - [reconstruct_queue](algorithms/queues/reconstruct_queue.py) + - [zigzagiterator](algorithms/queues/zigzagiterator.py) +- [search](algorithms/search) + - [binary_search](algorithms/search/binary_search.py) + - [first_occurrence](algorithms/search/first_occurrence.py) + - [last_occurrence](algorithms/search/last_occurrence.py) + - [linear_search](algorithms/search/linear_search.py) + - [search_insert](algorithms/search/search_insert.py) + - [two_sum](algorithms/search/two_sum.py) + - [search_range](algorithms/search/search_range.py) + - [find_min_rotate](algorithms/search/find_min_rotate.py) + - [search_rotate](algorithms/search/search_rotate.py) + - [jump_search](algorithms/search/jump_search.py) + - [next_greatest_letter](algorithms/search/next_greatest_letter.py) + - [interpolation_search](algorithms/search/interpolation_search.py) +- [set](algorithms/set) + - [randomized_set](algorithms/set/randomized_set.py) + - [set_covering](algorithms/set/set_covering.py) + - [find_keyboard_row](algorithms/set/find_keyboard_row.py) +- [sort](algorithms/sort) + - [bitonic_sort](algorithms/sort/bitonic_sort.py) + - [bogo_sort](algorithms/sort/bogo_sort.py) + - [bubble_sort](algorithms/sort/bubble_sort.py) + - [bucket_sort](algorithms/sort/bucket_sort.py) + - [cocktail_shaker_sort](algorithms/sort/cocktail_shaker_sort.py) + - [comb_sort](algorithms/sort/comb_sort.py) + - [counting_sort](algorithms/sort/counting_sort.py) + - [cycle_sort](algorithms/sort/cycle_sort.py) + - [exchange_sort](algorithms/sort/exchange_sort.py) + - [gnome_sort](algorithms/sort/gnome_sort.py) + - [heap_sort](algorithms/sort/heap_sort.py) + - [insertion_sort](algorithms/sort/insertion_sort.py) + - [meeting_rooms](algorithms/sort/meeting_rooms.py) + - [merge_sort](algorithms/sort/merge_sort.py) + - [pancake_sort](algorithms/sort/pancake_sort.py) + - [pigeonhole_sort](algorithms/sort/pigeonhole_sort.py) + - [quick_sort](algorithms/sort/quick_sort.py) + - [radix_sort](algorithms/sort/radix_sort.py) + - [selection_sort](algorithms/sort/selection_sort.py) + - [shell_sort](algorithms/sort/shell_sort.py) + - [sort_colors](algorithms/sort/sort_colors.py) + - [stooge_sort](algorithms/sort/stooge_sort.py) + - [top_sort](algorithms/sort/top_sort.py) + - [wiggle_sort](algorithms/sort/wiggle_sort.py) +- [stack](algorithms/stack) + - [longest_abs_path](algorithms/stack/longest_abs_path.py) + - [simplify_path](algorithms/stack/simplify_path.py) + - [stack](algorithms/stack/stack.py) + - [valid_parenthesis](algorithms/stack/valid_parenthesis.py) + - [stutter](algorithms/stack/stutter.py) + - [switch_pairs](algorithms/stack/switch_pairs.py) + - [is_consecutive](algorithms/stack/is_consecutive.py) + - [remove_min](algorithms/stack/remove_min.py) + - [is_sorted](algorithms/stack/is_sorted.py) +- [streaming](algorithms/streaming) + - [1-sparse-recovery](algorithms/streaming/one_sparse_recovery.py) + - [misra-gries](algorithms/streaming/misra_gries.py) +- [strings](algorithms/strings) + - [fizzbuzz](algorithms/strings/fizzbuzz.py) + - [delete_reoccurring](algorithms/strings/delete_reoccurring.py) + - [strip_url_params](algorithms/strings/strip_url_params.py) + - [validate_coordinates](algorithms/strings/validate_coordinates.py) + - [domain_extractor](algorithms/strings/domain_extractor.py) + - [merge_string_checker](algorithms/strings/merge_string_checker.py) + - [add_binary](algorithms/strings/add_binary.py) + - [breaking_bad](algorithms/strings/breaking_bad.py) + - [decode_string](algorithms/strings/decode_string.py) + - [encode_decode](algorithms/strings/encode_decode.py) + - [group_anagrams](algorithms/strings/group_anagrams.py) + - [int_to_roman](algorithms/strings/int_to_roman.py) + - [is_palindrome](algorithms/strings/is_palindrome.py) + - [license_number](algorithms/strings/license_number.py) + - [make_sentence](algorithms/strings/make_sentence.py) + - [multiply_strings](algorithms/strings/multiply_strings.py) + - [one_edit_distance](algorithms/strings/one_edit_distance.py) + - [rabin_karp](algorithms/strings/rabin_karp.py) + - [reverse_string](algorithms/strings/reverse_string.py) + - [reverse_vowel](algorithms/strings/reverse_vowel.py) + - [reverse_words](algorithms/strings/reverse_words.py) + - [roman_to_int](algorithms/strings/roman_to_int.py) + - [word_squares](algorithms/strings/word_squares.py) + - [unique_morse](algorithms/strings/unique_morse.py) + - [judge_circle](algorithms/strings/judge_circle.py) + - [strong_password](algorithms/strings/strong_password.py) + - [caesar_cipher](algorithms/strings/caesar_cipher.py) + - [check_pangram](algorithms/strings/check_pangram.py) + - [contain_string](algorithms/strings/contain_string.py) + - [count_binary_substring](algorithms/strings/count_binary_substring.py) + - [repeat_string](algorithms/strings/repeat_string.py) + - [min_distance](algorithms/strings/min_distance.py) + - [longest_common_prefix](algorithms/strings/longest_common_prefix.py) + - [rotate](algorithms/strings/rotate.py) + - [first_unique_char](algorithms/strings/first_unique_char.py) + - [repeat_substring](algorithms/strings/repeat_substring.py) + - [atbash_cipher](algorithms/strings/atbash_cipher.py) + - [longest_palindromic_substring](algorithms/strings/longest_palindromic_substring.py) + - [knuth_morris_pratt](algorithms/strings/knuth_morris_pratt.py) + - [panagram](algorithms/strings/panagram.py) +- [tree](algorithms/tree) + - [bst](algorithms/tree/bst) + - [array_to_bst](algorithms/tree/bst/array_to_bst.py) + - [bst_closest_value](algorithms/tree/bst/bst_closest_value.py) + - [BSTIterator](algorithms/tree/bst/BSTIterator.py) + - [delete_node](algorithms/tree/bst/delete_node.py) + - [is_bst](algorithms/tree/bst/is_bst.py) + - [kth_smallest](algorithms/tree/bst/kth_smallest.py) + - [lowest_common_ancestor](algorithms/tree/bst/lowest_common_ancestor.py) + - [predecessor](algorithms/tree/bst/predecessor.py) + - [serialize_deserialize](algorithms/tree/bst/serialize_deserialize.py) + - [successor](algorithms/tree/bst/successor.py) + - [unique_bst](algorithms/tree/bst/unique_bst.py) + - [depth_sum](algorithms/tree/bst/depth_sum.py) + - [count_left_node](algorithms/tree/bst/count_left_node.py) + - [num_empty](algorithms/tree/bst/num_empty.py) + - [height](algorithms/tree/bst/height.py) + - [fenwick_tree](algorithms/tree/fenwick_tree/fenwick_tree.py) + - [red_black_tree](algorithms/tree/red_black_tree) + - [red_black_tree](algorithms/tree/red_black_tree/red_black_tree.py) + - [segment_tree](algorithms/tree/segment_tree) + - [segment_tree](algorithms/tree/segment_tree/segment_tree.py) + - [iterative_segment_tree](algorithms/tree/segment_tree/iterative_segment_tree.py) + - [traversal](algorithms/tree/traversal) + - [inorder](algorithms/tree/traversal/inorder.py) + - [level_order](algorithms/tree/traversal/level_order.py) + - [postorder](algorithms/tree/traversal/postorder.py) + - [preorder](algorithms/tree/traversal/preorder.py) + - [zigzag](algorithms/tree/traversal/zigzag.py) + - [trie](algorithms/tree/trie) + - [add_and_search](algorithms/tree/trie/add_and_search.py) + - [trie](algorithms/tree/trie/trie.py) + - [b_tree](algorithms/tree/b_tree.py) + - [binary_tree_paths](algorithms/tree/binary_tree_paths.py) + - [bin_tree_to_list](algorithms/tree/bin_tree_to_list.py) + - [construct_tree_preorder_postorder](algorithms/tree/construct_tree_postorder_preorder.py) + - [deepest_left](algorithms/tree/deepest_left.py) + - [invert_tree](algorithms/tree/invert_tree.py) + - [is_balanced](algorithms/tree/is_balanced.py) + - [is_subtree](algorithms/tree/is_subtree.py) + - [is_symmetric](algorithms/tree/is_symmetric.py) + - [longest_consecutive](algorithms/tree/longest_consecutive.py) + - [lowest_common_ancestor](algorithms/tree/lowest_common_ancestor.py) + - [max_height](algorithms/tree/max_height.py) + - [max_path_sum](algorithms/tree/max_path_sum.py) + - [min_height](algorithms/tree/min_height.py) + - [path_sum](algorithms/tree/path_sum.py) + - [path_sum2](algorithms/tree/path_sum2.py) + - [pretty_print](algorithms/tree/pretty_print.py) + - [same_tree](algorithms/tree/same_tree.py) + - [tree](algorithms/tree/tree.py) +- [unix](algorithms/unix) + - [path](algorithms/unix/path/) + - [join_with_slash](algorithms/unix/path/join_with_slash.py) + - [full_path](algorithms/unix/path/full_path.py) + - [split](algorithms/unix/path/split.py) + - [simplify_path](algorithms/unix/path/simplify_path.py) +- [unionfind](algorithms/unionfind) + - [count_islands](algorithms/unionfind/count_islands.py) + + +## Contributors + +Thanks to [all the contributors](https://github.com/keon/algorithms/graphs/contributors) +who helped in building the repo. From bbce1bde5f8c3481469da796f8e910752e4e2f10 Mon Sep 17 00:00:00 2001 From: aymanpopje Date: Thu, 13 Jun 2024 13:53:27 +0200 Subject: [PATCH 02/10] Added missing comma in "test_array.py" --- tests/test_array.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_array.py b/tests/test_array.py index f1ad11693..b73ecb17b 100644 --- a/tests/test_array.py +++ b/tests/test_array.py @@ -9,7 +9,7 @@ missing_ranges, move_zeros, plus_one_v1, plus_one_v2, plus_one_v3, - remove_duplicates + remove_duplicates, rotate_v1, rotate_v2, rotate_v3, summarize_ranges, three_sum, From a2036f5c55c4e88773cc8835afff30068d157a9a Mon Sep 17 00:00:00 2001 From: aymanpopje Date: Fri, 14 Jun 2024 12:00:55 +0200 Subject: [PATCH 03/10] Created script for measuring doing tests and measuring branch coverage. (branch-coverage.py. Requires coverage.py is installed) Made test scripts not count towards branch coverage --- .coveragerc | 1 + branch-coverage.py | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 branch-coverage.py diff --git a/.coveragerc b/.coveragerc index a5f7fcee8..c42e2db7a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,5 +1,6 @@ [report] omit = + */tests/* */python?.?/* */site-packages/nose/* *__init__* diff --git a/branch-coverage.py b/branch-coverage.py new file mode 100644 index 000000000..04ab54c8f --- /dev/null +++ b/branch-coverage.py @@ -0,0 +1,4 @@ +import subprocess + +subprocess.run(["coverage", "run", "--branch", "-m", "pytest", "tests"]) +subprocess.run(["coverage", "report"]) \ No newline at end of file From f4553247e1f6104c6fa5c9c74a65685796f8f5be Mon Sep 17 00:00:00 2001 From: aymanpopje Date: Fri, 14 Jun 2024 13:47:00 +0200 Subject: [PATCH 04/10] Improved test_unix.py by adding new test cases for "test_simplify_path" --- README.md | 8 ++++---- tests/test_unix.py | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fd8293229..20bc8d423 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ ## Project chosen -Name: +Name: algorithms -URL: +URL: (https://github.com/keon/algorithms) -Number of lines of code and the tool used to count it: +Number of lines of code and the tool used to count it: (TODO), counted using lizard -Programming language: +Programming language: Python ## Coverage measurement diff --git a/tests/test_unix.py b/tests/test_unix.py index 3cafba98f..70163de9c 100644 --- a/tests/test_unix.py +++ b/tests/test_unix.py @@ -42,7 +42,23 @@ def test_split(self): self.assertEqual("test.py", expect_result[1]) def test_simplify_path(self): - self.assertEqual("/", simplify_path_v1("/../")) - self.assertEqual("/home/foo", simplify_path_v1("/home//foo/")) + root = None + pathsep = None + drive = None + if os.name == 'nt': + root = "" # Assumed to be ran on the C drive + pathsep = "\\" + drive = "C:\\" + elif os.name == 'posix': + root = "/" + pathsep = "/" + drive = "" + + self.assertEqual(drive + root, simplify_path_v1("/../")) + self.assertEqual(drive + root + pathsep.join(["home", "foo"]), simplify_path_v1("/home//foo/")) + + self.assertEqual("/", simplify_path_v2(".")) self.assertEqual("/", simplify_path_v2("/../")) self.assertEqual("/home/foo", simplify_path_v2("/home//foo/")) + self.assertEqual("/", simplify_path_v2("")) + self.assertEqual("/", simplify_path_v2("/home/../")) From 22ee6fa1df4785596c603af61a725c558973eb0b Mon Sep 17 00:00:00 2001 From: aymanpopje Date: Sat, 15 Jun 2024 13:58:36 +0200 Subject: [PATCH 05/10] Instrumented "simplify_path_v2" Reported changes into README.md Enhanced test "test_simplify_path" to imrpove branch coverage for "simplify_path_v2" (24% -> 100%) --- README.md | 18 ++++++++++++++++++ algorithms/unix/path/simplify_path.py | 15 +++++++++++++++ image-1.png | Bin 0 -> 33780 bytes image-2.png | Bin 0 -> 35717 bytes image.png | Bin 0 -> 93217 bytes tests/test_unix.py | 6 ++++++ 6 files changed, 39 insertions(+) create mode 100644 image-1.png create mode 100644 image-2.png create mode 100644 image.png diff --git a/README.md b/README.md index 20bc8d423..f68ccbe5b 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,24 @@ Programming language: Python + + + + +Old coverage:
+![old coverage result (24%)](image-2.png) + +Diff (LHS = new code, RHS = old code):
+![LHS: new code, RHS: old code (i had pushed the code before screenshotting it, oops)](image.png) + +New coverage:
+![new coverage result (100%)](image-1.png) + +The coverage was improved because certain cases that could happen in file paths (e.g. the "." directory, empty path) were not tested for. +By added additional tests that use such cases, the coverage improved. + +The test was also faulty on windows (i guess linux was assumed), so i added support for that in the test. (It now passes on Windows 10 too) + ### Overall diff --git a/algorithms/unix/path/simplify_path.py b/algorithms/unix/path/simplify_path.py index 8880fc0c6..7cf773cb0 100644 --- a/algorithms/unix/path/simplify_path.py +++ b/algorithms/unix/path/simplify_path.py @@ -15,6 +15,12 @@ Reference: https://leetcode.com/problems/simplify-path/description/ """ +branch_coverage = { + "for": False, + "if": False, + "elif": False, +} + import os def simplify_path_v1(path): return os.path.abspath(path) @@ -22,8 +28,17 @@ def simplify_path_v1(path): def simplify_path_v2(path): stack, tokens = [], path.split("/") for token in tokens: + branch_coverage["for"] = True if token == ".." and stack: + branch_coverage["if"] = True stack.pop() elif token != ".." and token != "." and token: + branch_coverage["elif"] = True stack.append(token) + return "/" + "/".join(stack) + +def print_coverage(): + print("branch coverage for `simplify_path_v2`:") + for branch, hit in branch_coverage.items(): + print(f"{branch} was {'hit' if hit else 'not hit'}") \ No newline at end of file diff --git a/image-1.png b/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7071337a21501605dd2bc0a3ed3294694c123ec7 GIT binary patch literal 33780 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�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 literal 0 HcmV?d00001 diff --git a/image-2.png b/image-2.png new file mode 100644 index 0000000000000000000000000000000000000000..77702129e06a1e381b624257425f49ac0ef01669 GIT binary patch literal 35717 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 z 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 Date: Sat, 15 Jun 2024 15:00:49 +0200 Subject: [PATCH 06/10] Instrumented "insertion_sort" Added "test_actual_insertion_sort" to test "insertion_sort" (coverage: 4% -> 85%) Added partial changes to report (Diff screenshot not yet added) --- README.md | 18 +++++++++++++++++- algorithms/sort/insertion_sort.py | 17 +++++++++++++++++ image-3.png | Bin 0 -> 34070 bytes image-4.png | Bin 0 -> 25598 bytes tests/test_sort.py | 14 +++++++++++++- 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 image-3.png create mode 100644 image-4.png diff --git a/README.md b/README.md index f68ccbe5b..c0f3e2c82 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,9 @@ Programming language: Python - +#### + +An enhanced existing test Old coverage:
![old coverage result (24%)](image-2.png) @@ -74,6 +76,20 @@ By added additional tests that use such cases, the coverage improved. The test was also faulty on windows (i guess linux was assumed), so i added support for that in the test. (It now passes on Windows 10 too) +#### + +An new test. (before, `insertion_sort` was not present in any test) + + + +Old coverage:
+![Old coverage result (4%)](image-3.png) + +New coverage:
+![alt text](image-4.png) + + + ### Overall diff --git a/algorithms/sort/insertion_sort.py b/algorithms/sort/insertion_sort.py index 06c86228d..79e2bbd20 100644 --- a/algorithms/sort/insertion_sort.py +++ b/algorithms/sort/insertion_sort.py @@ -1,3 +1,10 @@ +branch_coverage = { + "simulation": False, + "for": False, + "while": False, + "simulation-nested": False, +} + def insertion_sort(arr, simulation=False): """ Insertion Sort Complexity: O(n^2) @@ -5,13 +12,16 @@ def insertion_sort(arr, simulation=False): iteration = 0 if simulation: + branch_coverage["simulation"] = True print("iteration",iteration,":",*arr) for i in range(len(arr)): + branch_coverage["for"] = True cursor = arr[i] pos = i while pos > 0 and arr[pos - 1] > cursor: + branch_coverage["while"] = True # Swap the number down the list arr[pos] = arr[pos - 1] pos = pos - 1 @@ -19,7 +29,14 @@ def insertion_sort(arr, simulation=False): arr[pos] = cursor if simulation: + branch_coverage["simulation-nested"] = True iteration = iteration + 1 print("iteration",iteration,":",*arr) return arr + +def print_coverage(): + print("branch coverage for `insertion_sort`:") + for branch, hit in branch_coverage.items(): + print(f"{branch} was {'hit' if hit else 'not hit'}") + diff --git a/image-3.png b/image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..61fc9d07435120749a4f7a8403524d9d4ada1aab GIT binary patch literal 34070 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 literal 0 HcmV?d00001 diff --git a/image-4.png b/image-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5c606941ccaad4b1e6ed968e6dbe18577f3da0 GIT binary patch literal 25598 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 F{{Ykq-zoqA literal 0 HcmV?d00001 diff --git a/tests/test_sort.py b/tests/test_sort.py index c80290fdf..c01b11740 100644 --- a/tests/test_sort.py +++ b/tests/test_sort.py @@ -17,7 +17,9 @@ radix_sort, gnome_sort, cocktail_shaker_sort, - top_sort, top_sort_recursive + top_sort, top_sort_recursive, + + insertion_sort ) import unittest @@ -68,9 +70,19 @@ def test_heap_sort(self): self.assertTrue(is_sorted(min_heap_sort([1, 3, 2, 5, 65, 23, 57, 1232]))) + # HUH? `test_insertion_sort` tests `bitonic_sort` ???? def test_insertion_sort(self): self.assertTrue(is_sorted(bitonic_sort([1, 3, 2, 5, 65, 23, 57, 1232]))) + + def test_actual_insertion_sort(self): + self.assertTrue(is_sorted(insertion_sort([]))) + self.assertTrue(is_sorted(insertion_sort([1]))) + self.assertTrue(is_sorted(insertion_sort([69, 420]))) + self.assertTrue(is_sorted(insertion_sort([420, 69]))) + self.assertTrue(is_sorted(insertion_sort([0, 1, 2, 3, 4, 3, 2, 1, 0]))) + self.assertTrue(is_sorted(insertion_sort([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], True))) + self.assertTrue(is_sorted(insertion_sort([0, 1, 2, 3, 4, 3, 2, 1, 0], True))) def test_merge_sort(self): self.assertTrue(is_sorted(merge_sort([1, 3, 2, 5, 65, 23, 57, 1232]))) From 3a34eadcce3c98cdf5e837d0784a1659c2253c45 Mon Sep 17 00:00:00 2001 From: aymanpopje Date: Sat, 15 Jun 2024 15:04:45 +0200 Subject: [PATCH 07/10] Added Diff of new and old code to README.md --- README.md | 8 ++++++-- image-5.png | Bin 0 -> 66535 bytes image-6.png | Bin 0 -> 11221 bytes tests/test_sort.py | 14 +------------- 4 files changed, 7 insertions(+), 15 deletions(-) create mode 100644 image-5.png create mode 100644 image-6.png diff --git a/README.md b/README.md index c0f3e2c82..28937efbd 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Old coverage:
![old coverage result (24%)](image-2.png) Diff (LHS = new code, RHS = old code):
-![LHS: new code, RHS: old code (i had pushed the code before screenshotting it, oops)](image.png) +![LHS: new code, RHS: old code](image.png) New coverage:
![new coverage result (100%)](image-1.png) @@ -80,7 +80,11 @@ The test was also faulty on windows (i guess linux was assumed), so i added supp An new test. (before, `insertion_sort` was not present in any test) - +Diff (LHS: new code, RHS: old code):
+(New test)
+![LHS: new code, RHS: old code](image-5.png)
+(Changes in imports)
+![LHS: new code, RHS: old code](image-6.png) Old coverage:
![Old coverage result (4%)](image-3.png) diff --git a/image-5.png b/image-5.png new file mode 100644 index 0000000000000000000000000000000000000000..e65d38265242c0b3b64314e697c8e39b42ca1e83 GIT binary patch literal 66535 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
+9zlY+8 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 literal 0 HcmV?d00001 diff --git a/tests/test_sort.py b/tests/test_sort.py index c01b11740..c80290fdf 100644 --- a/tests/test_sort.py +++ b/tests/test_sort.py @@ -17,9 +17,7 @@ radix_sort, gnome_sort, cocktail_shaker_sort, - top_sort, top_sort_recursive, - - insertion_sort + top_sort, top_sort_recursive ) import unittest @@ -70,19 +68,9 @@ def test_heap_sort(self): self.assertTrue(is_sorted(min_heap_sort([1, 3, 2, 5, 65, 23, 57, 1232]))) - # HUH? `test_insertion_sort` tests `bitonic_sort` ???? def test_insertion_sort(self): self.assertTrue(is_sorted(bitonic_sort([1, 3, 2, 5, 65, 23, 57, 1232]))) - - def test_actual_insertion_sort(self): - self.assertTrue(is_sorted(insertion_sort([]))) - self.assertTrue(is_sorted(insertion_sort([1]))) - self.assertTrue(is_sorted(insertion_sort([69, 420]))) - self.assertTrue(is_sorted(insertion_sort([420, 69]))) - self.assertTrue(is_sorted(insertion_sort([0, 1, 2, 3, 4, 3, 2, 1, 0]))) - self.assertTrue(is_sorted(insertion_sort([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], True))) - self.assertTrue(is_sorted(insertion_sort([0, 1, 2, 3, 4, 3, 2, 1, 0], True))) def test_merge_sort(self): self.assertTrue(is_sorted(merge_sort([1, 3, 2, 5, 65, 23, 57, 1232]))) From 60832d9c672efd586848077cc41a52630d34371b Mon Sep 17 00:00:00 2001 From: bodda93 Date: Thu, 20 Jun 2024 21:31:47 +0200 Subject: [PATCH 08/10] pythagoras test_maths --- tests/test_maths.py | 61 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/tests/test_maths.py b/tests/test_maths.py index c4a54af03..8d6e5f383 100644 --- a/tests/test_maths.py +++ b/tests/test_maths.py @@ -1,3 +1,6 @@ +from algorithms.maths.prime_check import prime_check, print_coverage +import unittest + from algorithms.maths import ( power, power_recur, int_to_base, base_to_int, @@ -276,17 +279,45 @@ class TestPrimeTest(unittest.TestCase): Arguments: unittest {[type]} -- [description] """ + - def test_prime_test(self): + def test_prime_numbers(self): """ - checks all prime numbers between 2 up to 100. - Between 2 up to 100 exists 25 prime numbers! + Checks specific prime numbers between 2 up to 100. """ - counter = 0 - for i in range(2, 101): - if prime_check(i): - counter += 1 - self.assertEqual(25, counter) + primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] + for prime in primes: + with self.subTest(n=prime): + self.assertTrue(prime_check(prime), f"{prime} should be prime") + + def test_non_prime_numbers(self): + """ + Checks specific non-prime numbers between 2 up to 100. + """ + non_primes = [4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100] + for non_prime in non_primes: + with self.subTest(n=non_prime): + self.assertFalse(prime_check(non_prime), f"{non_prime} should not be prime") + + def test_prime_check_coverage(self): + """ + Additional checks to cover all branches in prime_check function. + """ + self.assertFalse(prime_check(-1), "-1 should not be prime") # Branch 1 + self.assertFalse(prime_check(0), "0 should not be prime") # Branch 1 + self.assertFalse(prime_check(1), "1 should not be prime") # Branch 1 + self.assertTrue(prime_check(2), "2 should be prime") # Branch 2 + self.assertTrue(prime_check(3), "3 should be prime") # Branch 2 + self.assertFalse(prime_check(4), "4 should not be prime") # Branch 3 + self.assertFalse(prime_check(9), "9 should not be prime") # Branch 3 + self.assertFalse(prime_check(15), "15 should not be prime") # Branch 3, 4, 5 + self.assertTrue(prime_check(5), "5 should be prime") # Branch 4 + self.assertTrue(prime_check(7), "7 should be prime") # Branch 4 + self.assertFalse(prime_check(25), "25 should not be prime") # Branch 5 + self.assertFalse(prime_check(49), "49 should not be prime") # Branch 5 + self.assertFalse(prime_check(50), "50 should not be prime") # Branch 3 + self.assertTrue(prime_check(97), "97 should be prime") # Branch 4 + class TestPythagoras(unittest.TestCase): @@ -301,6 +332,16 @@ def test_pythagoras(self): self.assertEqual("Hypotenuse = 3.605551275463989", pythagoras(3, 2, "?")) + def test_opposite_calculation(self): + result = pythagoras("?", 4, 5) + expected = "Opposite = 3.0" + self.assertEqual(result, expected) + + def test_adjacent_calculation(self): + result = pythagoras(3, "?", 5) + expected = "Adjacent = 4.0" + self.assertEqual(result, expected) + class TestRabinMiller(unittest.TestCase): """[summary] @@ -434,10 +475,12 @@ class TestFindOrder(unittest.TestCase): """ def test_find_order_simple(self): - self.assertEqual(1, find_order(1, 1)) + self.assertEqual(1, find_order(1, 1)) # Should hit branch_1 self.assertEqual(6, find_order(3, 7)) self.assertEqual(-1, find_order(128, 256)) self.assertEqual(352, find_order(3, 353)) + self.assertEqual(-1, find_order(10, 20)) # Should hit branches 2, 3, 5 + class TestKrishnamurthyNumber(unittest.TestCase): From 5651abafebe8ae3a5ea63e74883bb991acf19303 Mon Sep 17 00:00:00 2001 From: bodda93 Date: Thu, 20 Jun 2024 21:54:05 +0200 Subject: [PATCH 09/10] first_unique_function --- algorithms/maths/find_order_simple.py | 25 ++++++++++++++++++++ algorithms/maths/prime_check.py | 25 ++++++++++++++++++++ algorithms/maths/pythagoras.py | 28 +++++++++++++++++++++++ algorithms/search/interpolation_search.py | 23 ++++++++++++++++++- tests/test_search.py | 17 +++++++++++++- tests/test_strings.py | 1 + 6 files changed, 117 insertions(+), 2 deletions(-) diff --git a/algorithms/maths/find_order_simple.py b/algorithms/maths/find_order_simple.py index 8f69773c7..732fcae62 100644 --- a/algorithms/maths/find_order_simple.py +++ b/algorithms/maths/find_order_simple.py @@ -11,17 +11,42 @@ import math +branch_coverage = { + "branch_6": False, + "branch_7": False, + "branch_8": False, + "branch_9": False, + "branch_10": False +} + def find_order(a, n): """ Find order for positive integer n and given integer a that satisfies gcd(a, n) = 1. """ + if (a == 1) & (n == 1): # Exception Handeling : 1 is the order of of 1 + branch_coverage["branch_6"] = True + print("branch_6") return 1 if math.gcd(a, n) != 1: + branch_coverage["branch_7"] = True + print("branch_7") print ("a and n should be relative prime!") return -1 for i in range(1, n): + branch_coverage["branch_8"] = True + print("branch_8") if pow(a, i) % n == 1: + branch_coverage["branch_9"] = True + print("branch_9") return i + branch_coverage["branch_10"] = True + print("branch_10") return -1 + +def print_coverage(): + for branch, hit in branch_coverage.items(): + print(f"{branch} was {'hit' if hit else 'not hit'}") + +print_coverage() \ No newline at end of file diff --git a/algorithms/maths/prime_check.py b/algorithms/maths/prime_check.py index 60e4427ab..532f7afba 100644 --- a/algorithms/maths/prime_check.py +++ b/algorithms/maths/prime_check.py @@ -1,17 +1,42 @@ +branch_coverage = { + "branch_1": False, # n <= 1 + "branch_2": False, # n == 2 or n == 3 + "branch_3": False, # n % 2 == 0 or n % 3 == 0 + "branch_4": False, # while j * j <= n + "branch_5": False # n % j == 0 or n % (j + 2) == 0 +} def prime_check(n): """Return True if n is a prime number Else return False. """ + print(f"Checking {n}") # Debugging statement if n <= 1: + branch_coverage["branch_1"] = True + print("branch_1") return False + if n == 2 or n == 3: + branch_coverage["branch_2"] = True + print("branch_2") return True if n % 2 == 0 or n % 3 == 0: + branch_coverage["branch_3"] = True + print("branch_3") return False j = 5 while j * j <= n: + branch_coverage["branch_4"] = True + print("branch_4") if n % j == 0 or n % (j + 2) == 0: + branch_coverage["branch_5"] = True + print("branch_5") return False j += 6 return True + +def print_coverage(): + for branch, hit in branch_coverage.items(): + print(f"{branch} was {'hit' if hit else 'not hit'}") + +print_coverage() diff --git a/algorithms/maths/pythagoras.py b/algorithms/maths/pythagoras.py index b24b682ac..f67f1a99e 100644 --- a/algorithms/maths/pythagoras.py +++ b/algorithms/maths/pythagoras.py @@ -2,6 +2,13 @@ Given the lengths of two of the three sides of a right angled triangle, this function returns the length of the third side. """ +branch_coverage = { + "branch_1": False, + "branch_2": False, + "branch_3": False, + "branch_4": False, + #"branch_5": False +} def pythagoras(opposite, adjacent, hypotenuse): """ @@ -10,11 +17,32 @@ def pythagoras(opposite, adjacent, hypotenuse): """ try: if opposite == str("?"): + branch_coverage["branch_1"] = True + print("branch_1") return ("Opposite = " + str(((hypotenuse**2) - (adjacent**2))**0.5)) if adjacent == str("?"): + branch_coverage["branch_2"] = True + print("branch_2") return ("Adjacent = " + str(((hypotenuse**2) - (opposite**2))**0.5)) if hypotenuse == str("?"): + branch_coverage["branch_3"] = True + print("branch_3") return ("Hypotenuse = " + str(((opposite**2) + (adjacent**2))**0.5)) + branch_coverage["branch_4"] = True + print("branch_4") return "You already know the answer!" except: + # branch_coverage["branch_5"] = True + # print("branch_5") raise ValueError("invalid argument(s) were given.") + +def print_coverage(): + for branch, hit in branch_coverage.items(): + print(f"{branch} was {'hit' if hit else 'not hit'}") + +print_coverage() + +# total = len(branch_coverage) +# reached_branches = sum(branch_coverage.values()) +# percentage = (reached_branches/total)*100 +# print_coverage() diff --git a/algorithms/search/interpolation_search.py b/algorithms/search/interpolation_search.py index 5b1d00a1a..98a405431 100644 --- a/algorithms/search/interpolation_search.py +++ b/algorithms/search/interpolation_search.py @@ -13,6 +13,15 @@ from typing import List +branch_coverage = { + "branch_60": False, + "branch_61": False, + "branch_62": False, + "branch_63": False, + "branch_64": False, + +} + def interpolation_search(array: List[int], search_key: int) -> int: """ @@ -38,24 +47,36 @@ def interpolation_search(array: List[int], search_key: int) -> int: while (low <= high) and (array[low] <= search_key <= array[high]): # calculate the search position + branch_coverage["branch_60"] = True pos = low + int(((search_key - array[low]) * (high - low) / (array[high] - array[low]))) # search_key is found if array[pos] == search_key: + branch_coverage["branch_61"] = True return pos # if search_key is larger, search_key is in upper part if array[pos] < search_key: + branch_coverage["branch_62"] = True low = pos + 1 # if search_key is smaller, search_key is in lower part else: + branch_coverage["branch_63"] = True high = pos - 1 - + + branch_coverage["branch_64"] = True return -1 +def print_coverage(): + for branch, hit in branch_coverage.items(): + print(f"{branch} was {'hit' if hit else 'not hit'}") + + if __name__ == "__main__": import doctest doctest.testmod() +print_coverage() + diff --git a/tests/test_search.py b/tests/test_search.py index f515cfcb9..5b6636da5 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -139,13 +139,28 @@ def test_next_greatest_letter(self): self.assertEqual("c", next_greatest_letter_v2(letters, target)) def test_interpolation_search(self): - array = [0, 3, 5, 5, 9, 12, 12, 15, 16, 19, 20] + array = [0, 3, 5, 5, 9, 12, 12, 15, 16, 19, 20, 25] + #, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] + + # array = [0, 3, 5, 5, 9, 12, 12, 15, 16, 19, 20, 25] self.assertEqual(1, interpolation_search(array, 3)) self.assertEqual(2, interpolation_search(array, 5)) self.assertEqual(6, interpolation_search(array, 12)) self.assertEqual(-1, interpolation_search(array, 22)) self.assertEqual(-1, interpolation_search(array, -10)) self.assertEqual(10, interpolation_search(array, 20)) + + # self.assertEqual(-1, interpolation_search(array, 1)) + # self.assertEqual(0, interpolation_search(array, 0)) # Found at the start + # self.assertEqual(interpolation_search(array, 12), 5) # Found in the middle, first occurrence + # self.assertEqual(-1, interpolation_search(array, 110)) # Not found, above maximum + # self.assertEqual(interpolation_search(array, 55), 17) # Found in the middle + # self.assertEqual(interpolation_search(array, 70), 20) # Found, single value in range + # self.assertEqual(interpolation_search(array, 22), -1) # Not found, above the range + # self.assertEqual(interpolation_search(array, 50), 16) # Found, single value in range + # self.assertEqual(interpolation_search(array, 45), 15) # Found, single value in range + + if __name__ == '__main__': diff --git a/tests/test_strings.py b/tests/test_strings.py index e7a68302a..7e0573fc4 100644 --- a/tests/test_strings.py +++ b/tests/test_strings.py @@ -568,6 +568,7 @@ class TestFirstUniqueChar(unittest.TestCase): def test_first_unique_char(self): self.assertEqual(0, first_unique_char("leetcode")) self.assertEqual(2, first_unique_char("loveleetcode")) + self.assertEqual(-1, first_unique_char("aabb")) class TestRepeatSubstring(unittest.TestCase): From 6f8f4dd8cffe4970fb01cdb53658676a0b52d05a Mon Sep 17 00:00:00 2001 From: bodda93 Date: Fri, 21 Jun 2024 09:30:21 +0200 Subject: [PATCH 10/10] Abdullah --- algorithms/maths/find_order_simple.py | 26 +---------------------- algorithms/maths/prime_check.py | 26 ----------------------- algorithms/search/interpolation_search.py | 20 ----------------- tests/test_search.py | 15 +------------ 4 files changed, 2 insertions(+), 85 deletions(-) diff --git a/algorithms/maths/find_order_simple.py b/algorithms/maths/find_order_simple.py index 732fcae62..ab710c1b9 100644 --- a/algorithms/maths/find_order_simple.py +++ b/algorithms/maths/find_order_simple.py @@ -11,14 +11,6 @@ import math -branch_coverage = { - "branch_6": False, - "branch_7": False, - "branch_8": False, - "branch_9": False, - "branch_10": False -} - def find_order(a, n): """ Find order for positive integer n and given integer a that satisfies gcd(a, n) = 1. @@ -26,27 +18,11 @@ def find_order(a, n): if (a == 1) & (n == 1): # Exception Handeling : 1 is the order of of 1 - branch_coverage["branch_6"] = True - print("branch_6") return 1 if math.gcd(a, n) != 1: - branch_coverage["branch_7"] = True - print("branch_7") print ("a and n should be relative prime!") return -1 for i in range(1, n): - branch_coverage["branch_8"] = True - print("branch_8") if pow(a, i) % n == 1: - branch_coverage["branch_9"] = True - print("branch_9") return i - branch_coverage["branch_10"] = True - print("branch_10") - return -1 - -def print_coverage(): - for branch, hit in branch_coverage.items(): - print(f"{branch} was {'hit' if hit else 'not hit'}") - -print_coverage() \ No newline at end of file + return -1 \ No newline at end of file diff --git a/algorithms/maths/prime_check.py b/algorithms/maths/prime_check.py index 532f7afba..230464973 100644 --- a/algorithms/maths/prime_check.py +++ b/algorithms/maths/prime_check.py @@ -1,42 +1,16 @@ -branch_coverage = { - "branch_1": False, # n <= 1 - "branch_2": False, # n == 2 or n == 3 - "branch_3": False, # n % 2 == 0 or n % 3 == 0 - "branch_4": False, # while j * j <= n - "branch_5": False # n % j == 0 or n % (j + 2) == 0 -} def prime_check(n): """Return True if n is a prime number Else return False. """ - print(f"Checking {n}") # Debugging statement - if n <= 1: - branch_coverage["branch_1"] = True - print("branch_1") return False - if n == 2 or n == 3: - branch_coverage["branch_2"] = True - print("branch_2") return True if n % 2 == 0 or n % 3 == 0: - branch_coverage["branch_3"] = True - print("branch_3") return False j = 5 while j * j <= n: - branch_coverage["branch_4"] = True - print("branch_4") if n % j == 0 or n % (j + 2) == 0: - branch_coverage["branch_5"] = True - print("branch_5") return False j += 6 return True - -def print_coverage(): - for branch, hit in branch_coverage.items(): - print(f"{branch} was {'hit' if hit else 'not hit'}") - -print_coverage() diff --git a/algorithms/search/interpolation_search.py b/algorithms/search/interpolation_search.py index 98a405431..1fa6062e2 100644 --- a/algorithms/search/interpolation_search.py +++ b/algorithms/search/interpolation_search.py @@ -13,15 +13,6 @@ from typing import List -branch_coverage = { - "branch_60": False, - "branch_61": False, - "branch_62": False, - "branch_63": False, - "branch_64": False, - -} - def interpolation_search(array: List[int], search_key: int) -> int: """ @@ -47,36 +38,25 @@ def interpolation_search(array: List[int], search_key: int) -> int: while (low <= high) and (array[low] <= search_key <= array[high]): # calculate the search position - branch_coverage["branch_60"] = True pos = low + int(((search_key - array[low]) * (high - low) / (array[high] - array[low]))) # search_key is found if array[pos] == search_key: - branch_coverage["branch_61"] = True return pos # if search_key is larger, search_key is in upper part if array[pos] < search_key: - branch_coverage["branch_62"] = True low = pos + 1 # if search_key is smaller, search_key is in lower part else: - branch_coverage["branch_63"] = True high = pos - 1 - branch_coverage["branch_64"] = True return -1 - -def print_coverage(): - for branch, hit in branch_coverage.items(): - print(f"{branch} was {'hit' if hit else 'not hit'}") if __name__ == "__main__": import doctest doctest.testmod() -print_coverage() - diff --git a/tests/test_search.py b/tests/test_search.py index 5b6636da5..4b2f539a0 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -139,10 +139,8 @@ def test_next_greatest_letter(self): self.assertEqual("c", next_greatest_letter_v2(letters, target)) def test_interpolation_search(self): - array = [0, 3, 5, 5, 9, 12, 12, 15, 16, 19, 20, 25] - #, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] + array = [0, 3, 5, 5, 9, 12, 12, 15, 16, 19, 20] - # array = [0, 3, 5, 5, 9, 12, 12, 15, 16, 19, 20, 25] self.assertEqual(1, interpolation_search(array, 3)) self.assertEqual(2, interpolation_search(array, 5)) self.assertEqual(6, interpolation_search(array, 12)) @@ -150,17 +148,6 @@ def test_interpolation_search(self): self.assertEqual(-1, interpolation_search(array, -10)) self.assertEqual(10, interpolation_search(array, 20)) - # self.assertEqual(-1, interpolation_search(array, 1)) - # self.assertEqual(0, interpolation_search(array, 0)) # Found at the start - # self.assertEqual(interpolation_search(array, 12), 5) # Found in the middle, first occurrence - # self.assertEqual(-1, interpolation_search(array, 110)) # Not found, above maximum - # self.assertEqual(interpolation_search(array, 55), 17) # Found in the middle - # self.assertEqual(interpolation_search(array, 70), 20) # Found, single value in range - # self.assertEqual(interpolation_search(array, 22), -1) # Not found, above the range - # self.assertEqual(interpolation_search(array, 50), 16) # Found, single value in range - # self.assertEqual(interpolation_search(array, 45), 15) # Found, single value in range - - if __name__ == '__main__':