黄釉, 在这里,我是星期五中午,试图打破欧拉问题之一。
计算出以下一百个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
答案 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|]