2011-08-03 50 views
3

我只是想返回true如果List[Integer]的所有元素互相跟隨的功能,即功能如果列表中有沒有間隙

noGaps(List(3,4,5)) // true 
noGaps(List(4,3,5)) // false 
noGaps(List(3,4,6)) // false 

我有一些作品,但它是一個有點冗長 - 什麼是mose優雅的解決方案?

回答

11

這個怎麼樣?

def noGaps(xs: Seq[Int]) = 
    xs.size < 2 || xs.sliding(2).forall { case Seq(x, y) => y == x + 1 } 
+3

我在此命名爲*「滑動規則」*:它總是需要兩次嘗試才能做到。首先你做對了。 *然後*你做正確的情況下seq大小小於滑動窗口... – huynhjl

+1

斯卡拉標準庫仍然充滿了令人驚喜的驚喜。直到你指出它,我才知道這個方法。 – Dylan

+0

@huynhjl :-D感謝您指出! –