使用javascript一樣可以做線上演算法程式設計
基於node的readline一樣可以使用標準流的輸入輸出
對於大學生在剛開始學習c ,c++, java的時候,寫著hello word的程式碼,然後在命令框中輸入輸出;
基於很多演算法的學習,在我短淺的認識中,身邊的同學都是使用 c, c++,甚至是java去寫;
很多演算法題目中的輸入描述和輸出描述
例如牛客網上的演算法題:
類似於這種的東西,在杭州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的
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 或 rn
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使用演算法程式設計,不太懂得js的輸入輸出流,
做起來在這上面花了不少時間 - -!
原文:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4729/viewspace-2810116/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在國企做程式設計師怎麼樣?程式設計師
- 學習Python除了做程式設計師之外,還可以做什麼工作?Python程式設計師
- Javascript 物件導向程式設計(一)JavaScript物件程式設計
- 你可以把程式設計當做一項託付終身的職業程式設計
- 菜鳥程式設計師都是怎樣寫程式碼的?你也可以學一手程式設計師
- JavaScript 函數語言程式設計(一)JavaScript函數程式設計
- Java程式設計師轉行都可以做什麼呢?Java程式設計師
- 玩轉 React(三)- JavaScript程式碼裡寫HTML一樣可以很優雅ReactJavaScriptHTML
- JavaScript物件程式設計JavaScript物件程式設計
- 學半年程式設計才知道“物件導向”可以這樣理解程式設計物件
- 在國企做程式設計師是怎樣的體驗?程式設計師
- 每天一道程式設計題(Javascript)程式設計JavaScript
- 說一說javascript的非同步程式設計JavaScript非同步程式設計
- JavaScript核心程式設計(一點點補充)JavaScript程式設計
- 2020年的IT可以這樣做
- 在HTML中使用javascript (js高階程式設計)HTMLJavaScriptJS程式設計
- 硬體設計還可以這樣學?
- 好程式設計師web前端學習路線之在JavaScript中使用getters和setter程式設計師Web前端JavaScript
- 好程式設計師web前端分享javascript列舉演算法程式設計師Web前端JavaScript演算法
- 做一個心理健康的程式設計師程式設計師
- 原創|程式設計師如何做私活?(一)程式設計師
- Javascript 非同步程式設計JavaScript非同步程式設計
- 30歲轉行做初級程式設計師是一種什麼樣的體驗?程式設計師
- 五線譜入門,程式設計師也可以玩音樂程式設計師
- 35歲的人還可以學習程式設計,從事程式設計師這個行業嗎?前景怎樣?程式設計師行業
- JavaScript設計模式(一)設計原則JavaScript設計模式
- javascript 模組化程式設計JavaScript程式設計
- JavaScript-設計模式-物件導向程式設計JavaScript設計模式物件程式設計
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計
- javascript設計模式系列一JavaScript設計模式
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- JavaScript高階程式設計學習(一)之介紹JavaScript程式設計
- 《Javacript DOM 程式設計藝術》筆記(一)JavaScript Syntax程式設計筆記JavaScript
- 【轉載】NLP線上演示
- 不懂程式碼?沒關係,照樣可以做SaaS軟體開發
- 從http到https你可以這樣做HTTP
- 像鳥一樣思考更好的並行程式設計並行行程程式設計
- 華為大佬:做一個快樂的程式設計師程式設計師