如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
How to run c++ and javascript client code (hackerrank style) on local machine
我正在通过解决Hackerrank问题来学习C++和Javascript。现在C++正在编译,但当我运行时它会暂停。我的JavaScript也是如此。我想学习像在平台上那样为测试用例输入数据。例如:如果我在C++中有这个代码:
#include <string>
#include <cstdio>
#include <iostream>
using namespace std;
vector<string> split_string(string);
// Complete the countApplesAndOranges function below.
void countApplesAndOranges(int s, int t, int a, int b, vector<int> apples, vector<int> oranges) {
int count_a = 0;
int count_b = 0;
for (int i = 0; i < apples.size(); i++){
// apples[i] += a;
apples[i] += a;
if (s <= apples[i] && apples[i] <= t )
count_a +=1;
// cout << apples[i] << ;
}
// for (auto i: apples)
// // cout << i << ' ';
// cout << endl;
for (int i = 0; i < oranges.size(); i++){
// apples[i] += a;
oranges[i] += b;
if (s <= oranges[i] && oranges[i] <= t )
count_b +=1;
// cout << oranges[i] << "";
}
// for (auto i: oranges)
// // cout << i << ' ';
cout << count_a << endl;
cout << count_b;
}
int main()
{
string st_temp;
getline(cin, st_temp);
vector<string> st = split_string(st_temp);
int s = stoi(st[0]);
int t = stoi(st[1]);
string ab_temp;
getline(cin, ab_temp);
vector<string> ab = split_string(ab_temp);
int a = stoi(ab[0]);
int b = stoi(ab[1]);
string mn_temp;
getline(cin, mn_temp);
vector<string> mn = split_string(mn_temp);
int m = stoi(mn[0]);
int n = stoi(mn[1]);
string apples_temp_temp;
getline(cin, apples_temp_temp);
vector<string> apples_temp = split_string(apples_temp_temp);
vector<int> apples(m);
for (int i = 0; i < m; i++) {
int apples_item = stoi(apples_temp[i]);
apples[i] = apples_item;
}
string oranges_temp_temp;
getline(cin, oranges_temp_temp);
vector<string> oranges_temp = split_string(oranges_temp_temp);
vector<int> oranges(n);
for (int i = 0; i < n; i++) {
int oranges_item = stoi(oranges_temp[i]);
oranges[i] = oranges_item;
}
countApplesAndOranges(s, t, a, b, apples, oranges);
return 0;
}
vector<string> split_string(string input_string) {
string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) {
return x == y and x == ' ';
});
input_string.erase(new_end, input_string.end());
while (input_string[input_string.length() - 1] == ' ') {
input_string.pop_back();
}
vector<string> splits;
char delimiter = ' ';
size_t i = 0;
size_t pos = input_string.find(delimiter);
while (pos != string::npos) {
splits.push_back(input_string.substr(i, pos - i));
i = pos + 1;
pos = input_string.find(delimiter, i);
}
splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1));
return splits;
}
我该如何"喂养"它的输入。
类似地,对于JavaScript:
'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});
process.stdin.on('end', _ => {
inputString = inputString.replace(/s*$/, '')
.split('n')
.map(str => str.replace(/s*$/, ''));
main();
});
function readLine() {
return inputString[currentLine++];
}
// Complete the countApplesAndOranges function below.
function countApplesAndOranges(s, t, a, b, apples, oranges) {
let count_a = 0
let count_b = 0
for (let i = 0; i < apples.length; i++){
apples[i] += a
if (s <= apples[i] && apples[i] <= t)
count_a += 1
}
for (let i = 0; i < oranges.length; i++){
oranges[i] += b
if (s <= oranges[i] && oranges[i] <= t)
count_b += 1
}
console.log(count_a)
console.log(count_b)
}
function main() {
const st = readLine().split(' ');
const s = parseInt(st[0], 10);
const t = parseInt(st[1], 10);
const ab = readLine().split(' ');
const a = parseInt(ab[0], 10);
const b = parseInt(ab[1], 10);
const mn = readLine().split(' ');
const m = parseInt(mn[0], 10);
const n = parseInt(mn[1], 10);
const apples = readLine().split(' ').map(applesTemp => parseInt(applesTemp, 10));
const oranges = readLine().split(' ').map(orangesTemp => parseInt(orangesTemp, 10));
countApplesAndOranges(s, t, a, b, apples, oranges);
}
我知道我可以手动做到这一点——通过将局部变量硬编码为main((,但我想了解C++-getline((函数以及JavaScript-process.stdin.
提前感谢您的帮助。
我找到了C++,你必须添加输入:例如
7 11
5 15
3 2
-2 2 1
5 -6
它必须是有变量的确切行数,或者重定向文件中的输入,即
$ ./a.out < input.txt
对于JavaScript,您必须:重定向输入:
$ node program.js < input.txt
或者添加行并按下表示输入流的结束。
您可以使用pipe
operator
从文件馈送输入
$ cat input.txt | node main.js
[仅适用于基于Unix的机器,如MacBook、Linux、Ubuntu…]
对于JavaScript,在shell中键入输入后,可以按Ctrl + D
发送EOF
(文件结尾(以触发process.stdin.on("end", ...)
中的事件处理程序。
如本文所述,在MicrosoftWindows中,readline接口默认不支持^D
(Ctrl+D(
相关文章:
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- cpp / c ++中的grpc客户端代码,元数据x-api-key/x-goog-api-key不起作用,给了我语音A
- 为什么 JsonCpp http 客户端在 201 响应代码上失败?
- 客户端代码中的 Valgrind 钩子:特定函数的内存泄漏
- 如何使用 swagger-codegen cpprest 客户端库代码?
- 在 Ubuntu 上编译 Protobuf 客户端代码,但找不到包含文件
- 如何使用 Python 实验室机器作为我的C++客户端代码的服务器
- 将C 代码(本机客户端)移植到浏览器(Web应用程序)
- 当函数有很多参数和客户端代码只需更改其中时,如何处理情况就可以处理
- C++(不是 C)中的示例服务器/客户端代码
- 我的客户端服务器代码无法正常工作
- 应由库或客户端代码删除已加载库中的对象实例
- 基本服务器/客户端代码出现问题
- Qt服务器客户端代码
- 抽象工厂模式客户端代码
- 当服务器重新启动并且客户端收到WSAECONNRESET错误代码时,我应该重新创建整个套接字吗
- 将 c# asp.net Web 应用程序与C++ dll 链接时,是在服务器或客户端上运行的 dll 代码
- 如何使此代码适用于不同计算机上的服务器和客户端
- 使用Google Mock来模拟在客户端代码中复制的对象