{"id":19242267,"url":"https://github.com/hashfx/dsa","last_synced_at":"2025-10-25T00:12:25.009Z","repository":{"id":46792093,"uuid":"398230335","full_name":"hashfx/DSA","owner":"hashfx","description":"Data Structure and Algorithm (DSA) contributions","archived":false,"fork":false,"pushed_at":"2021-09-25T15:30:09.000Z","size":693,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-05T03:25:04.210Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hashfx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-20T09:53:38.000Z","updated_at":"2022-04-07T10:31:56.000Z","dependencies_parsed_at":"2022-09-14T00:11:31.215Z","dependency_job_id":null,"html_url":"https://github.com/hashfx/DSA","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashfx%2FDSA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashfx%2FDSA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashfx%2FDSA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashfx%2FDSA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hashfx","download_url":"https://codeload.github.com/hashfx/DSA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240331317,"owners_count":19784644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T17:13:49.073Z","updated_at":"2025-10-25T00:12:19.990Z","avatar_url":"https://github.com/hashfx.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![.NET](https://github.com/MakeContributions/DSA/actions/workflows/dotnet.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/dotnet.yml)\n[![C++](https://github.com/MakeContributions/DSA/actions/workflows/cpp.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/cpp.yml)\n[![Go](https://github.com/MakeContributions/DSA/actions/workflows/go.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/go.yml)\n[![Node.js CI](https://github.com/MakeContributions/DSA/actions/workflows/node.js.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/node.js.yml)\n[![Python](https://github.com/MakeContributions/DSA/actions/workflows/python.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/python.yml)\n[![codespell](https://github.com/MakeContributions/DSA/actions/workflows/codespell.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/codespell.yml)\n[![CodeQL](https://github.com/MakeContributions/DSA/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/codeql-analysis.yml)\n[![Discord](https://img.shields.io/discord/863049619734790185?color=7389D8\u0026logo=discord\u0026logoColor=ffffff\u0026label=\u0026labelColor=6A7EC2)](https://discord.gg/ydWxdqbTyK)\n\n# Data Structures and Algorithm\n\nData structure and Algorithm (DSA)\n\n## Explanations\n- [English](./docs/en)\n- [繁體中文](./docs/zh-tw)\n- [日本語](./docs/ja)\n\n## Contribution Guidelines\n\n### 1. Contribution Specifications\n\nThe problem being contributed must either be a simple **file** (**Eg.** [`kruskal-algorithm.cpp`](./algorithms/CPlusPlus/Graphs/kruskal-algorithm.cpp), [`linear-search.java`](./algorithms/Java/searching/linear-search.java)) or a more complex **directory** ([`palindrome/`](./algorithms/Rust/strings/palindrome)). This is a unit `problem`.\n\nThe 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.)\n\nA unit `problem` must conform to the following specifications:\n\n- The name should be in lowercase. (**Eg.** `palindrome/`, `binary-search.cpp` etc.).\n- Each word must be separated by a **dash** or a **hyphen** (`-`).\n\n**If you have a problem that belongs to a new _topic_ or _category_ than one which are present:**\n\n1. Create a new folder and an index for it inside (a readme, `README.md` file).\n2. To each new index file, write the readme with your `problem` in it ([Markdown Documentation](https://guides.github.com/features/mastering-markdown/)).\n3. The folder name can also only contain **lowercase characters** and **dashes** or **hyphens** (`-`) (Eg. `strings` `sorting` etc.)\n\n#### Simple (File) Contributions\n\nThe file should conform to the `problem` specification, and the extension (**Eg.** `linear-search.java`, `kruskal-algorithm.cpp`, `count-inversions.js` etc.)\n\n#### Project/Folder-based Contributions\n\nThe project and folder-based contributions have a bit more stricter contribution contribution specifications.\n\nThe folder should conform to the `problem` specification, along with the following specifications\n\n**Folder Structure**\n\n```bash\nproblem-name\\\n| - .gitignore\n| - README.md\n| - Makefile       # or the specific specification/requirements/configuration file\n| - src\\\n    | - main.ext\n```\n\n#### `README.md` Specification / Template\n\n````markdown\n# \u003cTitle of the Problem\u003e\n\n\u003c description of the problem \u003e\n\n## Prerequisites\n\n- prerequisite library or package\n- [prerequisite library](https://www.example.com/link-to-official-library)\n\n## Instructions\n\n- instructions to run the project\n- \u003c Simple and reproducible commands to execute the project \u003e\n  ```bash\n   make # or 'cargo run', or 'dotnet run' or 'mvn exec:java' etc.\n  ```\n\n## Test Cases \u0026 Output \u003c if exists\u003e\n\n\u003c If you can provide test cases, describe it here, else remove this section \u003e\n````\n\n#### `.gitignore` File\n\n```gitignore\n# add all output files and build files to be excluded from git tracking\nmain     # executable file also must have the project name\ntarget/  # the build file, for example for rust\n```\n\n#### Build File / Specification File / Configuration File\n\nIt can be any of the following ones\n\n- **C/C++**: `Makefile`\n- **Python**: `requirements.txt`\n- **JavaScript**: `package.json` and `package-lock.json`\n- **Rust**: `Cargo.toml` and `Cargo.lock`\n- **Go**: `go.mod`\n\n#### Source Code File\n\nThe 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.\n\nAgain, the source codes must conform to a valid file structure convention that the programming language enforces.\n\n### 2. Naming Convention\n\nThe programming should keep the naming convention rule of each programming language.\n\n### Other topic\n\n- [First-time contribution](CONTRIBUTING.md)\n\n## Reviewers\n\n| Programming Language | Users                                             |\n| -------------------- | ------------------------------------------------- |\n| C or C++             | @Arsenic-ATG, @UG-SEP, @aayushjain7               |\n| Java                 | @TawfikYasser, @cyberwizard1001, @aayushjain7     |\n| C#                   | @ming-tsai                                        |\n| Go                   | @atin                                             |\n| Python               | @Arsenic-ATG, @atin, @sridhar-5, @cyberwizard1001 |\n| JavaScript           | @ming-tsai                                        |\n\n## Contributors\n\n\u003ca href=\"https://github.com/MakeContributions/DSA/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=MakeContributions/DSA\" /\u003e\n\u003c/a\u003e\n\n## Open Graph\n\n\u003cimg src=\"https://opengraph.github.com/3b128f0e88464a82a37f2daefd7d594c6f41a3c22b3bf94c0c030135039b5dd7/MakeContributions/DSA\" /\u003e\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashfx%2Fdsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashfx%2Fdsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashfx%2Fdsa/lists"}