gpt4 book ai didi

haskell - 在 Haskell 中求解 Euler #31

转载 作者:行者123 更新时间:2023-12-03 14:50:32 25 4
gpt4 key购买 nike

我将我的解决方案与发布在 haskell.org http://www.haskell.org/haskellwiki/Euler_problems/31_to_40 上的解决方案进行了比较。不知道该怎么想。我写的内容是否如此不习惯,以至于普通的haskell 开发人员会立即将我的代码弹射到月球上?

main =
print $ length $ split 200

split n = split' [200, 100, 50, 20, 10, 5, 2, 1] n
where split' (1:[]) n = [take n $ repeat 1]
split' (c:cs) n
| n > c = map (c:) (split' (c:cs) (n - c)) ++ split' cs n
| n == c = [[c]] ++ split' cs n
| otherwise = split' cs n

来自“企业”开发,我有点看重直接和愚蠢的解决方案,但另一方面,也许每个人都可以很好地阅读单行文字,而我只需要拿起我的游戏?您会建议将代码压缩为练习,还是仅适用于黑客?

最佳答案

作为一般规则,您可以说,如果其他人有机会阅读您编写的代码,您应该坚持不懈地描述代码中的每一个最后一步,即使这意味着您必须多写十行代码。时髦的解决方案。

如果您只是为自己编写代码,那么您可以做任何您想做的事情,但您必须记住,当您长时间在硬盘上找到您编写的代码时,您可能想理解它。

压缩它对于学习如何使用 Haskell 的特殊功能和吹牛(“我在一行中解决了这个问题!!”)可能是一件有用的事情,但除此之外,人们不能忽视可读性和可维护性的重要性。

较长代码的另一个优点是,如果代码的行为不符合预期,则更容易调试,因为它的格式类似于它的逻辑结构(如果格式正确),因此更容易跟踪错误。

关于haskell - 在 Haskell 中求解 Euler #31,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107542/

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