学 C++ 的时候,有 cin, cout, Java 也有 println 和 Scanner 控件能够实现输入输出。在 Node.js 里,通过 readline 模块实现输入输出。
什么是readline
readline 是 Node.js 里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流
如何使用Readline
实例1
1 | const readline = require('readline') |
输入输出如下
下面通过一道网易在线编程题实践一下
魔法币
描述
小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1: 如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2: 如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。输入描述:
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。输出描述:
输出一个字符串,每个字符表示该次小易选取投入的魔法机器。其中只包含字符’1’和’2’。输入例子1:
10输出例子1:
122
ac代码
1 | const readline = require('readline') |
涉及到多行输入可看例题二
射击游戏
- 描述
小易正在玩一款新出的射击游戏,这个射击游戏在一个二维平面进行,小易在坐标原点(0,0),平面上有n只怪物,每个怪物有所在的坐标(x[i], y[i])。小易进行一次射击会把x轴和y轴上(包含坐标原点)的怪物一次性消灭。
小易是这个游戏的VIP玩家,他拥有两项特权操作:
1、让平面内的所有怪物同时向任意同一方向移动任意同一距离
2、让平面内的所有怪物同时对于小易(0,0)旋转任意同一角度
小易要进行一次射击。小易在进行射击前,可以使用这两项特权操作任意次。
小易想知道在他射击的时候最多可以同时消灭多少只怪物,请你帮帮小易。
如样例所示:
所有点对于坐标原点(0,0)顺时针或者逆时针旋转45°,可以让所有点都在坐标轴上,所以5个怪物都可以消灭。
输入描述:
输入包括三行。
第一行中有一个正整数n(1 ≤ n ≤ 50),表示平面内的怪物数量。
第二行包括n个整数xi,表示每只怪物所在坐标的横坐标,以空格分割。
第二行包括n个整数yi,表示每只怪物所在坐标的纵坐标,以空格分割。输出描述:
输出一个整数表示小易最多能消灭多少只怪物。输入例子1:
5
0 -1 1 1 -1
0 -1 -1 1 1输出例子1:
5
思路是任意找出三个点构成坐标轴,看其他点落在坐标轴上的个数,选出落在坐标轴上最多的点
ac代码
1 | const readline = require('readline') |