使用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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
WordPress 插件——CoolCode使用方法与下载
Jul 02 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
May 25 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
May 09 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
Feb 22 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
js实现分页功能
May 24 Javascript
ES6中的Promise代码详解
Oct 09 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过滤html标记属性类用法实例
2014/09/23 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
Python3 批量扫描端口的例子
2019/07/25 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
单位婚育证明范本
2014/11/21 职场文书
工地食品安全责任书
2015/05/09 职场文书
转学证明范本
2015/06/19 职场文书
机械生产实习心得体会
2016/01/22 职场文书