# create-algorithm

Project Generator  
TLDR: Automatically re-execute your algorithm problem source code upon modification.

## Key Features

- Automatically execute test cases whenever the source code changes
- JS and TS linting with prettier and eslint

## Supported Languages:

- C++
- C#
- C
- Python
- Java
- Kotlin
- JavaScript (Automatic test case testing not supported)
- TypeScript (Automatic test case testing not supported)

## Preview

![example](https://github.com/user-attachments/assets/480b41b1-ac1f-48a4-900b-a863109e478d)

## Installation Instructions

1. Install npm. Installation link: [Nodejs](https://nodejs.org/en)
2. In the terminal, navigate to the desired path for the project folder and enter the following command:  
   `npm create algorithm@latest`
3. Open the generated project folder `algorithm` with your preferred IDE.

# Usage Instructions

## Commands

These commands automatically execute the code and test cases upon modification.  
select and enter the command for your language in terminal:

- `npm run cpp`
- `npm run cs`
- `npm run c`
- `npm run py`
- `npm run java`
- `npm run kotlin`
- `npm run js`
- `npm run ts`

If you are a C++ user and do not have the GCC compiler installed, please install it from [MSYS2](https://www.msys2.org/).

## Source Code

Enter your code in the source code file for your preferred language at the following paths.
_Ensure to enter the appropriate command for the language you are using to enable automatic re-execution._

- C++: `src/cpp/main.cpp`
- C#: `src/cs/Program.cs`
- C: `src/c/main.c`
- Python: `src/py/main.py`
- Java: `src/java/Main.java`
- Kotlin: `src/kt/Main.kt`
- Javascript: `src/js/main.js`
- Typescript: `src/ts/main.ts`

## Enable automatic re-grading feature

To enable the automatic re-grading feature, you must enter  
`// baekjoon problem_number` at the very top of the source code. Please see the preview.

Currently, only [boj](https://www.acmicpc.net/) is supported for this feature. Other platforms are not supported at this time. The following identifiers are treated the same:

## Custom Test Case

You can also add custom test case for each run! Enter your input in `src/input.txt` file. The process will automatically restart upon modification.

# License

This project is licensed under the MIT License.
