12
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

readmeが読めないのでAHC040に参加できないニキを救いたい

Last updated at Posted at 2024-12-06

フレンズさんへのマシュマロ

以下のようなマシュマロが競技プログラミングをするフレンズさん(ここではフレンズさんとします)のマシュマロに届いていて、ちょっと話題になっていました。

このマシュマロの送り主を勝手に救っていきたいと思います。

前提

windows環境であり、ローカルで、自分で書いたコード実行ができる環境であることを前提とします。
また、前提とはしませんがPowershellでコード実行する方法について言及します。

コンテスト中ですので、AHC030のファイルを使用しますが、まったく同じようにAHC040でもローカルテスタを実行できます

問題のreadme

スクリーンショット 2024-12-06 221333.png

コンテストページから、Windowsのコンパイル済みバイナリをダウンロードして解凍します。このhtmlファイルをブラウザなどで開くと問題のreadmeが開きます。日本語のところを上から順に読んでいきましょう。

readmeの中身

スクリーンショット 2024-12-06 202018.png

いきなりRust言語が必要と書かれていますが、バイナリをダウンロードした場合は不要です。このへんは確かに不親切ポイントかもです。

スクリーンショット 2024-12-06 221433.png
入力生成の方法が書かれています。初心者はすでに用意された100個のサンプルで十分だと思うので、スルーします。必要になったら、この記事を読んだ後であれば自力でできるでしょう。

スクリーンショット 2024-12-06 202513.png
重要なところまで来ました。cargoというのはRust環境のコマンドです。先ほど書いたように、今回バイナリを取得しているためこのコマンドは使用しません
ではどうするのかというと、一番下に、

Windows用のコンパイル済バイナリを使用する場合は cargo run -r --bin tester の部分を ./tester.exe に置き換えて下さい

とありますね、言われた通り書き換えてみましょう。

before
cargo run -r --bin tester cmd < in.txt > out.txt
after
./tester.exe cmd < in.txt > out.txt

言われたとおり書き換えました。難しくないですよね?

次に、cmd, in.txt, out.txtについてそれぞれ説明しましょう。
cmdは書いたコードを実行するときのコマンドです。
例えばあなたがPythonで書いたa.pyというファイルを実行する場合、そのファイルのパスに移動してから

python3 a.py

のように実行しますよね?このコマンド全体で丸ごとcmdを置き換えます。

after
./tester.exe python3 a.py < in.txt > out.txt

そうするとこうなります。このコマンドの部分は、言語や環境によって異なるので、ユーザの環境のものを使ってくださいということになっているわけです。決して意地悪でわかりにくく書いているわけではないのです。

また、in.txtは、入力ファイルのパスを指定します。inというフォルダに入力サンプルがいっぱい入っていますので、そのなかの一つを指定しましょう。例えばin/0000.txtとすればよいでしょう。

そうすると、

after
./tester.exe python3 a.py < in/0000.txt > out.txt

のようになります。

最後にout.txtについてですが、これは存在しない場合勝手に作られるので、そのままで大丈夫です。

スクリーンショット 2024-12-06 205138.png
実はまだ油断できません。実は例のところに地味にとても重要なことが書かれています。

Windows で Powershell を使用する場合
上記の < が使えないため、以下のように実行して下さい。

Windowsでコマンド実行する場合、Powershellを使用する場合が多いと思います。その場合、コマンドで<という文字が使えず、エラーになります。
その解決方法は書いてありますが、そもそも例という読み飛ばしがちな場所で言及しているうえに、以下のようにというふうに急に雑な説明になっていますね。これはかなりの不親切ポイントです。

要するに、< in/0000.txtの部分が入力を指定しているので、この部分を消して、代わりに先頭にcat in/0000.txt |を付けてくれということです。

これを踏まえて先ほどのコードを更新しましょう。

after
cat in/0000.txt | ./tester.exe python3 a.py > out.txt

これが最終的に実行するべきコードということになります。書いてある通りなんだけどね

このあとはローカルのvisualizerの使い方が書いてありますが、web版で十分だと思うので割愛します。

実際に実行してみる

スクリーンショット 2024-12-06 221610.png
a.pyというコードを作成し、tools_x86_64-pc-windows-gnuのフォルダに配置します(画像のように配置にしてください)。この中に提出用コードを記述します。(今回は中に何も書いていないファイルにしています)

Powershellを開きます。スタートメニューなどから開きましょう。
スクリーンショット 2024-12-06 221656.png
ここをクリックすることで、このフォルダのパスを選択できます。それをコピーして、

cd C:\hoge\hoge\hoge\tools_x86_64-pc-windows-gnu

を実行するとそのフォルダに移動できます。そろそろこういうちょっと抽象的な書き方をされてもわかるようになってきたと思います。

成功すると、PS C:\hoge\hoge\hoge\tools_x86_64-pc-windows-gnu>のように表示されて、移動できたことがわかります。
そこに先ほどのコードを入力すると...
スクリーンショット 2024-12-06 221754.png
実行できたようです。コンテスト中ですので敢えて失敗するようにしています

out.txtは先ほどのフォルダに自動で作成されます。
スクリーンショット 2024-12-06 221839.png
この中身を張り付ければweb版visualizerを利用できます。

最後に

コーディングとかITとかの世界では、こういう謎のドキュメントを解読して、環境の違いに苦しみながら環境構築する能力がわりとデフォで要求されますので、この機に入門するとよいと思います。(難易度的には入門にちょうどいいのではないでしょうか)
途中いろいろなところで不親切だとは書きましたが、いうてこんなもんというか、これでもかなり丁寧で親切なドキュメントのほうだと思います。うまくいかないときは自分で調べるのも重要なリテラシーになります。

また、冒頭のマシュマロのようなヒステリックな態度では解決するものも解決しませんよね。わからないことがあったとしても、それを建設的に解決できるような聞き方を心掛ける必要もあると思います。

以上です

12
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?