https://mofecoder.com/contests/cyan_or_less_01
完了したら ✔ を書く
問題名 | Writer | 問題文 | テストケース | 想定解実装 | (Python AC) | 解説 | MOFE 登録 |
---|---|---|---|---|---|---|---|
Cyan or Less | Kyo_s_s | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
f(f(f(f(f(x))))) | Kyo_s_s | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Unions | yasunori | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
X-word Database | Kyo_s_s | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Long Chess Board | yasunori | ✔ | ✔ | ✔ | ✔ | ✔ | |
LCM and GCD | yasunori | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Range Rotate Query | loop0919 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Deque Inversion | Nichi10p | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Counting Zig Zag Sequence | Ackvy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Subset Mex | Kyo_s_s | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Colorful Balls | Ackcy | ✔ | ✔ | ✔ | ✔ | ✔ |
statement.md
に記述、そのまま MofeCoder に登録できるようにするこのリポジトリをクローンする
rime を導入する
$ pip install rime
$ rime add . problem (問題名)
問題のディレクトリで、
$ rime add . solution (解法の名前)
cpp-correct
など
C++なら cxx_solution(src='main.cc', flags=["-std=c++20", "-O2", "-Wall", "-Wextra"])
とする
その中で main.cc
を作成し、解法コードを書く
challenge_cases=[]
を足すとその解法では落ちることをテストしてくれる
問題のディレクトリで、
$ rime add . testset tests
generator/validator は後で弄ることにする、そのまま抜けて OK
入力は xxx.in
、出力は xxx.diff
にする
問題のディレクトリで、
$ rime test . -k
└─problem title
├─PROBLEM
├─statement.md
├─cpp-correct-all
│ ├─main.cc
│ └─SOLUTION // expected_score(100) とする
├─cpp-correct-task1
│ ├─main.cc // 部分点想定解法では最初に入力validateをすること!
│ └─SOLUTION // 部分点を設定し、challenge_cases=[] を書く
├─cpp-correct-task2 ...
└─tests
├─TESTSET
├─task1_hogehoge.in
├─task1_hogehoge.diff
├─ ...
└─validator.py
TESTSET
で以下のように部分点を設定 得点は各問題に準拠する
subtask_testset(name='task1', score=20, input_patterns=['task1_*.in'])
subtask_testset(name='task2', score=30, input_patterns=['task2_*.in'])
subtask_testset(name='all', score=50, input_patterns=['*.in'])
$ python3 export.py
をすると、export-testcases
というフォルダが作成されて、その中の .zip
がそのまま MofeCoder にアップロードできる
サンプルとそれに対する説明の付与は自分でやらないとダメ 問題文によって subtask2 に subtask1 が含まれている/いないがあるので、それぞれちゃんとしないとダメ