Giter Site home page Giter Site logo

edualgo / edualgo Goto Github PK

View Code? Open in Web Editor NEW
99.0 3.0 54.0 2.5 MB

A simple python package having modules of different algorithms to use in educational purposes.

Home Page: https://edualgo.github.io/documentation/

License: MIT License

Python 100.00%
python3 package pypi-package education algorithms python pypi hacktoberfest2020 hacktoberfest hacktoberfest2021

edualgo's Introduction


       

Objective

A python package published at PyPi. The project can be viewed here => PyPi - eduAlgo. Don't forget to create an ISSUE before making a PR and always make PR to this repo - Main eduAlgo

Stats

Maintenance PyPI format GitHub contributors

Downloads Downloads Downloads

forthebadge forthebadge forthebadge

Aim Of The Package

This is a very simple python package made up with python script to study different algorithms for educational purposes. This package is currently under planning version and aims to achieve the following :-

  • To put together all the available algorithms
  • Help students with learning space and time complexity
  • Visualizing Algorithms
  • Getting resources, articles etc. to study about python and Algorithms
  • Become a handy tool for the programmers while using different algorithms on daily basis

Organization

This project is a part of the organization Edualgo Academy.

We are an opensource organization having a few open-sourced projects on github related to Data structures and Algorithms in Python, Flutter Development & Frontend Development. chek the organization here - eduAlgo

Documentation

The documentation for the included methods and their implementations can be found here => eduAlgo-Documentation

Algorithms Yet to Publish

  • Searching Algorithms and Visualizations
  • Sorting Algorithms and Visualizations
  • Graph Algorithms and Visualizations
  • Linked List Implementations and Vizualizations
  • Tree Types, Vizualizations and Implementations

Installation

Fast install:

pip install eduAlgo

Example

from edualgo import LinkedList as ll
llist1 = ll.linkedlist()
llist2 = ll.linkedlist()

arr1 = list(map(int,input().split()))
arr2 = list(map(int,input().split()))

for i in arr1:
    llist1.append(i)

for i in arr2:
    llist2.append(i)

sol = ll.list_algorithms()

llist3 = ll.linkedlist()
llist3.head = sol.mergeTwoLists(llist1.head,llist2.head)
llist3.printLL()

Input:

  1 2 3
  2 3 4

Output:

  1 2 2 3 3 4

Communities/Hackathon/Conferences (In which the project was a part of)


FOSS Hack - 2020 (12th & 13th September 2020)

PyCon - 2020 Devsprint ( 04th & 05th October 2020)

Hacktoberfest 2020 (October 2020)

Winter of Code - DSC, NSEC

Latest Winter Update (Package Demo)

Tutorials

License

This package is under MIT License copyright @Abhijit Tripathy. The production code can be checked at the production branch of this repository.

Our sponsors

This project is supported by:

About The Creator

Abhijit Tripathy
DSA Developer and Python Programmer

Our contributors

Made with contrib.rocks.

edualgo's People

Contributors

24apurv avatar abhaskar1 avatar abhijit2505 avatar allcontributors[bot] avatar amulyavarshney avatar anuraganalog avatar audarya07 avatar caleberi avatar charlie219 avatar deepsourcebot avatar fomalhauting avatar gnurenga avatar hardevkhandhar avatar hussamel-hwary avatar imgbot[bot] avatar kanakkvdi avatar krypticmouse avatar lostgirljourney avatar lukasberka avatar manoj-paramsetti avatar nihilistdbanana avatar nyctophiliacme avatar paranjoyg avatar pawankm21 avatar pragatipal avatar prakhar-mangal avatar priyaa-agrawal avatar skrstv123 avatar venkatsquest avatar yash872 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

edualgo's Issues

Cycle Sort [SWOC]

I am a participant of SWOC 2021, I would like to contribute by adding the code for Cycle Sort.
Kindly assign this issue to me.
Thank you.

Doc string in is_empty has issue in stack.py

  • is_empty will return true if data is empty
  • I have to change the doc string from Returns boolean False if data is empty or True to Returns boolean False if the data is not empty else True

A* Pathfinding Algorithm with GUI

Is your feature request related to a problem? Please describe.
It is a feature for additional enhancement

Describe the solution you'd like
This is a feature that helps to find the shortest distance between two nodes. It uses pygame, and has keys functionalities that even a layman can use.

Describe alternatives you've considered
Alternatives include creating the same without a GUI

Create Manual Testing Modules

Testing is a very important phase for any software package. Although there are awesome libraries like pytest etc available in python for testing, still we like to prefer maintaining our own testing module.

Your task is to come up with the testing module for all the methods described in the package.

Randomized quick sort [SwoC]

Is your feature request related to a problem? Please describe.
Yes, the library does not contain randomized quick sort algorithm

Describe the solution you'd like
Will implement a function randomizedQuickSort(arr,hint)

Describe alternatives you've considered
nothing as of now

Can I work on this?

Want to add few algos

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Adding new methods to Binary Tree

Need to add additional methods

  1. KthLevel -> This method is for print elements present on the Kth level from the top root.
  2. CountNode -> This method is for counting the total elements present in the Tree.

Size of directory [SWoC]

Is your feature request related to a problem? Please describe.
To check the storage of your device, tracking the size and information of all files in directory

Describe the solution you'd like
The script displays the size of the current directory in bytes, kilobytes, gigabytes, and megabytes.

Describe alternatives you've considered

Additional context

different versions of QuickSort paritioning (Lomuto partition, Hoare partition)(SWOC)

**Suggest two differerent parition method **
The partition method implemented so far is taking the last element as the pivot point i.e Lomuto. Suggest to make two different parition and explain why Hoare performs better.

How will this impact the quicksort already in the code
It will not, by default we can make it either one and additionally let the user type the string 'Hoore' as a parameter if they want this paritioning to be used.

Extra feature
guide users to the necessary material for the difference and the importance of choosing the right parition (using help() like done in the previous ones)

Adding 5 different searching, sorting algorithms

Adding 5 different searching, sorting algorithms in the project such as insertion ,linear search ,binary search, selection sort, merge sort ,quick sort,heap sort and also adding the worst,best,average complexities of each algorithms

JOB SEQUENCING PROBLEM IMPLEMENTATION USING GREEDY ALGO IN PYTHON[SWOC21]

An array of jobs is given where every job has a deadline and associated profit if the job is finished before the deadline. It is also given that every job takes the single unit of time, so the minimum possible deadline for any job is 1. finding a way to maximize total profit if only one job can be scheduled at a time.

Linked List Algorithm Implementations (Hard)

Here is a list of algorithmic implementations using a linked list,

  • Reverse Nodes in k-Group -
  • Merge k Sorted Lists -

The addition of code for these implementations is ongoing.

Add Hamiltonian Cycle in backtracking

I am starting with Hamiltonian cycle:
Hamiltonian cycle is a Hamiltonian Path such that there is an edge (in the graph) from the last vertex to the first vertex of the Hamiltonian Path. Determine whether a given graph contains Hamiltonian Cycle or not. If it contains, then prints the path.

For example:
Hamiltonian Cycle in the following graph is {0, 1, 2, 4, 3, 0}
(0)--(1)--(2)
| / \ |
| / \ |
| / \ |
(3)-------(4)
And the following graph doesn’t contain any Hamiltonian Cycle
(0)--(1)--(2)
| / \ |
| / \ |
| / \ |
(3) (4)

[SWOC] Search Algorithms

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.
I would like to add:
Binary search algo
Sublinear search algo
Bilinear search algo
Random select algo

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Booyer Moore Algorithm [SWOC]

I am a participant of SWOC 2020,
I would like to contribute by adding the code for Boyer Moore under the string algorithms.
Kindly assign this issue to me.
Thank you.

Bug spotting

No software package can be free of bugs practically, we would like you to point out the bugs you see in the package and create an issue first describing the bug.

You can also point the bugs out as a reply to this issue.

Add travelling salesman problem

Is your feature request related to a problem? Please describe.
travelling salesman problem is missing from graph algorithms.

Describe the solution you'd like
will add the DP solution for the travelling salesman problem.
DP solution is slightly efficient than factorial time methods.

Fibonacci Numbers [SWoC]

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
I would like to add Fibonacci Numbers Algorithms

Describe the solution you'd like
A clear and concise description of what you want to happen.
Fibonacci Number's algorithms

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

searching and sorting

I am a participant of SWOC 2021. I would like to contribute by adding the code for searching and sorting
Kindly assign this issue to me
Thank you

Algorithms Addition

Cheers !! PyCon Devsprint is here 🎉🎉

You may add any of your favourite algorithms to our modules.

Just comment the name of the algorithms below in this issue and I will be assigning you the same.
Join the discuss here - eduAlgo Zulip

Assigned Issues

Segment Tree Algorithms Addition

Is your feature request related to a problem? Please describe.
I would like to add Segment Tree Implementation under algorithm folder.

Describe the solution you'd like
Implementing Segment Tree with various range based query implementation.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Add Binary Search Tree implementation

Binary Search tree implementation
I will include functions for insertion lookup deletion.
Also i want to include Breadth First Tree and Depth Search Tree algorithms.

Add Backtracking Algorithms

These are the popular algorithms, that use backtracking. Your task is to design the code for these algorithms inside the package.

As these are quite popular, you just need to google the name for the problem statement, but never use google for the solution, try to solve it first, if not possible, try again. Try two times more.

As a final step, you may contact the project admin. But never use google for a solution directly.

Some famous algorithms not yet included [SWoC]

Found some famous algorithms that are not yet included in the library. Please go through it and mention those on which I can work

Dynammic Programming based :-

  1. count all possible paths from top left to bottom right in a square matric
  2. longest palindromic subsequence
  3. number of unique (structurally different) BST with given number of nodes
  4. rod cutting problem

Greedy based :-

  1. fractional knapsnack
  2. minimum spanning tree
  3. activity selection

Tree based :-

  1. symmetric tree
  2. level order traversal
  3. zigziag level order traversal
  4. maximum depth of binary tree
  5. invert binary tree

Potential Suggestions

Description

Hi @Abhijit2505

I'm in total love with your Project, especially since I got to use your Package for a personal Project. That's a great work put up by you and the Team at EduAlgo.

I would like to highlight few issues in the Project Code right now:

  • You can stop tracking your VS Code Configuration by removing .vscode
  • You can remove the Project Build build/lib/edualgo from the Repository.
  • You can remove the Egg Packaging eduAlgo.egg-info from the Repository.

These are healthy suggestions to keep the Project hassle-free while installation and preventing leaks.

Linked List Algorithm Implementations (Intermediate)

Here is a list of algorithmic implementations using a linked list,

  • Design Linked List -
  • Rotate List -
  • Insert Into a Sorted Circular Linked List -
  • Add Two Numbers -
  • Remove Nth Node From End of List -
  • Copy List with Random Pointer -
  • Remove Duplicates From The Sorted List (Second Version) -
  • Reorder List -
  • Linked List Cycle (Second Version) -
  • Reverse Linked List (Second Version) -
  • Linked List In Binary Tree -
  • Insertion Sort List -
  • Remove Zero-Sum Consecutive Nodes from Linked List -
  • Partition List -
  • Sort List -
  • Design Phone Directory -
  • Convert Sorted List to Binary Search Tree -
  • Swap Nodes in Pairs -
  • Split Linked List in Parts -
  • Add Two Numbers(Second Version) -
  • Flatten a Multilevel Doubly Linked List -
  • Odd-Even Linked List -
  • Linked List Components -
  • Next Greater Node in Linked List -
  • Plus One Linked List -
  • Convert Binary Search Tree to Sorted Doubly Linked List -

Work upon these algorithms are going on.

Min Steps to 1 [SWOC]

Hello sir, I am a participant in SWOC 2021, I would like to contribute by adding the code for Min Steps to 1 In Dynamic Programming.
Kindly assign this issue to me.
Thank you.

Linked List Algorithm Implementations(Easy)

Here is a list of algorithmic implementations using a linked list,

  • Palindromic Linked List -
  • Remove Linked List Elements -
  • Intersection Of Two Linked List -
  • Linked List Cycle -
  • Remove Duplicates From a Sorter List -
  • Merge Two Sorted List -
  • Reverse Linked List -
  • Delete Node In a Linked List -
  • Middle Of the Linked List -
  • Delete M Modes after N Nodes of a Linked List -
  • Convert Binary Number In a Linked List to integer -

The addition of code for these implementations is ongoing.

Create a Stack

Stack is an abstract data type

  • User can insert object in to a stack
  • Remove the recent added element from the stack
  • Check is the stack is empty
  • Calculate the length of the stack

[SWOC] Cryptography algorithms

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
I would like to add Cryptography Algorithms
Affine Cipher
Burrows-Wheeler Transform
Caesar Cipher
RSA Algorithm
XOR Cipher
Vigenere Cipher

Describe the solution you'd like
A clear and concise description of what you want to happen.
Cryptography Algorithms

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Areas [SWOC]

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
I would like to add areas algorithm.

Describe the solution you'd like
A clear and concise description of what you want to happen.
We can add areas algorithms

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Create a queue

  • Add element to a queue
  • Remove element from a queue
  • Check queue is empty
  • find the length of queue
  • get the first added element in the queue using a function

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.