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

Arrays Q:F#:将字符串拆分为数组[简单],arrays,split,f#,Arrays,Split,F#,耶罗, 周五中午,我在这里,试图解决一个欧拉问题 算出下列150位数字之和的前10位数字 37107287533902102798799898220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 2

耶罗, 周五中午,我在这里,试图解决一个欧拉问题

算出下列150位数字之和的前10位数字

37107287533902102798799898220837590246510135740250 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

这就是欧拉计划的问题13。我认为这些问题的关键在于你试图自己解决它

字符串只是一个字符数组…你能从这里开始吗

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

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

这就是欧拉计划的问题13。我认为这些问题的关键在于你试图自己解决它

字符串只是一个字符数组…你能从这里开始吗

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

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

嗯,你必须拆分字符串才能得到每行的编号。如果要将数组更改为字符数组,则有一个内置函数:

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|]

嗯,你必须拆分你的字符串才能得到每行的数字。如果要将数组更改为字符数组,则有一个内置函数:

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|]

[|'\n'|]|>numString.Split |>Seq.map bigint.Parse |>Seq.sum |>string |>Seq.take 10 |>Seq.fold(fun acc x->acc+string x)“|>printfn”%s“->但请尽量不要使用bigint![|'\n'|]|>numString.Split |>Seq.map bigint.Parse |>Seq.sum |>string |>Seq.take 10 |>Seq.fold(fun acc x->acc+string x)“|>printfn”%s“->但请尽量不要使用bigint!你可以写一点“漂亮的”:让intArray=charArray |>Array.map(System.Char.GetNumericValue>>int)@Ringil是的,它是这样的。对不起,我弄错了
Seq.map(字符串>>Int32.Parse)
,然后;)@MarkSeemann,那么可能更好:
Seq.map(string>>int)
;)哦,那个>>操作员很酷。谢谢,我学到了一些新东西。例如,这不是将'3'转换为51吗?或者我有误解。你可以写一点“更漂亮”:让intArray=charArray |>Array.map(System.Char.GetNumericValue>>int)@Ringil是的,它有。对不起,我弄错了
Seq.map(字符串>>Int32.Parse)
,然后;)@MarkSeemann,那么可能更好:
Seq.map(string>>int)
;)哦,那个>>操作员很酷。谢谢,我学到了一些新东西。