diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4d2265968612..a80870280326 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,12 +1,11 @@ -### Describe your change: - - +# **Describe your change:** * [ ] Add an algorithm? * [ ] Fix a bug or typo in an existing algorithm? * [ ] Documentation change? -### Checklist: +# **Checklist:** + * [ ] I have read [CONTRIBUTING.md](https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md). * [ ] This pull request is all my own work -- I have not plagiarized. * [ ] I know that pull requests will not be merged if they fail the automated tests. diff --git a/arithmetic_analysis/README.md b/arithmetic_analysis/README.md new file mode 100644 index 000000000000..50dc02767ffe --- /dev/null +++ b/arithmetic_analysis/README.md @@ -0,0 +1,7 @@ +# Arithmetic analysis + +It's a branch of mathematics that deal with solving linear equations. + +* +* +* diff --git a/audio_filters/README.md b/audio_filters/README.md new file mode 100644 index 000000000000..215c0b2bdd57 --- /dev/null +++ b/audio_filters/README.md @@ -0,0 +1,9 @@ +# Audio Filter + +Audio filters work on the frequency of a audio signal to attenuate unwanted frequency and amplify wanted ones. +They are used within anything related to sound, whether it's radio communication or a hi-fi system. + +* +* +* +* diff --git a/backtracking/README.md b/backtracking/README.md new file mode 100644 index 000000000000..ac06c4e60bfd --- /dev/null +++ b/backtracking/README.md @@ -0,0 +1,8 @@ +# Backtracking + +Backtracking is a way to speed up the search process by removing candidate when they can't be the solution of a problem. + +* +* +* +* diff --git a/bit_manipulation/README.md b/bit_manipulation/README.md index e5f82a270e28..60011f193876 100644 --- a/bit_manipulation/README.md +++ b/bit_manipulation/README.md @@ -1,6 +1,11 @@ -* https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations -* https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations -* https://docs.python.org/3/library/stdtypes.html#bitwise-operations-on-integer-types -* https://wiki.python.org/moin/BitManipulation -* https://wiki.python.org/moin/BitwiseOperators -* https://www.tutorialspoint.com/python3/bitwise_operators_example.htm +# Bit manipulation + +Bit manipulation is the act of manipulating bits (incredible!) to detect errors (hamming code), encrypts and decrypts messages (more on that in the 'ciphers' folder) or just do anything at the core level of your computer. + +* +* +* +* +* +* +* diff --git a/blockchain/README.md b/blockchain/README.md new file mode 100644 index 000000000000..d94c5f46619b --- /dev/null +++ b/blockchain/README.md @@ -0,0 +1,4 @@ +# Blockchain + +* +* diff --git a/boolean_algebra/README.md b/boolean_algebra/README.md new file mode 100644 index 000000000000..45969c855f9c --- /dev/null +++ b/boolean_algebra/README.md @@ -0,0 +1,7 @@ +# Boolean Algebra + +Boolean algebra is used to do arithmetic with bits of values True (1) or False (0). +There are three basic operations: 'and', 'or' and 'not'. + +* +* diff --git a/cellular_automata/README.md b/cellular_automata/README.md index c3fa0516f5dd..16e7349439ec 100644 --- a/cellular_automata/README.md +++ b/cellular_automata/README.md @@ -1,4 +1,8 @@ # Cellular Automata -* https://en.wikipedia.org/wiki/Cellular_automaton -* https://mathworld.wolfram.com/ElementaryCellularAutomaton.html +Cellular automata are a way to simulate the behaviour of "life", whether it's a robot or cells. +They usually follow simple rules but can lead to the creation of complex forms. +The most popular cellular automaton is Conway's [Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life). + +* +* diff --git a/ciphers/README.md b/ciphers/README.md new file mode 100644 index 000000000000..1284d9931a26 --- /dev/null +++ b/ciphers/README.md @@ -0,0 +1,8 @@ +# Ciphers + +Ciphers have a long story behind them. +It is used to protect data from people that are not allowed to have it. They are everywhere on the internet to protect your connections. + +* +* +* diff --git a/compression/README.md b/compression/README.md new file mode 100644 index 000000000000..35d43053c7a6 --- /dev/null +++ b/compression/README.md @@ -0,0 +1,10 @@ +# Compression + +Data compression is everywhere, you need it to store data without taking too much space. +Either the compression lose some data (such as images in .jpg) or it can be lossless (.png). + +Loseless compression is mainly used for archive purpose as it allow to store more data without losing information about the file archived. On the other hand, lossy compression is used for transfer of file where quality isn't necessarily what is required (ie: images on twitter). + +* +* +* diff --git a/computer_vision/README.md b/computer_vision/README.md index 94ee493086cc..326d4242f530 100644 --- a/computer_vision/README.md +++ b/computer_vision/README.md @@ -1,7 +1,11 @@ -### Computer Vision +# Computer Vision + +Computer vision is a field of computer science that works on enabling computers to see, identify and process images in the same way that human vision does, and then provide appropriate output. -Computer vision is a field of computer science that works on enabling computers to see, -identify and process images in the same way that human vision does, and then provide appropriate output. It is like imparting human intelligence and instincts to a computer. Image processing and computer vision are a little different from each other. Image processing means applying some algorithms for transforming image from one form to the other like smoothing, contrasting, stretching, etc. + While computer vision comes from modelling image processing using the techniques of machine learning, computer vision applies machine learning to recognize patterns for interpretation of images (much like the process of visual reasoning of human vision). + +* +* diff --git a/conversions/README.md b/conversions/README.md new file mode 100644 index 000000000000..a0f9d0a2e355 --- /dev/null +++ b/conversions/README.md @@ -0,0 +1,7 @@ +# Conversion + +The act to convert a type of data, a number from a numerical base or a unit into one of another type, base, unit. +(binary to decimal, integer to string or foot to meters) + +* +* diff --git a/data_structures/README.md b/data_structures/README.md new file mode 100644 index 000000000000..8bb0c0cf6a18 --- /dev/null +++ b/data_structures/README.md @@ -0,0 +1,9 @@ +# Data Structures + +There exist [many](https://en.wikipedia.org/wiki/List_of_data_structures) types of data structures, but some structures are more prone to keep some type of data over another type. +The one used everywhere when programming are the boolean, integer, character, floating point number. Those can lead to more advanced type, such as list, array, set, tuple, stack etc. + +(If this subject have your interest, you should do your own research because it's a vast subject. As often, the starting point should wikipedia page.) + +* +* diff --git a/digital_image_processing/README.md b/digital_image_processing/README.md new file mode 100644 index 000000000000..2ade6e451ddc --- /dev/null +++ b/digital_image_processing/README.md @@ -0,0 +1,7 @@ +# Digital Image Processing + +It's when you are processing and applying changes to an image with a computer. +Because an image can be considered as a signal, this is a subcategory of digital signal processing. Similar algorithms can be applied with only few tweaks to make. + +* +* diff --git a/divide_and_conquer/README.md b/divide_and_conquer/README.md new file mode 100644 index 000000000000..d798ddcba15e --- /dev/null +++ b/divide_and_conquer/README.md @@ -0,0 +1,6 @@ +# Divide and Conquer + +A collection of algorithms that use the divide and conquer strategy to solve problems efficiently and fast. +It consist of solving directly simpler sub-problems, to combine the solutions and find the solution of the bigger problem. (much like dynamic programming) + +* diff --git a/dynamic_programming/README.md b/dynamic_programming/README.md new file mode 100644 index 000000000000..6ebc94dc57a4 --- /dev/null +++ b/dynamic_programming/README.md @@ -0,0 +1,6 @@ +# Dynamic Programming + +Dynamic programming refers to the practice of simplyfing a problem by breaking it into simpler sub-problems (much like divide-and-conquer) + +* +* diff --git a/electronics/README.md b/electronics/README.md new file mode 100644 index 000000000000..844e7dddc2bd --- /dev/null +++ b/electronics/README.md @@ -0,0 +1,6 @@ +# Electronics + +A collection of programs to compute results for electronic equations. +Need to add how compute Maxwell's equations + +* diff --git a/fractals/README.md b/fractals/README.md new file mode 100644 index 000000000000..2618f6e38413 --- /dev/null +++ b/fractals/README.md @@ -0,0 +1,9 @@ +# Fractals + +Fractals are self-similar objects and appear the same at different levels of 'zoom'. + +As fractalfoundation.org say: +> "A fractal is a never-ending pattern. [...] They are created by repeating a simple process over and over in an ongoing feedback loop. Driven by recursion, fractals are images of dynamic systems – the pictures of Chaos." + +* +* diff --git a/fuzzy_logic/README.md b/fuzzy_logic/README.md new file mode 100644 index 000000000000..52170f7d6e14 --- /dev/null +++ b/fuzzy_logic/README.md @@ -0,0 +1,6 @@ +# Fuzzy Logic + +Fuzzy logic is used when manipulating the concept of partial truth. + +* +* diff --git a/genetic_algorithm/README.md b/genetic_algorithm/README.md new file mode 100644 index 000000000000..8606c72c43df --- /dev/null +++ b/genetic_algorithm/README.md @@ -0,0 +1,6 @@ +# Genetic algorithms + +In a genetic algorithm, candidate solutions are evolved toward better one by evaluating their individual fitness and tweaking randomly the more fit to reproduce how evolution work. +Those new solutions are then evaluated again to continue the algorithm. + +* diff --git a/geodesy/README.md b/geodesy/README.md new file mode 100644 index 000000000000..97cff830ba54 --- /dev/null +++ b/geodesy/README.md @@ -0,0 +1,5 @@ +# Geodesy + +Geodesy is the science of "accurately measuring and understanding Earth's geometric shape, orientation in space, and gravitational field." + +* diff --git a/graphics/REAME.md b/graphics/REAME.md new file mode 100644 index 000000000000..9a48b015f921 --- /dev/null +++ b/graphics/REAME.md @@ -0,0 +1,5 @@ +# Graphics + +Algorithms used to render graphics. + +* diff --git a/graphs/README.md b/graphs/README.md new file mode 100644 index 000000000000..aaa3b21bef6f --- /dev/null +++ b/graphs/README.md @@ -0,0 +1,7 @@ +# Graphs + +Graphs are a data structure that are studied in graph theory. +There exist many type of graphs, but the one most used are oriented, complete, finite, path and tree graphs. + +* +* diff --git a/greedy_methods/README.md b/greedy_methods/README.md new file mode 100644 index 000000000000..f817f3f2e355 --- /dev/null +++ b/greedy_methods/README.md @@ -0,0 +1,6 @@ +# Greedy Methods + +Rather than trying to make the best possible choices for the problems, a greedy algorithm will make the best locally possible choice. +Most of the time it will not produce the best result but it will produce them within a reasonable amount of time and they will still be good enough. + +* diff --git a/hashes/README.md b/hashes/README.md new file mode 100644 index 000000000000..356ce7b9635b --- /dev/null +++ b/hashes/README.md @@ -0,0 +1,8 @@ +# Hashes + +Hashes are a way to generate a string of characters (both letters and numbers) from a input (another string or a file) and are designed in such a way that even the barest change in the input will completely change the output. + +Nowadays they are used to ensure that the file you received is indeed the one sent by the other party. It is still possible that two completely different input will produce the same output but such cases are extremely unlikely to happen + +* +* diff --git a/linear_algebra/README.md b/linear_algebra/README.md index 35b50b5e0f0a..d7f9bb73eb4a 100644 --- a/linear_algebra/README.md +++ b/linear_algebra/README.md @@ -7,53 +7,55 @@ This module contains classes and functions for doing linear algebra. ## Overview ### class Vector -- - - This class represents a vector of arbitrary size and related operations. + +- This class represents a vector of arbitrary size and related operations. **Overview of the methods:** - - constructor(components) : init the vector - - set(components) : changes the vector components. - - \_\_str\_\_() : toString method - - component(i): gets the i-th component (0-indexed) - - \_\_len\_\_() : gets the size / length of the vector (number of components) - - euclidean_length() : returns the eulidean length of the vector - - operator + : vector addition - - operator - : vector subtraction - - operator * : scalar multiplication and dot product - - copy() : copies this vector and returns it - - change_component(pos,value) : changes the specified component + - constructor(components) : init the vector + - set(components) : changes the vector components. + - `__str__()` : toString method + - component(i): gets the i-th component (0-indexed) + - `__len__()` : gets the size / length of the vector (number of components) + - euclidean_length() : returns the eulidean length of the vector + - operator + : vector addition + - operator - : vector subtraction + - operator * : scalar multiplication and dot product + - copy() : copies this vector and returns it + - change_component(pos,value) : changes the specified component - function zero_vector(dimension) - - returns a zero vector of 'dimension' + - returns a zero vector of 'dimension' - function unit_basis_vector(dimension, pos) - - returns a unit basis vector with a one at index 'pos' (0-indexed) + - returns a unit basis vector with a one at index 'pos' (0-indexed) - function axpy(scalar, vector1, vector2) - - computes the axpy operation + - computes the axpy operation - function random_vector(N, a, b) - - returns a random vector of size N, with random integer components between 'a' and 'b' inclusive + - returns a random vector of size N, with random integer components between 'a' and 'b' inclusive ### class Matrix -- - - This class represents a matrix of arbitrary size and operations on it. + +- This class represents a matrix of arbitrary size and operations on it. **Overview of the methods:** - - \_\_str\_\_() : returns a string representation - - operator * : implements the matrix vector multiplication - implements the matrix-scalar multiplication. - - change_component(x, y, value) : changes the specified component. - - component(x, y) : returns the specified component. - - width() : returns the width of the matrix - - height() : returns the height of the matrix - - determinant() : returns the determinant of the matrix if it is square - - operator + : implements the matrix-addition. - - operator - : implements the matrix-subtraction + - `__str__()` : returns a string representation + - operator * : + - implements the matrix vector multiplication + - implements the matrix-scalar multiplication. + - change_component(x, y, value) : changes the specified component. + - component(x, y) : returns the specified component. + - width() : returns the width of the matrix + - height() : returns the height of the matrix + - determinant() : returns the determinant of the matrix if it is square + - operator + : implements the matrix-addition. + - operator - : implements the matrix-subtraction - function square_zero_matrix(N) - - returns a square zero-matrix of dimension NxN + - returns a square zero-matrix of dimension NxN - function random_matrix(W, H, a, b) - - returns a random matrix WxH with integer components between 'a' and 'b' inclusive + - returns a random matrix WxH with integer components between 'a' and 'b' inclusive + --- ## Documentation diff --git a/machine_learning/README.md b/machine_learning/README.md new file mode 100644 index 000000000000..74948d9c3a14 --- /dev/null +++ b/machine_learning/README.md @@ -0,0 +1,6 @@ +# Machine Learning + +Machine learning is a way to create AI using sample ('training') data. +It works by making the computer build a model based on this data in order to predict the outcome when given unknown input. + +* diff --git a/maths/README.md b/maths/README.md new file mode 100644 index 000000000000..71b0f1a3afdd --- /dev/null +++ b/maths/README.md @@ -0,0 +1,6 @@ +# Math + +A large collection of algorithms used in math, as well as some standard functions + +* +* diff --git a/matrix/README.md b/matrix/README.md new file mode 100644 index 000000000000..e2c13b80c80a --- /dev/null +++ b/matrix/README.md @@ -0,0 +1,6 @@ +# Matrix + +A matrix is a rectangular array of objects and a matrix represent a mathematical object such as a system of linear differential equations, geometric transformations or graphs. + +* ) +* diff --git a/networking_flow/README.md b/networking_flow/README.md new file mode 100644 index 000000000000..2f65fb61b095 --- /dev/null +++ b/networking_flow/README.md @@ -0,0 +1,6 @@ +# Networking flow + +>In graph theory, a flow network is a directed graph. [...] A network can be used to model traffic in a computer network, circulation with demands, fluids in pipes, currents in an electrical circuit, or anything similar in which something travels through a network of nodes. + +* +* diff --git a/neural_network/README.md b/neural_network/README.md new file mode 100644 index 000000000000..de582a54987a --- /dev/null +++ b/neural_network/README.md @@ -0,0 +1,8 @@ +# Neural Network + +A neural network is a network of neurons (nodes) arranged in layers and connected by synapses with a weight affected to each of those connections. +The weight of the synapses will change the behaviour of the network. + +They are typically used in applications where they can be trained with a dataset of information and expected output. + +* diff --git a/physics/README.md b/physics/README.md new file mode 100644 index 000000000000..85b1c4b3356f --- /dev/null +++ b/physics/README.md @@ -0,0 +1,3 @@ +# Physics + +Algorithm(s) with direct use in physics diff --git a/project_euler/README.md b/project_euler/README.md index c4c0a854472f..cef8b5251eac 100644 --- a/project_euler/README.md +++ b/project_euler/README.md @@ -1,13 +1,12 @@ # Project Euler -Problems are taken from https://projecteuler.net/, the Project Euler. [Problems are licensed under CC BY-NC-SA 4.0](https://projecteuler.net/copyright). +Problems are taken from , the Project Euler. [Problems are licensed under CC BY-NC-SA 4.0](https://projecteuler.net/copyright). Project Euler is a series of challenging mathematical/computer programming problems that require more than just mathematical insights to solve. Project Euler is ideal for mathematicians who are learning to code. The solutions will be checked by our [automated testing on Travis CI](https://travis-ci.com/github/TheAlgorithms/Python/pull_requests) with the help of [this script](https://github.com/TheAlgorithms/Python/blob/master/scripts/validate_solutions.py). The efficiency of your code is also checked. You can view the top 10 slowest solutions on Travis CI logs (under `slowest 10 durations`) and open a pull request to improve those solutions. - ## Solution Guidelines Welcome to [TheAlgorithms/Python](https://github.com/TheAlgorithms/Python)! Before reading the solution guidelines, make sure you read the whole [Contributing Guidelines](https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md) as it won't be repeated in here. If you have any doubt on the guidelines, please feel free to [state it clearly in an issue](https://github.com/TheAlgorithms/Python/issues/new) or ask the community in [Gitter](https://gitter.im/TheAlgorithms). You can use the [template](https://github.com/TheAlgorithms/Python/blob/master/project_euler/README.md#solution-template) we have provided below as your starting point but be sure to read the [Coding Style](https://github.com/TheAlgorithms/Python/blob/master/project_euler/README.md#coding-style) part first. diff --git a/quantum/README.md b/quantum/README.md index 423d34fa3364..c4dbf28e3cdb 100644 --- a/quantum/README.md +++ b/quantum/README.md @@ -1,15 +1,17 @@ # Welcome to Quantum Algorithms -Started at https://github.com/TheAlgorithms/Python/issues/1831 +Started at -* D-Wave: https://www.dwavesys.com and https://github.com/dwavesystems -* Google: https://research.google/teams/applied-science/quantum -* IBM: https://qiskit.org and https://github.com/Qiskit -* Rigetti: https://rigetti.com and https://github.com/rigetti +* D-Wave: and +* Google: +* IBM: and +* Rigetti: and ## IBM Qiskit -- Start using by installing `pip install qiskit`, refer the [docs](https://qiskit.org/documentation/install.html) for more info. -- Tutorials & References - - https://github.com/Qiskit/qiskit-tutorials - - https://quantum-computing.ibm.com/docs/iql/first-circuit - - https://medium.com/qiskit/how-to-program-a-quantum-computer-982a9329ed02 + +* Start using by installing `pip install qiskit`, refer the [docs](https://qiskit.org/documentation/install.html) for more info. + +* Tutorials & References + * + * + * diff --git a/scheduling/README.md b/scheduling/README.md new file mode 100644 index 000000000000..f52fa6335f70 --- /dev/null +++ b/scheduling/README.md @@ -0,0 +1,5 @@ +# Scheduling + +Scheduling is the action of assigning resources (ie. processors, humans) to perform tasks (ie. grade students, adding numbers) + +* ) diff --git a/searches/README.md b/searches/README.md new file mode 100644 index 000000000000..3394d95bee10 --- /dev/null +++ b/searches/README.md @@ -0,0 +1,5 @@ +# Searches + +Search algorithms will search for a value in a discrete or continuous list of values. + +* diff --git a/sorts/README.md b/sorts/README.md new file mode 100644 index 000000000000..35e4e6caa515 --- /dev/null +++ b/sorts/README.md @@ -0,0 +1,5 @@ +# Sorts + +Sorts algorithms are of paramount importance, because they are used to show data in a way that is easily understandable by humans and easily usable by other algorithms (such as search or merge algorithms). + +* diff --git a/strings/README.md b/strings/README.md new file mode 100644 index 000000000000..c447c36c8ed1 --- /dev/null +++ b/strings/README.md @@ -0,0 +1,4 @@ +# Strings + +A collection of algorithms used to perform tasks on a input string. +The output can be a simple word or a complete book of 500 pages. diff --git a/web_programming/README.md b/web_programming/README.md new file mode 100644 index 000000000000..a3798a887a3b --- /dev/null +++ b/web_programming/README.md @@ -0,0 +1,3 @@ +# Web Programming + +Examples of what can be done using the request module and internet.