使用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实现给图片加链接
Aug 15 Javascript
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
jquery indexOf使用方法
Aug 19 Javascript
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
JS扩展方法实例分析
Apr 15 Javascript
jQuery实现进度条效果代码
Dec 17 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
在Vue中如何使用Cookie操作实例
Jul 27 Javascript
五步轻松实现zTree的使用
Nov 01 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
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
javascript实现微信分享
2014/12/23 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
Python中pygame安装方法图文详解
2015/11/11 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python中字符串与编码示例代码
2019/05/20 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
两则小学生的自我评价分享
2013/11/14 职场文书
股东授权委托书范本
2014/09/13 职场文书
2014年销售工作总结
2014/12/01 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
Python 内置函数速查表一览
2021/06/02 Python