使用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常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
jQuery 渐变下拉菜单
Dec 15 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
Dec 18 Javascript
使用js在页面中绘制表格核心代码
Sep 16 Javascript
浅谈Javascript数组索引
Jul 29 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
Angular2 父子组件通信方式的示例
Jan 29 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
Vue项目配置跨域访问和代理proxy设置方式
Sep 08 Javascript
通过实例解析javascript Date对象属性及方法
Nov 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
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
php实现websocket实时消息推送
2018/03/30 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
python中的多重继承实例讲解
2014/09/28 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python线性方程组求解运算示例
2018/01/17 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python线程里哪种模块比较适合
2020/08/02 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
后勤人员岗位职责
2013/12/17 职场文书
中学生操行评语
2014/04/24 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
农业项目合作意向书
2015/05/08 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL