レースコード ネットワークの入出力の問題 (js v8)
ドキュメンテーションが非常に不明瞭で、理解するのに長い時間がかかったと思います
js v8 エンジンの場合、操作は次のようになります。
関連を読む
読み込まれた行()
機能: 入力行を読み取る
説明: 最大 1024 文字を読み取り、1024 に達する前にキャリッジ リターンまたは終了文字に遭遇すると、早期に終了します。
説明: 複数行を読む最も簡単な方法はwhile((line = read_line()) != '')
、.
取得 (n)
機能: n 文字を読み取る
説明: n 文字まで読み取り、n に達していないときに改行または終了文字に遭遇すると、早期に終了します。
注: 戻り値にキャリッジ リターンが含まれる場合があります。****
readInt()
機能: 長整数を読み取る
readDouble()
機能: 浮動小数点を読み取る
出力関連
printth(sth, …)
説明: 改行なしで出力
説明: sth をコンソールに出力します.複数のパラメータがある場合はスペースで区切ります.最後に改行を追加しないでください.
console.log(sth, …)
説明: キャリッジ リターン付きの出力
説明: sth をコンソールに出力します. パラメータが複数ある場合は, スペースで区切って最後に改行を追加してください.
まあ、それはそれについてです
しかし、私たちは通常、出力するときにconssole.log()
それを使用します
結局のところ、フロントエンドを学んでいる人は、この API に感銘を受けたはずです。
次に、Saima.com からの質問の例を取り上げて書きましょう。
while
ここでは、複数行の入力を読み取るため、条件ステートメントに書き込みます
while((line = read_line()) != '')
このようにして、複数行の入力を読み取ることができます
var line;
let getSum = (m,n) => {
let sum = 0;
while(n) {
sum += m;
m = Math.sqrt(m);
n--;
}
return sum.toFixed(2) ;
}
while((line = read_line()) != ''){
//读取
let arr = line.split(' ');
let m = parseInt(arr[0]);
let n = parseInt(arr[1]);
let sum = getSum(m, n);
console.log(sum);//输出
}
また、1組の入力に対してのみ
たとえば、入力の最初の行は数値 n で、その後に n 行の data が続きます。
この場合、最初に n を読み取り、次にデータをループで n 回読み取るだけで済みます。
let n = readInt();
let arr = [];
for(let i = 0; i < n; i++)
{
arr[i] = read_line();
}
Saima.com の筆記試験アルゴリズム問題のほとんどは、ローカル IDE をサポートしています。
しかし、私たちのフロント エンドでは、vscode でサンプルを入力するのは非常に面倒です。
私でさえ、このことについて非常に錆びています
これで、vscode を設定して、vscode でケースを便利にテストできるようになりました。
この方法を使用した後、他の変更を加えることなく、ローカルでテストしたコードを Saima の Web サイトに直接貼り付けることができます。
非常に便利な npm パッケージreadline-syncがあります。
次に、彼をインストールします
ローカルideターミナルで次のコマンドを実行します。
npm install readline-sync
次に、モジュールをファイルにインポートし、名前を変更します
var __readline = require('readline-sync')
__readline.setDefaultOptions({
prompt: ''})
var read_line = __readline.prompt
こちらのSaimaのサイトでの読み方はこちらなread_line
ので、名前も変えましたread_line
そうすれば、vscode で喜んでコードを書くことができます。
vscode でサンプルの質問を作成する方法を示しましょう。
- js ファイルを作成する
2.コードを書く
//导入包
var __readline = require('readline-sync')
__readline.setDefaultOptions({
prompt: ''})
var read_line = __readline.prompt
//下面的代码是我们需要贴到赛码网编译器的
var line;
let getSum = (m,n) => {
let sum = 0;
while(n) {
sum += m;
m = Math.sqrt(m);
n--;
}
return sum.toFixed(2) ;
}
while((line = read_line()) != ''){
let arr = line.split(' ');
let m = parseInt(arr[0]);
let n = parseInt(arr[1]);
let sum = getSum(m, n);
console.log(sum);
}
3.ターミナルで実行node .\赛码网输入输出测试.js
上記はnodeコマンドです。つまり、特定のファイルの実行についてはこれ以上言うことはありません
この時点で、サンプルを入力できます
4.入力サンプル
正しい結果が出力されていることがわかります
テストに問題がなければ、コードを Saima.com コンパイラーに入れ、実行することができます。