使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 想學程式設計並不難 這樣做就可以了程式設計
- 想幫助使用者做決定?你的APP可以這樣設計!APP
- 程式設計師來做設計,世界會怎樣?程式設計師
- javascript可以與java整合程式設計嗎JavaScript程式設計
- [譯] 想幫助使用者做決定?你的APP可以這樣設計!APP
- 在國企做程式設計師怎麼樣?程式設計師
- 你可以把程式設計當做一項託付終身的職業程式設計
- 學習Python除了做程式設計師之外,還可以做什麼工作?Python程式設計師
- 使用 JavaScript 進行函數語言程式設計 (一)JavaScript函數程式設計
- 做一個努力的程式設計師程式設計師
- Java程式設計師轉行都可以做什麼呢?Java程式設計師
- 程式設計師可以在週末做的8件事!程式設計師
- 程式設計師可以在週末做的8件事程式設計師
- 菜鳥程式設計師都是怎樣寫程式碼的?你也可以學一手程式設計師
- 故事樣設計——怎樣像使用者一樣思考?
- Javascript 物件導向程式設計(一)JavaScript物件程式設計
- 做一個女神一樣的程式媛
- 玩轉 React(三)- JavaScript程式碼裡寫HTML一樣可以很優雅ReactJavaScriptHTML
- 學半年程式設計才知道“物件導向”可以這樣理解程式設計物件
- 怎樣尊重一個程式設計師程式設計師
- 在國企做程式設計師是怎樣的體驗?程式設計師
- 一流程式設計師完全可以有程式設計之外的生活程式設計師
- JavaScript 函數語言程式設計(一)JavaScript函數程式設計
- JavaScript函數語言程式設計(一)JavaScript函數程式設計
- javascript非同步程式設計(一)-現狀JavaScript非同步程式設計
- 做博士還是做一個專業的程式設計師?程式設計師
- 30歲轉行做初級程式設計師是一種怎樣的體驗?程式設計師
- 做過程式設計師的產品經理是一種什麼樣的存在?程式設計師
- 別做程式設計師程式設計師
- 做個程式設計師程式設計師
- 像bootstrap一樣的去做web程式設計bootWeb程式設計
- 微信小程式可以線上繳物業費?物業繳費小程式怎麼做?微信小程式
- JavaScript物件程式設計JavaScript物件程式設計
- javascript promise程式設計JavaScriptPromise程式設計
- 做一個心理健康的程式設計師程式設計師
- 原創|程式設計師如何做私活?(一)程式設計師
- 做一名優秀的程式設計師程式設計師
- 如何做一個理智的程式設計師程式設計師