Run your answer to AtCoder problems with sample cases without copy-pasting! This script scrapes sample inputs/outputs, and then run your code with the sample cases.
- Python 3.x
- Beautiful Soup 4
- requests
- keyring
# [OPTIONAL] Create & activate conda environment with required packages
conda create -n atcoder -y beautifulsoup4 requests keyring; conda activate atcoder
# Clone this repository
git clone https://github.com/yamaton/atcoder-scrape-and-local-test.git
# Create a symbolic link to ~/bin
ln -s $(readlink -f ./atcoder-scrape-and-local-test/src/run_with_atcoder_sample.py) ~/bin/atcoder
# Set path to ~/bin (choose one from following)
# for bash (skip otherwise)
echo "export PATH=$HOME/bin:$PATH" >> ~/.bash_profile
source ~/.bash_profile
# for zsh (skip otherwise)
echo "export PATH=$HOME/bin:$PATH" >> ~/.zshenv
source ~/.zshenv
# for fish (skip otherwise)
echo "set -gx PATH \$PATH $HOME/bin" >> ~/.config/fish/config.fish
# Securely save username and password locally
# ... enter username and password following the dialogue
python ./atcoder-scrape-and-local-test/src/set_login_info.py
atcoder path/to/solution/like/abc130/a.cpp
NOTE: the filename or file path must contain a problem ID. You may have another
string in the filename as long as they are separated by space , or hyphen
-
, or underscore _
. For example, following file paths are all allowed.
foo/bar/abc130_a.cpp
abc130/a.cpp
abc130/a-Rounding.cpp
But filename such like abc130a.cpp
does not work.
The script run_with_atcoder_sample.py
feeds the samples cases to your code as standard input, and returns “ok” if the standard output agrees with the samples.
Otherwise, it returns “Incorrect”, and shows sample input, your output, and sample output. This happens as long as output strings do not agree exactly.
The script identifies language by file extension. Here is what's supported currently.
- C++14 (GCC) (.cc / .cpp / .cxx / .c++)
- Python3 (.py)
- Rust (.rs)
- F# (.fs / .fsx)
- Haskell (.hs)
- Kotlin (.kt)
- Nim (.nim)
- D (.d)
- Go (.go)
Compilation and execution mostly follows the official rules. For example in case of C++14 (GCC),
g++ -std=gnu++1y -o abc130_a.exe abc130_a.cc
abc130_a.exe < abc130_a_0.txt # input file is auto generated
- Better setup
- Command-line options
- Toggle extra libraries like boost
- Select compiler / interpreters like clang, pypy
- More languages
- Run remotely on "Custom Test" in AtCoder server
- Submission?