2014-09-29 78 views
0

我想在命令行中實現siri/cortana類似功能的一個小子集。如何在命令行中實現Siri/Cortana類似的功能?

例如,

$ What is the sum of 100 and 1000 
> Response: 1100 
$ What is the product of 10 and 12 
> Response: 120 

這些問題是預定義的正則表達式。它需要在ruby中調用匹配函數。 模式:什麼是(\ d)+和(\ d)+ Ruby方法調用:sum(a,b)

任何指針/建議表示讚賞。

回答

1

這聽起來和cucumber完全一樣,也許看一看,看看你是否可以用他們的班級一起攻擊一些東西:)?

1

你可以做類似如下:

question = gets.chomp 
/\A.*(sum |product |quotient |difference)\D+([0-9]+)\D+([0-9]+).*\z/.match question 
send($1, $2.to_i, $3.to_i) 

的人快速的解釋,可能是新的紅寶石匹配:

這得到輸入的命令行一行並掃描一個函數名稱(即總和,產品等),後跟一個空格,並可能包含一些非數字字符。然後,它會查找第一個數字(類似地後跟一個空格和0個或更多的非數字字符),然後查找第二個數字,然後查找任何內容或任何內容。圓括號決定分配給變量$之前的變量,即匹配第一組圓括號內容的子字符串被賦值爲$ 1。

接下來,它調用名稱爲$1的方法,並在$2$3中找到參數(轉換爲整數)。

很明顯,這根本不是泛化的 - 您將方法名稱放在正則表達式中,並且需要固定數量的參數 - 但它對於讓您走上正確的軌道很有幫助。

相關問題