AtCoderの次のコンテスト環境のテストが行われているので、参加してみています。
しかし、下準備(後述)をし、とりあえずA問題を送ろうとしたところで、cargo compete s a
がエラーになった(下記)。
$ cargo compete s a Running `/Users/flashingwind/.cargo/bin/cargo-compete compete t --src /Users/flashingwind/atcoder2/newjudge-2308-algorithm/src/bin/a.rs --display-limit '4 KiB' --manifest-path /Users/flashingwind/atcoder2/newjudge-2308-algorithm/Cargo.toml --color auto` Running `/Users/flashingwind/.rustup/toolchains/1.70.0-x86_64-apple-darwin/bin/cargo build --bin newjudge-2308-algorithm-a --manifest-path /Users/flashingwind/atcoder2/newjudge-2308-algorithm/Cargo.toml` Finished dev [unoptimized + debuginfo] target(s) in 0.29s 1/3 ("sample1") Accepted (243 ms) 2/3 ("sample2") Accepted (243 ms) 3/3 ("sample3") Accepted (243 ms) …… error: Submission rejected
ちなみに解答に対する自動テストまでは正常に走っていて、Acceptedになっています。解答をコピペしてウェブから送るとACになる。
どうもいつもの感覚だと、送信されるだけでももっと時間がかかるのに、あまりにも短時間のうちにエラーが返るので、AtCoderのウェブサイトをスクレイピングするのに失敗しているとか、アクセスが拒否されたとかそんな感じではないかと思うけど、よくわかりません。なんかCargo.toml
にマズいこと書いたかなあ。
ジタバタしましたが、ダメ。
$ cargo compete l atcoder Already Logged in $ cargo compete p atcoder newjudge-2308-algorithm warning: already participated $ cargo install cargo-compete --force
今回試した手順は下記の通り。
まず、私の場合、Rust1.68.2とcargo competeがすでに入ってます。
Rustツールチェイン
Rustだと1.42.0→1.70.0にバージョンアップしたようです。詳細・他の言語についてはこちらを。
さて、実は私はバージョン指定がけっこうてきとーで、なぜか1.68系を使っていますが、今度こそちゃんとやろうと思う(ただし、本番のコンテスト環境はまだしばらく1.48なので、これを上げたり下げたりするとトラブルがあるかもしれず、自己責任でやってください)。現状:
$ rustup show Default host: x86_64-apple-darwin rustup home: /Users/flashingwind/.rustup installed toolchains -------------------- 1.68.2-x86_64-apple-darwin (default) active toolchain ---------------- 1.68.2-x86_64-apple-darwin (default) rustc 1.68.2 (9eb3afe9e 2023-03-27)
私はあんまり気にしないのと、RustをAtCoderにしか使ってないので、そのままグローバルに1.70入れ、defaultにしてしまいます(直近のコンテストでは、雰囲気で、手動で1.48との差分をなんとかする予定)。
$ rustup update #stableとかを使ってるとアップデートされるので注意 $ rustup install 1.70.0-x86_64-apple-darwin $ rustup default 1.70.0-x86_64-apple-darwin info: using existing install for '1.70.0-x86_64-apple-darwin' info: default toolchain set to '1.70.0-x86_64-apple-darwin' 1.70.0-x86_64-apple-darwin unchanged - rustc 1.70.0 (90c541806 2023-05-31)
一応確認。
$ rustup show …… 1.70.0-x86_64-apple-darwin (default) ……
ライブラリー
使えるライブラリー(クレート)も先ほどのページに指定されています。さすがに、既存環境をいじりたくないので、まず新しいフォルダーを。
$ mkdir atcoder2 $ cd atcoder2 $ cargo compete init atcoder Do you use crates on AtCoder? 1 No 2 Yes 3 Yes, but I submit base64-encoded programs 1..3: 2 Wrote /Users/flashingwind/atcoder2/./compete.toml Wrote /Users/flashingwind/atcoder2/./template-cargo-lock.toml
compete.toml
にコンテスト新規作成するときのデフォルトのCargo.tomlのひな形があり、ここのdependencies = '''
から'''
を前述の通り書き換えます。toolchain = "1.70.0"
も。
ただし、AtCodeの提供するクレートの一覧は形式が違うみたいなので、いい感じに=([.0-9]+)
を= "=$1"
部分的に置換しました。
$ code /Users/flashingwind/atcoder2/./compete.toml …… dependencies = ''' ac-library-rs = "=0.1.1" once_cell = "=1.18.0" static_assertions = "=1.1.0" varisat = "=0.2.2" memoise = "=0.3.2" argio = "=0.2.0" bitvec = "=1.0.1" counter = "=0.5.7" hashbag = "=0.1.11" pathfinding = "=4.3.0" recur-fn = "=2.2.0" indexing = "=0.4.1" amplify = "=3.14.2" amplify_derive = "=2.11.3" amplify_num = "=0.4.1" easy-ext = "=1.0.1" multimap = "=0.9.0" btreemultimap = "=0.1.1" bstr = "=1.6.0" az = "=1.2.1" glidesort = "=0.1.2" tap = "=1.0.1" omniswap = "=0.1.0" multiversion = "=0.7.2" num = "=0.4.1" num-bigint = "=0.4.3" num-complex = "=0.4.3" num-integer = "=0.1.45" num-iter = "=0.1.43" num-rational = "=0.4.1" num-traits = "=0.2.15" num-derive = "=0.4.0" ndarray = "=0.15.6" nalgebra = "=0.32.3" alga = "=0.9.3" libm = "=0.2.7" rand = "=0.8.5" getrandom = "=0.2.10" rand_chacha = "=0.3.1" rand_core = "=0.6.4" rand_hc = "=0.3.2" rand_pcg = "=0.3.1" rand_distr = "=0.4.3" petgraph = "=0.6.3" indexmap = "=2.0.0" regex = "=1.9.1" lazy_static = "=1.4.0" ordered-float = "=3.7.0" ascii = "=1.1.0" permutohedron = "=0.2.4" superslice = "=1.0.0" itertools = "=0.11.0" itertools-num = "=0.1.3" maplit = "=1.0.2" either = "=1.8.1" im-rc = "=15.1.0" fixedbitset = "=0.4.2" bitset-fixed = "=0.1.0" proconio = "=0.4.5" text_io = "=0.1.12" rustc-hash = "=1.1.0" smallvec = "=1.11.0" ''' ……
toolchain = "1.70.0"
実行
$ cargo compete new newjudge-2308-algorithm # コンテスト読み込み $ cd newjudge-2308-algorithm $ code . $ cargo build
$ cargo compete s a …… error: Submission rejected