90340


先程、題にあるサイトを使い始めました。  
しかし、問題の引数xが与えられるので…などとあってもどうやってその引数を取得していいかわかりません。  
どうやって取得するのでしょうか


CC BY-SA 4.0
2022-08-02T09:44:40.377
90335
2022-08-02T12:49:35.517
53242
question
javascript
aizu online judge 与えられる引数の取得方法がわからない


Aizu Onlie Judge(AOJ)の問題では、"Input"で与えられる各値は、引数では無く、 **標準入力**
で与えられます。ですので、AOJが使用しているJavaScript実装での標準入力を受け取る方法を調べる必要があります。(JavaScriptの言語仕様であるECMAScriptには標準入力を扱うAPIが用意されていないため、実装毎のAPIを確認する必要があります。)

まず、AOJのJavaScriptはどのような実装を使っているかを確認します。[System info | Aizu Online
Judge](https://onlinejudge.u-aizu.ac.jp/system_info) によれば Node.js 6.11.3
を使用しているようです。(Deno等のNode.js以外のJavaScript実装も存在するため、念のため、ここでは確認しておきます。)

では、Node.jsでは標準入力をどのように受け取ればいいのかというと、[Node.js v6
Documentation](https://nodejs.org/docs/latest-v6.x/api/)
に書いてあるAPIを駆使すればできるようになっています。方法は大きく分けて二つあり、`process.stdin`ストリームから読み取る方法と、"/dev/stdin"をファイルとして読む込む方法です。後者の"/dev/stdin"はUNIX/Linux環境でのみ使用できます(Windows環境では使用できない)が、AOJのジャッジサーバーはたぶんLinuxなので使えるはずです。そこから具体的なAPIの使い方はJavaScriptというよりNode.jsについての知識になります。より詳しいところはNode.jsの入門書などを読み必要があります。

Node.js自体を全部学ぶのは時間がかかるので、実際にどう書いたら良いのかを簡単に確認する方法としては、AOJの[LTP1
プログラミング入門](https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1)コースに書いてあるNoteを読むと良いです。例えば、1_B:X
Cubicの問題を開いて、Pre
note(旧版はNote)の下のセレクトボックスで"JavaScript"を選んでみてください。解説が表示され、その中に「標準入力」をどのようにして取得したら良いのかも書いています。複数の値を取る方法については、次の1_C:Rectangleの問題を参考にしてみてください。このままコースを一通りこなせば、言語仕様についての学びも十分になるでしょう。

参考までに標準入力の受け取り方が書かれた他サイトを紹介しておきます。

  * [言語別標準入出力 Wiki - yukicoder](https://yukicoder.me/wiki/stdio)
  * [paizaプログラミングスキルチェックの値取得・出力サンプルコード | ITエンジニア向け転職・就活・学習サービス【paiza】](https://paiza.jp/guide/samplecode)

もし、ほかの競技プログラミングに興味があればですが、ほとんどのサイトではNode.jsを使用していますが、CordforceはV8を使用しているらしく、標準入力の受け取り方が違っているなど注意が必要になります。(他にも例外がある所があるかも知れません。)


CC BY-SA 4.0
2022-08-02T12:44:27.270
90340
2022-08-02T12:49:35.517
2022-08-02T12:49:35.517
7347
7347
90335
answer