使用javascript做在线算法编程


Posted in Javascript onMay 25, 2018

基于node的readline一样可以使用标准流的输入输出

对于大学生在刚开始学习c ,c++, java的时候,写着hello word的代码,然后在命令框中输入输出;

基于很多算法的学习,在我短浅的认识中,身边的同学都是使用 c, c++,甚至是java去写;

很多算法题目中的输入描述和输出描述

例如牛客网上的算法题:

使用javascript做在线算法编程 

类似于这种的东西,在杭州acm的算法题目也是。

诀窍------使用nodejs内置封装好的readline模块;[kbd][/kbd]

1.readline 模块 【逐行读取】

readline主要的功能是提供了一个可以从可读流中读取数据;

这里可以对nodejs的可读流和可写流进行深入研究

2.如何使用readline?

一个基本的例子:

// 引入readline模块
const readline = require('readline');
//创建readline接口实例
const option ={
input:process.stdin,
output:process.stdout,
prompt:'>>'
}
const rl = readline.createInterface(option);
rl.question('你觉得js的这个模块怎么样?', (answer) => {
// 对答案进行处理
// 注意:log中的要使用 `` 而不是 '';
console.log(`你觉得:${answer}`);
// 关闭标准流
rl.close();
});

详情可以点击我的github的 readline_dome.js

3.进一步扩展去应用

3.1例如做一个简单的命令行界面;

// 来自官方例子实现的命令界面;
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt: 'input> '
});
// rl.prompt() 方法会在 output 流中新的一行写入 readline.Interface 实例配置后的 prompt,用于为用户提供一个可供输入的新的位置。
rl.prompt();
// 'line'事件是 获取用户输入的值直到按下【return / enter】 按键;\n、\r 或 \r\n
rl.on('line', (line) => {
// ob.trim()==>从字符串中移除前导空格、尾随空格和行终止符。
switch (line.trim()) {
case 'hello':
console.log('world!');
break;
default:
console.log(`你输入的是:'${line.trim()}'`);
break;
}
rl.prompt();
}).on('close', () => {
console.log('再见!');
//推出标准流;
process.exit(0);
});

3.2类似于牛客网编程的例子;

这是一个单行读取的demo

const readline = require('readline');
const fs = require('fs')
// 单行读取;
const options={
input:process.stdin,
output:process.stdout
}
const rl = readline.createInterface(options);
// 单行读取;
rl.on('line',function(line){
line.trim();
console.log(`你输入的值(移除前导空格、尾随空格和行终止符):${line.trim()}`)
})

这是一个多行读取的demo

const readline = require('readline');
const fs = require('fs')
// 多行读取;
const options={
input:process.stdin,
output:process.stdout
}
const rl = readline.createInterface(options);
// 多行读取
// 多行处理的思路是:1.需要设定未开始读取的行数标志,并且如果开始读取的第一行是n行的行数;
//        2.需要通过判断是否已经到了设定的行数,若到了则只需在里面处理相关的算法逻辑;
var n = -1;
var sum = (a,b)=>a+b;
var arr =[];
rl.on('line',function(line){
// 表示已经在读取第一行的n行数;
if(n == -1){
// 类型转换和去除首位空格和终止符;并把行数赋值给n;
n = parseInt(line.trim());
console.log('n:'+n)
}
else{
// 存入数组;
arr.push(line.trim());
if(n == arr.length){
// 这里是执行你要的代码;
//  var result = arr[1];
var result = sum(arr[0],arr[1]);
console.log("result:"+result)
//恢复没读取状态;
arr.length=0;
n=-1;
}
}
})

总结

以上所述是小编给大家介绍的使用javascript做在线算法编程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 获取当前时间戳的代码
Aug 05 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
Feb 23 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 Javascript
JavaScript父子窗体间的调用方法
Mar 31 Javascript
JavaScript获取网页中第一个图片id的方法
Apr 03 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
javascript九宫格图片随机打乱位置的实现方法
Mar 15 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 Javascript
基于vue写一个全局Message组件的实现
Aug 15 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 #Javascript
浅析node.js的模块加载机制
May 25 #Javascript
webpack4的迁移的使用方法
May 25 #Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 #Javascript
详解webpack4多入口、多页面项目构建案例
May 25 #Javascript
js中的 || 与 && 运算符详解
May 24 #Javascript
vue axios整合使用全攻略
May 24 #Javascript
You might like
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
python django集成cas验证系统
2014/07/14 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
学习python可以干什么
2019/02/26 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
QML实现钟表效果
2020/06/02 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
.net C#面试题
2012/08/28 面试题
煤矿班组长竞聘书
2014/03/31 职场文书
电力安全事故反思
2014/04/27 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
面试通知邮件
2015/04/20 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
军训决心书范文
2015/09/22 职场文书
安全学习心得体会范文
2016/01/18 职场文书