Skip to main content

Command line interface for BOJ

Project description

boj-cli

백준 온라인 저지 커맨드라인 인터페이스

설치

$ pip install boj-cli

로컬 설정

filetype.default_language에 들어갈 수 있는 값들은 지원 언어를 참고해주세요.

~/.boj-cli/config.json

command:
  init:
    lang: cpp # Make sure that you have ~/.boj-cli/templates/template.cpp
  random:
    tier: g1..g5
    tags:
      - dp
      - math
  run:
    verbose: false
    timeout: 15
  submit:
    verbose: false
    timeout: 15
    open: onlyaccepted
filetype:
  py:
    default_language: 'python3'
    run: 'python3 $file'
  cpp:
    default_language: 'c++17'
    compile: |
      g++ -std=c++17 -O2 -Wall -Wno-sign-compare $file -o a.out
    run: './a.out'

사용법

$ boj --help
usage: boj [-h] [-v] {login,submit,open,run,init,random} ...

positional arguments:
  {login,submit,open,run,init,random}
    login               logs in to BOJ
    submit              submits your solution and trace the realtime statement
    open                opens a problem of given id in browser
    run                 runs generated testcases
    init                creates testcases in current directory
    random              queries and opens a random problem in browser

options:
  -h, --help            show this help message and exit
  -v, --version         show version

로그인

백준 온라인 저지에서는 로그인 시 reCAPTCHA를 사용하고있기 때문에 로그인 과정은 조금 번거로울 수 있습니다.

$ boj login

위 명령어를 실행하면 selenium 브라우저가 실행됩니다. 로그인 정보를 입력하고 reCAPTCHA를 수행하면 로그인 세션 정보는 암호화되어 저장됩니다.

로그인 시 "로그인 상태 유지" 체크 박스를 반드시 선택해주세요.


테스트케이스 및 템플릿 파일 불러오기

백준 온라인저지에 올라와있는 문제에서 테스트케이스를 추려내어 현재 경로에 testcase.toml 파일을 생성합니다. 생성된 testcase.toml의 포멧에 맞게 커스텀 테스트케이스 또한 추가할 수 있습니다. lang 옵션에 값을 할당하면 템플릿 파일을 읽어 현재 경로에 {문제번호}.{언어} 파일을 생성합니다.

$ boj init {PROBLEM_ID}

Options

--lang str: 언어를 특정해서 ~/.boj-cli/templates/template.{lang} 파일을 읽어올 수 있도록 합니다.
            값이 존재하지 않으면 템플릿 파일을 불러오지 않습니다.

테스트케이스 실행하기

init 명령어로 생성한 테스트케이스를 활용해 testcase.toml 파일에 있는 모든 테스트케이스를 비동기적으로 실행하고 정답을 비교합니다.

$ boj run {FILE_PATH}

Options

--verbose bool: 자세한 아웃풋을 출력합니다. (예: 컴파일 에러)  
--timeout int(sec): 각 테스트케이스의 타임아웃을 설정합니다 (Default: 5초)

코드 제출하기

로컬 소스 파일을 백준 온라인 저지에 제출하고 채점 현황을 실시간으로 출력합니다.

$ boj submit {FILE_PATH}
ex) boj submit ./1234.cpp

Options

--lang str: 제출할 언어를 선택합니다. 옵션이 주어지지 않은경우 local config 값으로 실행됩니다.
--open [ open | close | onlyaccepted ]: 코드 공개 여부를 설정합니다.

브라우저에서 문제 링크 열기

문제 링크를 기본 브라우저에서 엽니다.

$ boj open {PROBLEM_ID}
ex) boj open 1234

랜덤 문제 브라우저에서 열기

랜덤 문제 링크를 기본 브라우저에서 엽니다.

$ boj random --tier g1..g5 --tags dp math

여러개의 tags 옵션은 OR 조건으로 동작합니다. '내가 풀지 않은 문제' 만 쿼리됩니다.

Options

--tier: 문제 티어 쿼리
--tags: 문제 태그 쿼리

지원 언어

  • c++17
  • python3
  • pypy3
  • c11
  • text
  • golfscript
  • java8
  • c++98
  • ruby
  • c99
  • c++11
  • java11
  • kotlin(jvm)
  • c++14
  • swift
  • java8(openjdk)
  • c++20
  • c#
  • node.js
  • go
  • d
  • rust2018
  • go(gccgo)
  • c++17(clang)
  • java15
  • d(ldc)
  • php
  • rust2015
  • pascal
  • lua
  • perl
  • f#
  • visual-basic
  • objective-c
  • objective-c++
  • c99(clang)
  • c++98(clang)
  • c++11(clang)
  • c++14(clang)
  • c11(clang)
  • c++20(clang)
  • c90
  • c2x
  • c90(clang)
  • c2x(clang)
  • typescript
  • assembly(32bit)
  • assembly(64bit)
  • bash
  • fortran
  • scheme
  • ada
  • awk
  • o-caml
  • brainf**k
  • whitespace
  • tcl
  • rhino
  • cobol
  • pike
  • sed
  • intercal
  • bc
  • algol68
  • befunge
  • free-basic
  • haxe
  • lolcode
  • 아희
  • system-verilog
  • rust2021
  • scala

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boj-cli-0.2.3.tar.gz (28.3 kB view hashes)

Uploaded Source

Built Distribution

boj_cli-0.2.3-py3-none-any.whl (27.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page