1


たとえば、asciibox の次の列の位置を見つける関数を作成しました。

+-----++---++---+
|  a  || b || c |
+-----++---++---+

ボックス b は列 "pseudo code " {length (box a)} から始まり、ボックス c は疑似コード {length box a + length box b} から始まる必要があります。

だから私はこの関数を書いた

f:: [Int]->[Int]->[Int]
f (x:xs) []  = f xs [x]
f  [] ys = ys
f (x:xs) ys = f xs (ys++[x+ last ys])

それは私が欲しいものを私に与えます

f [23,24,25] [] 
ghci> [23,47,72]

他のアルゴリズムが可能かどうか知りたいです。「折りたたみ」または「展開」またはおそらく「反復」による解決策はありますか

ありがとう

4

1 に答える 1

5
> scanl (+) 0 [23, 24, 25]
[0,23,47,72]
于 2011-11-11T14:48:13.923 に答える