如何基于不同的序列生成序列

McM*_*ons 1 f#

我有这个序列:

let wheel235 = [4; 2; 4; 2; 4; 6; 2; 6]
let wheel = seq { while true yield! wheel235 }
Run Code Online (Sandbox Code Playgroud)

我想建立一个以特定数字开头的第二个序列,该序列中的每个后续数字都是前一个数字,并且轮子序列中的下一个项目被添加到它.所以,如果我在5开始序列,我将有5,9,11,15,17,21,27等...

我无法完全理解如何去做.

对于那些熟悉它的人来说,它显然是素数生成的一个数字轮,但我不认为知道这对答案很重要.:)

Luk*_*keH 7

你可以这样做Seq.scan:

let wheel235 = [4; 2; 4; 2; 4; 6; 2; 6]
let wheel = seq { while true do yield! wheel235 }

let result = wheel |> Seq.scan (+) 5

# result will be 5, 9, 11, 15, 17, 21, 27, etc
Run Code Online (Sandbox Code Playgroud)

  • @svick:我觉得你可能是对的,但是从我最初的阅读中我并不确定.如果是这种情况那么OP可以将他们的`wheel`序列输入到`scan`而不是`wheel235`. (2认同)