使用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 相关文章推荐
js 立即调用的函数表达式如何写
Jan 12 Javascript
js控制鼠标事件移动及移出效果显示
Oct 19 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
基于JQuery打造无缝滚动新闻步骤详解
Mar 31 Javascript
javascript实现根据汉字获取简拼
Sep 25 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
简单实现jQuery弹幕效果
May 06 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
vue 兄弟组件的信息传递的方法实例详解
Aug 30 Javascript
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
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 FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
python3中的md5加密实例
2018/05/29 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
远程研修随笔感言
2014/02/10 职场文书
新教师教学工作总结
2015/08/14 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS