* added an algorithm which checks a linked list for loops and returns true if one is found
* added doctests and clarified meaning of loop
* Define Node.__iter__()
* Update and rename has_loop.py to has_duplicate_data.py
* Update has_duplicate_data.py
* Update has_duplicate_data.py
* Update and rename has_duplicate_data.py to has_loop.py
* Update has_loop.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* Create alternate_disjoint_set.py
This code implements a disjoint set using Lists
with added heuristics for efficiency
Union by Rank Heuristic and Path Compression
* Update alternate_disjoint_set.py
Added typehints, doctests and some suggested variable name change
* Update alternate_disjoint_set.py
* Formatted with Black
* More formatting
* Formatting on line 28
* Error in Doctest
* Doctest Update in alternate disjoint set
* Fixed build error
* Fixed doctest
* fixes: #2172
* fixes: #2172
* Added docstrings and type of parameters
* fixed error
* Added type hints
* made changes
* removed capital letters from function name
* Added type hints
* fixed bulid error
* modified comments
* fixed build error
* adding static type checking to basic_binary_tree.py
* Add static type checking to functions with None return type
* Applying code review comments
* Added missing import statement
* fix spaciing
* "cleaned up depth_of_tree"
* Add doctests and then streamline display() and is_full_binary_tree()
* added static typing to lazy_segment_tree.py
* added missing import statement
* modified variable names for left and right elements
* added static typing to lowest_common_ancestor.py
* fixed formatting
* modified files to meet style guidelines, edited docstrings and added some doctests
* added and fixed doctests in lazy_segment_tree.py
* fixed errors in doctests
Co-authored-by: Christian Clauss <cclauss@me.com>
* created dijkstra's two stack algorithm
* Made changes to dijkstras two stack algorithm for documentation and
testing purposes.
* Made changes to dijkstras two stack algorithm for documentation and
testing purposes.
* Fixed Grammar Mistake
* Added Explanation Reference
* Imported stack instead of using my own
Changed a few minor things.
* Imported stack instead of using my own
Changed a few minor things.
* Update data_structures/stacks/dijkstras_two_stack_algorithm.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* Update dijkstras_two_stack_algorithm.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* adding static type checking to basic_binary_tree.py
* Add static type checking to functions with None return type
* Applying code review comments
* Added missing import statement
* fix spaciing
* "cleaned up depth_of_tree"
* Add doctests and then streamline display() and is_full_binary_tree()
Co-authored-by: Christian Clauss <cclauss@me.com>
* Fix doubly linked list algorithm
* Fix bug with insert_at_tail method
Create __str__() method for Node class and LinkedList class
* Simplify __str__() of LinkedList
Returns empty string if there are no elements in the list
* Fix description
* Update __init__.py
please add a function to get length of linked list
* Update __init__.py
* Update doubly_linked_list.py
all size function lo doubly linked list class
* prime number _better method
* comments
* Updated init.py 2
made it more pythonic
* updated length function
* commnet in linked_list construtor
* Update data_structures/linked_list/__init__.py
accepecting changes
Co-authored-by: Christian Clauss <cclauss@me.com>
* Update data_structures/linked_list/__init__.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* Update __init__.py
* Revert changes to doubly_linked_list.py
* Revert changes to prime_check.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* Tighten up psf/black and flake8
* Fix some tests
* Fix some E741
* Fix some E741
* updating DIRECTORY.md
Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
* Precision must be a nonnegative integer
* fixup! Format Python code with psf/black push
Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
* added __len__ function
Added a function to count number of nodes in linked list
* Updated __len__ method
used snake_case instead of camel case
* Add tests to __len__()
Co-authored-by: Christian Clauss <cclauss@me.com>
* Fix psf/black issues than fail the build
* fixup! Format Python code with psf/black push
Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
* enhanced segment tree implementation and more pythonic
enhanced segment tree implementation and more pythonic
* add doctests for segment tree
* add type annotations
* unified processing sum min max segment tre
* delete source encoding in segment tree
* use a generator function instead of returning
* add doctests for methods
* add doctests for methods
* add doctests
* fix doctest
* fix doctest
* fix doctest
* fix function parameter and fix determine conditions
* With all suggested changes ✅
possibly covered all the recommended guidelines
* Updated with both slow and faster algorithms
possibally covered all the recomendations
* removed the time comparision part!
* Update data_structures/stacks/next_greater_element.py
Co-Authored-By: Christian Clauss <cclauss@me.com>
* Update data_structures/stacks/next_greater_element.py
Co-Authored-By: Christian Clauss <cclauss@me.com>
* Update data_structures/stacks/next_greater_element.py
Co-Authored-By: Christian Clauss <cclauss@me.com>
* Update data_structures/stacks/next_greater_element.py
Co-Authored-By: Christian Clauss <cclauss@me.com>
* Add benchmark using timeit
https://docs.python.org/3/library/timeit.html
The performance delta between these two implementation is quite small...
```
next_greatest_element_slow(): 1.843442126
next_greatest_element(): 1.828941414
```
* Optimize slow() to create fast() - Three algorithms in the race
Three algorithms in the race
* Use a bigger test array with floats, negatives, zero
* Setup import next_greatest_element_fast
Co-authored-by: Christian Clauss <cclauss@me.com>
* Fix rehashing function will not call insert_data function
* Fix typo
* Update loop syntax instead of allocating a list
Co-Authored-By: Christian Clauss <cclauss@me.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
* spelling corrections
* review
* improved documentation, removed redundant variables, added testing
* added type hint
* camel case to snake case
* spelling fix
* review
* python --> Python # it is a brand name, not a snake
* explicit cast to int
* spaces in int list
* "!= None" to "is not None"
* Update comb_sort.py
* various spelling corrections in documentation & several variables naming conventions fix
* + char in file name
* import dependency - bug fix
Co-authored-by: John Law <johnlaw.po@gmail.com>
* enhance swapping code in link
* heapify do not recursive
* fix
* fix identifier and add test
* typing.Any and LinkedList instead of Linkedlist
* typing.Any and LinkedList instead of Linkedlist
* Code Upload
* Code Upload
* Delete n_possible_bst
* Find the N Possible Binary Tree and Binary Tree from given Nth Number of Node.
* Update in Test
* Update and rename n_possible_bst.py to number_of_possible_binary_trees.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* Stack using double linked list
* Test with doctests
* Update stack_using_dll.py
* Update stack_using_dll.py
* Update stack_using_dll.py
Co-authored-by: Christian Clauss <cclauss@me.com>
* improved prime numbers implementation
* fixup! Format Python code with psf/black push
* fix type hint
* fixup! Format Python code with psf/black push
* fix doctests
* updating DIRECTORY.md
* added prime tests with negative numbers
* using for instead filter
* updating DIRECTORY.md
* Remove unused typing.List
* Remove tab indentation
* print("Sorted order is:", " ".join(a))
* Update singly_linked_list.py
printing current.data rather than node address in __repr__ for a more readable print statement
* eval(repr(c)) == c
The output of `__repr__()` _should look like a valid Python expression that could be used to recreate an object with the same value_.
https://docs.python.org/3.4/reference/datamodel.html#object.__repr__
* += --> +
* Adds, append, len, print operations for circular linked list
* Adds, prepend support
* Adds, delete from front of the list
* Adds, delete_rear support
* Adds, method documentations
* Adds, type checking and doctests
* Updates doctest for delete ops
* Addressing requested changes
* Removes unused import
* Fixes failing doctests
* Minor modifications...
* Improved Singly Linked List
Added String Representations of Nodes and Linked Lists
Added support for indexing and changing of Node data using indices.
* Added a few comments to Linked Lists
* Reformatted to conform to PEP8
* Added from_sequence.py
Convert a Python List to Linked List comprising of Nodes and return head.
* Added print_reverse.py
Recursive program to print the elements of a Linked List in reverse.
* Change 'is not None' for more Pythonicness
* Factors of a number
* Update factors.py
* Fix mypy issue in basic_maths.py
* Fix mypy error in perceptron.py
* def primes(max: int) -> List[int]:
* Update binomial_heap.py
* Add a space
* Remove a space
* Add a space
* Update DIRECTORY
* Updated DIRECTORY
* Fixed bug in directory build and re-build the directory.md
* fixed url issue
* fixed indentation in Directory.md
* Add problem-18 of project-euler
* Delete sol1.py
* Delete files
* Added more details to question
* Added doctest in printNGE()
* Made changes to fix Travis CI build
* Remove the trailing whitespace
* Update treap.py
check merge()
* Update treap.py
random() is used. its difficult to write doctests
l->left
r->right
key->value
add __repr__ and __str__ in preorder
* Min head with decrease key functionality
* doctest added
* __str__ changed as per Python convention
* edits in doctest
* get_value by key added
* __getitem__ added
* Add disjoint set
* disjoint set: add doctest, make code more Pythonic
* disjoint set: replace x.p with x.parent
* disjoint set: add test and refercence
* fix: Syntax Error lgtm display in matrix/matrix_operation.py.
* Testing for None should use the 'is' operator.
* fix: Too many arguments for string format.
* fix: supress lgtm alert as false positive.
* style: Unnecessary 'pass' statement.
* Revert "fix: Syntax Error lgtm display in matrix/matrix_operation.py."
This reverts commit 4c629b4ce1.
* Binomial Heap
Implementation of Binomial Heap. Reference: Advanced Data Structures, Peter Brass
* Update binomial_heap.py
* Update binomial_heap.py
* Update binomial_heap.py
- Fuller documentation of binomial heap
- Update unit tests
- Replace printing method by overwriting __str__()
* Update binomial_heap.py
- Added more tests
- Added to the documentation
- Stylistic editing
- mergeHeaps now also returns a reference to the merged heap
- added a preOrder function that returns a list with the preorder of the heap
* Update binomial_heap.py
Changed the unit tests structure
* Turned the tests into doctests
* Added doctest and more explanation about Dijkstra execution.
* tests were not passing with python2 due to missing __init__.py file at number_theory folder
* Removed the dot at the beginning of the imported modules names because 'python3 -m doctest -v data_structures/hashing/*.py' and 'python3 -m doctest -v data_structures/stacks/*.py' were failing not finding hash_table.py and stack.py modules.
* Moved global code to main scope and added doctest for project euler problems 1 to 14.
* Added test case for negative input.
* Changed N variable to do not use end of line scape because in case there is a space after it the script will break making it much more error prone.
* Added problems description and doctests to the ones that were missing. Limited line length to 79 and executed python black over all scripts.
* Changed the way files are loaded to support pytest call.
* Added __init__.py to problems to make them modules and allow pytest execution.
* Added project_euler folder to test units execution
* Changed 'os.path.split(os.path.realpath(__file__))' to 'os.path.dirname()'
* Wrote most of an rbt, missing just removal
* Added some convenience methods.
* Added a color method
* Wrote code to delete, but has issues :(
* Fixed a bug in Red-Black trees
* Fixed bug in tree color validation and delete repairing
* Clean up == comparison to None
* Added print function into matrix_multiplication_addition.py and removed blank space in data_structures/binary tree directory
* Removed .vs/ folder per #893
* Rename matrix_multiplication_addition.py to matrix_operation.py
* organized graph algorithms
* all graph algorithms in Graphs/ folder
* all graph algorithms are in one folder
* Rename number theory/factorial_python.py to maths/factorial_python.py
* Change some Image File names & re-code the psnr algorithm (conserving both methods). Also Added new example.
* Selected psnr method and reformat some code from arithmetic_analysis
* Started Trie implementation.
* Basic definition of Trie in comments at the top of the file
* Defined Trie class and method signatures.
* * Renamed method signatures to match formal definitions
* Finished Simple Trie implementation and added test functions
* Finished function to insert a word into Trie
* Finished function to find a word in the Trie
* Added Test functions with Assertions
* Updated test function to read from the Dictionary.txt file in repository
* * No longer using $ to mark end of word
* No longer reading from file but instead provided simple sample input for easier testing
* Deleting empty __init__.py file