前提
- 基本的に ABC しかやっていない
- ABC 以外の問題が出たときに同じような構成で楽がしたい
Tree
abc_prepare.sh の中身
if [ -z "" ]; then
echo "You should set contest number"
exit 1
fi
mkdir -p ABC/\
mkdir -p ABC/\/src
touch ABC/\/Cargo.toml
echo "[package]
name = \"abc_$1\"
version = \"0.1.0\"
authors = [\"root\"]
edition = \"2018\"
[dependencies]
proconio = \"0.4.5\"
itertools = \"0.10.5\"
ac-library-rs = \"0.1.1\"" > ABC/\/Cargo.toml
alphabet=(A B C D E F G Ex)
for abc in ${alphabet[@]}; do
lower_case=$(echo $abc | tr 'A-Z' 'a-z')
touch ABC/\/src/$lower_case.rs
echo "
[[bin]]
name = \"$lower_case\"
path = \"src/$lower_case.rs\"" >> ABC/\/Cargo.toml
echo "use proconio::input;
fn main(){
input!{
};
}" > ABC/\/src/$lower_case.rs
done
echo "[workspace]
members = [
\"ABC/\\",
\"ironclad_rule\"
]" > Cargo.toml;
ルートの Cargo.toml の中身
[workspace]
members = [
"ABC/1",
"ironclad_rule"
]
- ironclad_rule については鉄則本を進めていく中でいちいちルートの Cargo.toml が変更されるのが嫌だったためここだけ指定
- ABC/1 で番号を指定している理由は不要に rust-analyzer が動かないでほしかったため
change_abc_target.sh の中身
if [ -z "" ]; then
echo "You should set contest number"
exit 1
fi
echo "[workspace]
members = [
\"ABC/\\",
\"ironclad_rule\"
]
resolver = \"2\"" > Cargo.toml;
- target の ABC の番号だけ変えるためにつかってる
コンテスト参加時に以下を実行
bash abc_prepare.sh 1(コンテストの番号)
- ここでその回のコンテストの a ~ g の .rs を作成して proconio::input を書き込む
実行時
TODO