问:F#:将字符串拆分为数组[简单]

时间:2016-02-26 11:09:39

标签: arrays split f#

黄釉, 在这里,我是星期五中午,试图打破欧拉问题之一。

  

计算出以下一百个50位数字之和的前十位数。

     

37107287533902102798797998220837590246510135740250   46376937677490009712648124896970078050417018260538   74324986199524741059474233309513058123726617309629   91942213363574161572522430563301811072406154908250   23067588207539346171171980310421047513778063246676   等等..

我决定将所有数字行放在一个字符串中。

let numString = 
"37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
74324986199524741059474233309513058123726617309629
91942213363574161572522430563301811072406154908250"

下一步(而不是创建一个int数组,然后alt + shift添加引号和分号)是将所有行拆分为一个int数组。 (以后称为intArray)

所以这就是我遇到问题的地方。如何简单地将字符串数组拆分为整数数组?

最后,我想总结前10行

let sum = intArray |> Seq.map bigint.Parse |> Seq.take(10) |> Seq.sum

2 个答案:

答案 0 :(得分:2)

那个项目的欧拉问题13.我认为这些问题的关键在于你试图自己解决这个问题......

一个字符串只不过是一个字符数组......你能从这里出发吗?

"828282" |> Seq.map char
val it : seq<char> = seq ['8'; '2'; '8'; '2'; ...]

从您的问题中不清楚您是要解决原始问题还是新问题(前10行)。祝好运。

答案 1 :(得分:2)

好吧,你必须拆分你的字符串以获得每行的数字。然后,如果您想要将数组更改为字符数组,则可以使用内置函数:

let charArray = splitString.ToCharArray()

然后,您可以将每个字符转换为整数,如下所示:

let intArray = charArray |> Array.map( fun i -> int(System.Char.GetNumericValue(i)))

我明白了:

val intArray : int [] =
  [|3; 7; 1; 0; 7; 2; 8; 7; 5; 3; 3; 9; 0; 2; 1; 0; 2; 7; 9; 8; 7; 9; 7; 9; 9;
    8; 2; 2; 0; 8; 3; 7; 5; 9; 0; 2; 4; 6; 5; 1; 0; 1; 3; 5; 7; 4; 0; 2; 5; 0|]