2013-02-28 70 views
8

的重疊相當於鑑於這種紅寶石陣:陣列#片

[1, 2, 3, 4, 5] 

什麼是迭代像這樣的最簡單的方法?

[[1,2], [2,3], [3,4], [4,5]] 

或者這個?

[[1,2,3], [2,3,4], [3,4,5]] 
+0

這是從exercism.io笑 – compiledwrong 2014-12-19 21:15:40

回答

18

each_consdocs)做到這一點。您只需將它傳遞給您想要的塊的大小,並將它們傳遞給您傳遞的塊。

如果你真的想要的陣列,那麼你當然可以這樣用to_a鏈,例如

(1..5).each_cons(3).to_a 
+1

這是極好的一個問題,我不知道關於#each_cons方法...必須愛Ruby! – hwatkins 2013-02-28 21:36:44

+0

對!我以爲我記得我曾經在stdlib裏看到過它...... 8P – Jostein 2013-02-28 21:42:31

+1

@hwatkins,Ruby的Enumerable充滿了這樣的善良。 – 2013-02-28 22:43:05