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

# フレンズさんへのマシュマロ
以下のようなマシュマロが競技プログラミングをするフレンズさん(ここではフレンズさんとします)のマシュマロに届いていて、ちょっと話題になっていました。
<img width=60%  src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/070d85ac-65d4-22f4-34d0-abd9fbb54915.png>

https://x.com/kyopro_friends

このマシュマロの送り主を勝手に救っていきたいと思います。
# 前提
windows環境であり、ローカルで、自分で書いたコード実行ができる環境であることを前提とします。
また、前提とはしませんがPowershellでコード実行する方法について言及します。

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


# 問題のreadme
![スクリーンショット 2024-12-06 221333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/30b512f1-1aa0-b0d5-6f3b-a142b0fc1764.png)

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

# readmeの中身
![スクリーンショット 2024-12-06 202018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/f3594b56-056d-bc46-201d-6443fa43cf61.png)

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

![スクリーンショット 2024-12-06 221433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/ee66e651-0bb8-fdaa-2a56-db131eef4071.png)
入力生成の方法が書かれています。初心者はすでに用意された100個のサンプルで十分だと思うので、スルーします。必要になったら、この記事を読んだ後であれば自力でできるでしょう。

![スクリーンショット 2024-12-06 202513.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/d8653351-b1c8-5b09-2528-9867f41f1d57.png)
重要なところまで来ました。cargoというのはRust環境のコマンドです。先ほど書いたように、**今回バイナリを取得しているためこのコマンドは使用しません**。
ではどうするのかというと、一番下に、
>Windows用のコンパイル済バイナリを使用する場合は `cargo run -r --bin tester` の部分を `./tester.exe` に置き換えて下さい

とありますね、言われた通り書き換えてみましょう。
```shell:before
cargo run -r --bin tester cmd < in.txt > out.txt
```
```shell:after
./tester.exe cmd < in.txt > out.txt
```
言われたとおり書き換えました。難しくないですよね？

次に、`cmd`, `in.txt`, `out.txt`についてそれぞれ説明しましょう。
`cmd`は書いたコードを実行するときのコマンドです。
例えばあなたがPythonで書いた`a.py`というファイルを実行する場合、そのファイルのパスに移動してから
```shell
python3 a.py
```
のように実行しますよね？このコマンド全体で丸ごと`cmd`を置き換えます。
```shell:after
./tester.exe python3 a.py < in.txt > out.txt
```
そうするとこうなります。このコマンドの部分は、言語や環境によって異なるので、ユーザの環境のものを使ってくださいということになっているわけです。~~決して意地悪でわかりにくく書いているわけではないのです。~~

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

そうすると、
```shell:after
./tester.exe python3 a.py < in/0000.txt > out.txt
```
のようになります。

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

![スクリーンショット 2024-12-06 205138.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/d9fed132-e57b-845f-478d-a044a49679b8.png)
実はまだ油断できません。実は例のところに地味にとても重要なことが書かれています。
>Windows で Powershell を使用する場合
上記の `<` が使えないため、以下のように実行して下さい。

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

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

これを踏まえて先ほどのコードを更新しましょう。
```shell:after
cat in/0000.txt | ./tester.exe python3 a.py > out.txt
```
これが最終的に実行するべきコードということになります。~~書いてある通りなんだけどね~~

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

# 実際に実行してみる
![スクリーンショット 2024-12-06 221610.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/f91559b7-5e15-e240-3ea4-1bc3a00b6d78.png)
`a.py`というコードを作成し、`tools_x86_64-pc-windows-gnu`のフォルダに配置します(画像のように配置にしてください)。この中に提出用コードを記述します。(今回は中に何も書いていないファイルにしています)

Powershellを開きます。スタートメニューなどから開きましょう。
![スクリーンショット 2024-12-06 221656.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/1c1b64fd-f9d6-a404-8f93-8967e9ca8f18.png)
ここをクリックすることで、このフォルダのパスを選択できます。それをコピーして、
```shell
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/ea9af619-d0d7-d9fb-cc09-824f39f7d8e0.png)
実行できたようです。コンテスト中ですので敢えて失敗するようにしています

out.txtは先ほどのフォルダに自動で作成されます。
![スクリーンショット 2024-12-06 221839.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478898/53096a44-c9ef-a991-c16e-ebf649ef152a.png)
この中身を張り付ければweb版visualizerを利用できます。

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

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

以上です