Code Monkey home page Code Monkey logo

verification-helper's Introduction

Online Judge Verification Helper

Actions Status GitHub Pages PyPI LICENSE

README 日本語バージョン

What is this?

This is a tool to easily automate the verify process of your code library for competitive programming.

How to use

Set up the repository for the library

Please read this: https://online-judge-tools.github.io/verification-helper/installer.html

Running the program

Installation

$ pip3 install online-judge-verify-helper

Python 3.6 or above is required.

Automating the verification

First, specify the problem URL to be used to verify the library in the file including .test. in its path (e.g. for C++, write #define PROBLEM "https://judge.yosupo.jp/problem/unionfind" in a file like example.test.cpp; see the reference for other languages). Then, run the following command to check if the verification can be performed.

$ oj-verify run

Currently, problems on Library Checker and Aizu Online Judge are supported. For the details, see the reference.

Autoexpansion of #includes

The include statements in your files in the form of #include "foo.hpp" can be expanded, similar to the functionality provided by webpack for JavaScript. This is to solve the problems that most online judges do not support submitting multiple files. The function can be used by running the following command:

$ oj-bundle main.cpp

If your competitive programming library resides outside the current directory, please specify the flag in the form of -I path/to/your/library. I recommend make shell aliases like alias oj-bundle='\oj-bundle -I path/to/your/library'.

Include guards like #pragma once are partially supported. If you have files that will be included multiple times but you only want them to appear once in the generated code, add #pragma once to the first line of the files.

Generating Documentation

Run the following command to generate documentation in .verify-helper/markdown/. Example: https://online-judge-tools.github.io/verification-helper/ GitHub Pages

$ oj-verify docs

If documentation generators like Doxygen are found when generating documentation, they will be automatically used. TeX expressions like $(N \sum_i A_i)$ are also supported by the MathJax library. For the details, see the reference.

Tips

  • If you cannot find problems to verify your library, you can refer to other users' libraries. You can find all users of online-judge-verify-helper at https://github.com/search?q=online-judge-verify-helper+path%3A.github.
  • If you cannot find problems to verify your library anywhere, we suggest that you add a problem to Library Checker. You can use Hello World as a dummy problem to run your own stress tests.
  • You do not need to display the MIT License if you call online-judge-verify-helper from GitHub Actions (Details, in Japanese).
  • This is tool to efficiently verify your library, not to check or prettify your code. If you need such functions, you can try formatters like clang-format or linters like cppcheck.

Authors

verification-helper's People

Contributors

kmyk avatar beet-aizu avatar tsutaj avatar web-flow avatar jellc avatar key-moon avatar sash2104 avatar chaemon avatar knuu avatar kjnh10 avatar southball avatar morioprog avatar ryo-n avatar zer0-star avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.