gpt4 book ai didi

algorithm - 模式匹配列表尾元组元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:04 24 4
gpt4 key购买 nike

我有一些作为练习编写的运行长度编码代码

let rle s = 
s
|> List.map (fun x -> (x, 1))
|> List.fold (fun acc x ->
match acc with
| [] -> [(x, 1)]
| h::(x, n) -> h::(x, n+1)
| h -> h::(x, 1)
)
|> List.map (fun (x, n) ->
match n with
| 1 -> x.ToString()
| _ -> x.ToString() + n.ToString()
)

模式 h::(x, n) -> h::(x, n+1) 编译失败。

有人知道为什么吗?

最佳答案

RLE(笑脸)

let rle (s: string) = 
let bldr = System.Text.StringBuilder()
let rec start = function
| [] -> ()
| c :: s -> count (1, c) s
and count (n, c) = function
| c1 :: s when c1 = c -> count (n+1, c) s
| s -> Printf.bprintf bldr "%d%c" n c; start s
start (List.ofSeq s)
bldr.ToString()

let s1 = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
let s2 = "12W1B12W3B24W1B14W"

rle s1 = s2 |> printfn "%b" //"true"

关于algorithm - 模式匹配列表尾元组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com