알고리즘 문제 풀이를 위한 I/O 검증 자동화 CLI
Baekjoon Online Judge, ALGOSPOT 등의 Problem Solving (이하 "PS") 온라인 저지에서는 문제의 입력이 Standard Input(이하 "stdin")으로 주어지고, 정답을 Standard Output(이하 "stdout")으로 출력해야 하는 경우가 많습니다.
그에 반해, Programmers, LeetCode 등은 문제의 입력을 함수의 인자로, 정답을 함수의 반환값으로 하고 있습니다.
solve.io는 stdin/stdout를 기반으로 하는 PS 함수를 작성 후, 파일에 기재된 입력값을 넣어 실행한 결과값이 파일에 기재된 출력값과 일치하는지 검증하는 과정을 자동화하는 CLI입니다.
cd path/to/js-package
npm install -D @bigsaigon333/solve.io
"scripts": {
"solve.io": "solve.io"
}
path/to/problem-directory
├── any_file_name_is_fine.js
├── a.in
├── a.out
├── b.in
└── b.out
- 디렉토리 내에 js파일은 단 하나여야 합니다. (파일명은 아무 파일명이나 상관없습니다.)
- stdin에 해당하는 파일은 확장자를
.in
으로, stdout에 해당하는 파일은 확장자를.out
으로 설정하여야 합니다. 이 때,*.in
과*.out
쌍이 맞아야 합니다. 예시)test1.in
,test1.out
*.in
과*.out
의 쌍이 맞지 않는 파일은 무시됩니다. 예시)c.in
만 존재하고c.out
은 없으면c.in
에 대한 테스트는 수행하지 않습니다.
npm run solve.io path/to/problem-directory
- 절대경로
npm run solve.io /Users/bigsaigon333/github/path/to/problem-directory
- package.json 을 기준으로 하는 상대경로
npm run solve.io path/to/problem-directory
- 현재 디렉토리를 기준으로 하는 상대경로
cd path/to/problem-directory
npm run solve.io .
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 첫째 줄에 A+B를 출력한다.
예제 입력 1 2
예제 출력 3
// 1000.js
const answer = require("fs")
.readFileSync(0, "utf-8")
.split(" ")
.map(Number)
.reduce((a, b) => a + b);
console.log(answer);
// a.in
1 2
// a.out
3
src/1000
├── 1000.js
├── a.in
└── a.out
npm run solve.io src/1000
> boj-with-js@0.1.0 solve.io
> solve.io src/1000
test case 1) PASSED
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!