Data structure and Algorithm (DSA)
The problem being contributed must either be a simple file (Eg. kruskal-algorithm.cpp, linear-search.java) or a more complex directory (palindrome/). This is a unit problem.
The directory tree has the following convention of algorithms/{language}/{category}/{problem}, where {language} represents the language code of the problem (Eg. CPlusPlus for C++, CSharp for C# etc.), {category} is the topic or category of the problem being contributed (Eg. strings, sorting, linked-lists etc.), and {problem} is a conforming name to the problem (Eg. linear-search.cpp, palindrome, queue-linked-list.cpp etc.)
A unit problem must conform to the following specifications:
- The name should be in lowercase. (Eg.
palindrome/,binary-search.cppetc.). - Each word must be separated by a dash or a hyphen (
-).
If you have a problem that belongs to a new topic or category than one which are present:
- Create a new folder and an index for it inside (a readme,
README.mdfile). - To each new index file, write the readme with your
problemin it (Markdown Documentation). - The folder name can also only contain lowercase characters and dashes or hyphens (
-) (Eg.stringssortingetc.)
The file should conform to the problem specification, and the extension (Eg. linear-search.java, kruskal-algorithm.cpp, count-inversions.js etc.)
The project and folder-based contributions have a bit more stricter contribution contribution specifications.
The folder should conform to the problem specification, along with the following specifications
Folder Structure
problem-name\
| - .gitignore
| - README.md
| - Makefile # or the specific specification/requirements/configuration file
| - src\
| - main.ext# <Title of the Problem>
< description of the problem >
## Prerequisites
- prerequisite library or package
- [prerequisite library](https://www.example.com/link-to-official-library)
## Instructions
- instructions to run the project
- < Simple and reproducible commands to execute the project >
```bash
make # or 'cargo run', or 'dotnet run' or 'mvn exec:java' etc.
```
## Test Cases & Output < if exists>
< If you can provide test cases, describe it here, else remove this section ># add all output files and build files to be excluded from git tracking
main # executable file also must have the project name
target/ # the build file, for example for rustIt can be any of the following ones
- C/C++:
Makefile - Python:
requirements.txt - JavaScript:
package.jsonandpackage-lock.json - Rust:
Cargo.tomlandCargo.lock - Go:
go.mod
The source code files, should either be in src/ folder (Eg. src/main.cpp or src/main.js) or the root folder (Eg. palindrome.go or App.java) where ext is the file extension for the specific programming language.
Again, the source codes must conform to a valid file structure convention that the programming language enforces.
The programming should keep the naming convention rule of each programming language.
| Programming Language | Users |
|---|---|
| C or C++ | @Arsenic-ATG, @UG-SEP, @aayushjain7, @Ashborn-SM |
| Java | @TawfikYasser, @aayushjain7 |
| C# | @ming-tsai, @Waqar-107 |
| Go | |
| Python | @Arsenic-ATG, @sridhar-5 |
| JavaScript | @ming-tsai |