使用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 相关文章推荐
jquery动态增加text元素以及删除文本内容实例代码
Jul 01 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
JavaScript运算符小结
Jun 03 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
使用堆实现Top K算法(JS实现)
Dec 25 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
理解JavaScript原型链
Oct 25 Javascript
值得分享的JavaScript实现图片轮播组件
Nov 21 Javascript
Bootstrap CSS布局之图像
Dec 17 Javascript
jQuery实现滑动开关效果
Aug 02 jQuery
js定时器出现第一次延迟的原因及解决方法
Jan 04 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
vue中appear的用法
2017/08/17 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
对python的文件内注释 help注释方法
2018/05/23 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
大学生应聘推荐信范文
2013/11/19 职场文书
音乐教学反思
2014/02/02 职场文书
企业标语口号
2014/06/10 职场文书
房产公证委托书范本
2014/09/20 职场文书
2015年企业新年寄语
2014/12/08 职场文书
推荐信范文大全
2015/03/27 职场文书
2015年售票员工作总结
2015/04/29 职场文书
电视新闻稿
2015/07/17 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server