大量のデータを使用してアルゴリズムをチェックするシェルスクリプトを作成する必要があります(.inファイルに保存されたパッケージをテストします。すべてのパッケージには.inファイルを含むフォルダーが含まれ、他のパッケージには.outファイルを含むフォルダーが含まれます)。 1つのパッケージにファイルがあるため、手動で行う意味はありません。この.inファイルを開き、c ++プログラムの入力をリダイレクトし、このプログラムの出力もリダイレクトする(結果を.outファイルに保存する)ループが必要ですが、要点は、この言語を必要なだけ速く取得できないことです。 。そして、このスクリプトで、アルゴリズムの結果をパッケージの.outファイルと比較したいと思います。
for f in ExternalIn/*.in; do//part of code which opens process with my algorithm and compare its .out file to .out file from package
欠落しているファイル、空白の安全性などのチェックをスキップするには、おそらく次のようなものが必要です。
for f in ExternalIn/*.in; do
# diff the result of my_cpp_app eating file.in with file.out
# and store the comparison result in file.diff
diff ${f/.in/.out} <(my_cpp_app <$f 2>/dev/null) > ${f/.in/.diff}
done
私はおそらくfind
/xargs
パイプラインでそれを行うでしょうが、それはより安全であるだけでなく、並列実行も可能にします。
またはMakefile
、これを作成して使用することもできますmake
。これは、結局のところ、まさにこの種の作業のためのツールです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加