gpt4 book ai didi

performance - F#中的返回字符串和代码优化

转载 作者:行者123 更新时间:2023-12-02 05:52:14 25 4
gpt4 key购买 nike

如何修改下面的代码以返回“字符串”,以便返回的输出显示在我的 MVC 页面上,并且还想接受来自用户的 enteredChar

有没有更好的方法来创建这个金字塔?

当前代码:

let enteredChar = 'F' // As Interactive window doesn't support to Read Input
let mylist = ['A'..enteredChar]
let mylistlength = mylist |> List.length
let myfunc i x tlist1 =
(for j = 0 to mylistlength-i-2 do printf "%c" ' ')
let a1 = [for p in tlist1 do if p < x then yield p]
for p in a1 do printf "%c" p
printf "%c" x
let a2 = List.rev a1
for p in a2 do printf "%c" p
printfn "%s" " "

mylist |> List.iteri(fun i x -> myfunc i x mylist)

输出:

     A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA

最佳答案

一些小的优化可能是:

  • 使用 StringBuilder 而不是 printf,后者对于长字符串来说非常慢。
  • 使用 Array 而不是 List,因为 ArrayString 配合使用效果更好。

这是一个生成金字塔字符串的版本,它与您的代码密切相关:

open System
open System.Text

let generateString c =
let sb = StringBuilder()
let generate i x arr =
String.replicate (Array.length arr-i-1) " " |> sb.Append |> ignore
let a1 = Array.filter (fun p -> p < x) arr
String(a1) |> sb.Append |> ignore
sb.Append x |> ignore
String(Array.rev a1) |> sb.Append |> ignore
sb.AppendLine " " |> ignore

let arr = [|'A'..c|]
arr |> Array.iteri(fun i x -> generate i x arr)
sb.ToString()

generateString 'F' |> printfn "%s"

关于performance - F#中的返回字符串和代码优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364113/

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