プログラマーになりたい。

プログラミングや写真や本や読書会のことや、日常のこと。

AtCoderの次のコンテスト環境のテストが行われていますが……

AtCoderの次のコンテスト環境のテストが行われているので、参加してみています。

atcoder.jp

しかし、下準備(後述)をし、とりあえず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
Creative Commons License ©2007-2021 IIDA Munenori.