An utility application to help managing your C++ OI workspaces.

Overview

oi_helper

oi_helper is an utility application to help managing your C++ OI workspaces.

Why oi_helper

We all know that we often need a project manager when we're developing an application or a library. For example, I use cargo to manage this project. But, there is a special kind of programming, which is for algorithm competitions. This kind of programming is often called OI by people, or at least in China. OI is very special because an OI project often has a lot of source files and each source file can be compiled in to an complete binary executable file alone. It's quite different to those ordinary developings. But who said that OIers (people who do OIs) are not able to have a project manager? Usually they may need to compile everything by themselves. In the past, they should write everything by themselves, includeing #includes and usings. But with the codegen ability of oi_helper, they are no longer need to do this because oi_helper will help them generate what they want, for example, the default template is:

// <file_name>
// Template generated by oi_helper (https://github.com/onion108/oi_helper)
//

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
using namespace std;

static const int MAXN = 1e5+114514;

int main() {
    return 0;
}

You can see that oi_helper included some header files that OIers may want to use, and also generates the MAXN constant, which is very useful when doing DP or other algorithms that needs arrays.

Installation

If you want to install it easily, just type:

cargo install oi_helper

Build

If you are interested in building it by yourself, then type:

cargo build

Before doing this you should install rust from here.

Also, there is a special kind of versions called developement previews, where the version number will end with devpreview. devpreviews are unstable and may cause some problems, and even may fails the compiling, but the devpreview have the newest changes. If you really want to use the features that only work with the devpreview, you can type the following command after cloning this repository:

git switch dev
cargo install --path .

If it builds, you will now have the devpreview version instead of your normal release.

There are another way to install devpreviews, that is using cargo install oi_helper and add --version and pass the version number to it (e.g., cargo install oi_helper --version 2.0.0-1-devpreview will install the second stable devpreview). devpreviews that can be installed in this way are called stable devpreviews.

Current devpreview's features:

  • Added test cases.

Current devpreview's todo:

  • Add result comparations.

Usage Documentation

Click Here

You might also like...
This CLI will help you improve your typing accuracy and speed
This CLI will help you improve your typing accuracy and speed

This CLI will help you improve your typing accuracy and speed! Improve your personal bests and look back on your previous records in a graph. All in the convenience of your own terminal!

A minimalist tool for managing block-lists from the terminal.
A minimalist tool for managing block-lists from the terminal.

Block List A minimalist hosts-based tool for managing block lists and ad-blocking. This project uses the excellent and regularly updated Unified Hosts

Tool for managing dotfiles directories; Heavily based on rcm.

Paro paro : to prepare, get ready / set, put / furnish, supply. Tool for managing dotfiles directories; Heavily based on rcm. TODO Rust Boilerplate CI

An interface for managing collections of labeled items and generating random subsets with specified restrictions

An interface for managing collections of labeled items and generating random subsets with specified restrictions

Work-in-progress software for managing the Azeron keypad on any operating system.
Work-in-progress software for managing the Azeron keypad on any operating system.

azeron-cli A small, unfinished CLI application intended to manage the Azeron Cyborg. The code is still in a very messy state and doesn't look very rus

A fast and robust MLOps tool for managing data and pipelines

xvc A Fast and Robust MLOps Swiss-Army Knife in Rust ⌛ When to use xvc? Machine Learning Engineers: When you manage large quantities of unstructured d

A Modern And Secure CLI Tool For Managing Environment Variables
A Modern And Secure CLI Tool For Managing Environment Variables

Envio is a command-line tool that simplifies the management of environment variables across multiple profiles. It allows users to easily switch between different configurations and apply them to their current environment

🛜 TUI for managing bluetooth devices
🛜 TUI for managing bluetooth devices

TUI for managing bluetooth devices 💡 Prerequisites A Linux based OS with bluez installed. 🚀 Installation 📥 Binary release You can download the pre-

KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, configuring, and running different versions of Shinkai Node
KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, configuring, and running different versions of Shinkai Node

KAIVM - Shinkai Version Manager KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, confi

Releases(2.0.0)
  • 2.0.0(Oct 2, 2022)

    • Added support for local judging. (Currently supporting AC, WA and TLE.)
    • Added support for automatically getting sample input-outputs from Luogu, a Chinese OI Site.
    • Added a few more templates for oi_helper create.
    Source code(tar.gz)
    Source code(zip)
Owner
27Onion Nebell
Wooh~~
27Onion Nebell
A visual studio code's workspaces organizer written in Rust

ruscode A visual studio code's workspaces organizer written in Rust Supports Linux, and Windows. What is a workspaces organizer? After months of or ev

晧暐 8 Dec 15, 2022
Create, reorder, group, and focus workspaces easily in i3. Fully configurable with enhanced polybar modules.

Create, reorder, group, and focus workspaces fast and easily in i3. Features Focus Mode: Eliminate Distractions Enable Focus Mode: Use groups and focu

i3-wsman 15 Sep 2, 2023
laydown is a simple CLI application to help you prepare for your next Daily Standup

laydown is a simple CLI application to help you prepare for your next Daily Standup. No longer shall your name be called on only for you to stare into the abyss while you struggle to remember what you did yesterday.

badjr13 83 Dec 26, 2022
lemmy-help is a emmylua parser as well as a CLI which takes that parsed tree and converts it into vim help docs.

lemmy-help is a emmylua parser as well as a CLI which takes that parsed tree and converts it into vim help docs.

Vikas Raj 117 Jan 3, 2023
A utility for managing cargo dependencies from the command line.

cargo edit This tool extends Cargo to allow you to add, remove, and upgrade dependencies by modifying your Cargo.toml file from the command line. Curr

Pascal Hertleif 2.7k Jan 6, 2023
booky is a minimalstic Tui tool for managing your growing book collection.

booky booky is a minimalistic TUI tool for managing your growing book collection. It is writtin in Rust and uses diesel as it's orm together with sqli

null 3 Jul 21, 2023
Command-line tool designed to simplify the process of managing multiple .NET SDK versions on your system

.NET Version Manager (dver) Overview dver is a command-line tool designed to simplify the process of managing multiple .NET SDK versions on your syste

Sergio Triana Escobedo 5 Aug 23, 2024
A CLI tool which can help you automatically kill process of your choice. Useful for freeing up memory and CPU usage!

Quickiller There are always programs such as chrome that keep eating up your resources even when closed! The only way to prevent this is to kill all o

Codingsquirrel 1 Dec 8, 2021
STKLR is a tool to help you automatically link up named stuff in your rust docs!

_____ _______ _ ___ _____ / ____|__ __| |/ / | | __ \ | (___ | | | ' /| | | |__) | \___ \ | | | < | | | _ / ___

Jer 3 Oct 25, 2022
Help your Flipper Zero perform tricks!

backflip: Help your Flipper Zero perform tricks! backflip is a CLI multi-tool to help augment and extend the capabilities of the Flipper Zero. It curr

null 4 Nov 27, 2022