我决定把f#作为我的函数式语言.
我的问题:在文件中给出一堆50个数字,得到每行总和的前10位数.(对于那些知道的人来说是欧拉问题)
例如(简化):1234567890
总和是45
第一个"十"数字或在我们的例子中"第一"数字是4.
继承了我的问题,我读了我的数字文件,我可以用"\n"分割它,现在我有每一行,然后我尝试将它转换为一个char数组,但问题来了.我无法访问该数组的每个元素.
let total =
lines.Split([|'\n'|])
|> Seq.map (fun line -> line.ToCharArray())
|> Seq.take 1
|> Seq.to_list
|> Seq.length
Run Code Online (Sandbox Code Playgroud)
我得到每一行,将其转换为数组,我采取第一个数组(仅用于测试),我尝试将其转换为列表,然后获取列表的长度.但是这个长度是我有多少个数组的长度(即1).它应该是50,因为数组中有多少元素.
有谁知道如何管道它来访问每个char?
我的最终答案:
let total =
lines.Split([|'\n'|])
|> Seq.map (fun line -> line.ToCharArray() |> Array.to_seq)
|> Seq.map (fun eachSeq -> eachSeq
|> Seq.take 50 //get rid of the \r
|> Seq.map (fun c -> Double.Parse(c.ToString()))
|> Seq.skip 10
|> Seq.sum
)
|> Seq.average
Run Code Online (Sandbox Code Playgroud)
是我最终得到的并且它正在工作:)。
基本上在我将其转换为 charArray 之后,我将其设为一个序列。所以现在我有一个序列序列。然后我可以遍历每个序列。
归档时间: |
|
查看次数: |
5228 次 |
最近记录: |