2013-05-13 73 views
1

如何顯示字符串(矢量)中包含的單詞數? 兩個單詞之間可能有多個空格。顯示屏位數

例如:輸入: '世界,你好你怎麼樣' 應該返回5.

要計算的向量v空格數,我寫: ñ←+ /vε'

但是,它不會顯示單詞的數量。 有人嗎?

回答

1
s←'Hello world, how are you?' 
a←s∊'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 
+/ (a,0)∧~0,a 

a是含有1-S在其中字母發生和位置0-S別處的載體。

s: H e l l o w o r l d , h o w a r e y o u ? 
a: 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 

一個單詞的每個首字母都對應一個以0開頭的1(或者在一個初始位置)。那麼,如果我們這個序列向右移,否定它,並「和」它的a原始值,我們可以找出詞首字母:

s:   H e l l o w o r l d , h o w a r e y o u ? 
a,0:   1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 
~0,a:  1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 
(a,0)∧~0,a: 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 

現在算起的話是一樣簡單總結:+/

您可以在http://ngn.github.io/apl/web/index.html#code=s%u2190%27Hello%20world%2C%20how%20are%20you%3F%27%0Aa%u2190s%u220A%27abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%27%0A+/%28a%2C0%29%u2227%7E0%2Cahttp://tryapl.org

0

我的解決辦法是相似的,但訣竅是在判決之前故意添加一個空格,只計算一個字母之前下跌空間嘗試用我的翻譯代碼。這樣,空格的數量等於單詞,並且在執行操作之前,您無需擔心修剪文本。

如果我沒有添加空間(在第二行),我無法知道文本是否有任何前導空格,所以我必須以某種方式檢查該空間。通過有意添加空間,我正在精簡文本,以便我知道我總是處理至少一個領先空間。

計算字數:

P←"My  cat doesn't like fishy tasting  food. " 
L←' '⍷' ',P 
+/L∧~1⌽L 

輸出:

7 

擺脫不必要的空間:

在一個相關主題的L值還可以用來從文本的正面和結尾修剪空格並去除多餘的空格:

1↓(L⍲1⌽L)/' ',P 

輸出:

"My cat doesn't like fishy tasting food." 

修剪前緣和後位:

如果要修剪的開始和文本的末尾而不刪除多餘的空格:

((∧\L)⍱⌽∧\⌽L)/' ',P 

但是,在這最後一個,它不是需要添加領先空間。所以,如果你不需要計算L任何其他原因,這是一個使用L2替代:

L2←" "⍷P 
((∧\L2)⍱⌽∧\⌽L2)/P 

輸出(相同的開始,但最後多餘的空格都不見了):

"My  cat doesn't like fishy tasting  food."