ElectronとHTML/JSの習作として開発した、オンラインC++コンパイラデスクトップアプリケーション。
コンパイラ・実行部分は、Wandbox または Paiza.IOに依存しています。
また、競技プログラミングのような問題を作問することもできます。
問題は、.prob
ファイルとして解答者に配布します。
問題の例は、./example_problems/にあります。
.prob
ファイルを作成するために、
1問ごとに、以下の2つのファイルを作成します。
ファイル名は、必ず以下のとおりである必要があります。
problem.pdf
problemInfo.json
問題のpdfファイル。作成方法は問いません。フォントサイズはやや大きめ推奨です。
問題についての情報を記したjsonファイルです。
テストケースについて、標準入力に与える文字列input
と、それに対応する、期待する出力expect
を設定します。
テストケースは、任意の件数設定することができます。
{
"testCases": [
{
"input" : "100 200 300",
"except" : "600\n"
},
{
"input" : "1 2 3",
"except" : "6\n"
},
{
"input" : "10 20 30",
"except" : "60\n"
},
{
"input" : "1000 2000 3000",
"except" : "6000\n"
}
]
}
また、期待する出力と実際の出力について、許容する誤差を設定することもできます。
許容する誤差を設定した場合には、期待する出力に以下の制限が発生します。
- スペース区切りのみ対応
- すべての出力が1行目にある必要がある
- すべての出力が数値である必要がある(
ABC
のような文字列を含むことができない)
以下は、許容する誤差を設定するproblemInfo.json
の例です。
{
"errorMargin": 0.01,
"testCases": [
{
...
}
}
パッケージ化された問題のファイル拡張子は、.probです。
.prob形式にパッケージングされた問題を、解答者へ配布することができます。
なお、probファイルは、本質的にはzipファイルです。
すなわち、zip圧縮して、その拡張子を**.prob
へ変更するだけです。
具体的には、以下の手順でパッケージすることができます。
- 2つのファイル(
problem.pdf
、problemInfo.json
)を、zip圧縮する。
Warning
展開時、直下に2つのファイルがあるようにしてください。
Windowsなら、エクスプローラーで2つのファイルを複数選択した状態で右クリック、[送る]、[ZIP(圧縮)形式フォルダ]
- ファイルの拡張子を
.prob
にリネームする。ファイル名は任意の名前でOKです。
Electronなどについてのメモを残しておきました。
参考程度にどうぞ。
./memo_about_electron.md
- git
- Node.js v18.13.0
git clone https://github.com/mewmew-tea/WebCompiler.git
cd WebCompiler
npm install
npm run start
Windows(x64)
npx electron-builder --win --x64 --dir