使用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如何给<textarea></textarea>赋值
Apr 20 Javascript
有关javascript的性能优化 (repaint和reflow)
Apr 12 Javascript
php中给js数组赋值方法
Mar 10 Javascript
jquery 按键盘上的enter事件
May 11 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
详解JavaScript中基于原型prototype的继承特性
May 05 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
Mar 26 Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 Javascript
vue-cli扩展多模块打包的示例代码
Apr 09 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
May 15 Javascript
vue filter 完美时间日期格式的代码
Aug 14 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代码优化及php相关问题总结
2006/10/09 PHP
PHP 手机归属地查询 api
2010/02/08 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
Vue组件化开发思考
2018/02/02 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
python实现超简单端口转发的方法
2015/03/13 Python
Python定时执行之Timer用法示例
2015/05/27 Python
Windows下python3.6.4安装教程
2018/07/31 Python
python计算导数并绘图的实例
2020/02/29 Python
pyqt5中动画的使用详解
2020/04/01 Python
python 实现aes256加密
2020/11/27 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
估算杭州有多少软件工程师
2015/08/11 面试题
物流仓管员工作职责
2014/01/06 职场文书
给校长的建议书600字
2014/05/15 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
原告代理词范文
2015/05/25 职场文书
2015年教师节广播稿
2015/08/19 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android