![]() |
1
3
如果您只是想缩短代码,请查看 Stack Exchange community for code golfing 如果我们认为代码太多,可能不是因为我们需要缩短代码,而是因为我们需要缩短代码 . 实现这一目标需要经验和良好实践。我们要做的是分离出明显正确的简单概念,然后以明显正确的方式将它们结合起来。方法包括自上而下的设计(将解决方案分解为更小的部分)和自下而上的设计(从更小的部分构建到解决方案)及其混合。
一个自下而上的作品直接打动了我,那就是对一系列数字求和的任务。这在哈斯克尔的前奏曲中有一个定义,叫做
另一种方法是简化问题。我们可能会被问题的措辞引入歧途。仔细检查后,我们可能会发现一个等效且更简单的短语。
现在我们有了由行返回分隔的数字列表,其中每个数字由一个空格分隔。 在这一点上,我们有一个明确的方法来分解解决方案在自上而下的方式。首先,我们简化输入。其次,我们解析数字列表。第三,我们对列表进行汇总。第四,我们打印总数。因此,这是我们解决方案的框架:
现在,这只是实施解决方案中每个明显部分的问题。
以书面形式
然后继续。。。
|
![]() |
2
2
Alec在其中一条评论中发布了我的原始代码的超级压缩版本。我决定发布一个小故障,以防有人迷路,不知道里面发生了什么:) 以下代码段前面需要有有效的导入:
所以我们从亚历克的版本开始:
我们可以翻转
再说一次:
最后一次:
我们可以替换
一些最终意见:
|
![]() |
trpnd · 如何定义由两个任意单声道变压器组成的单声道变压器? 3 年前 |
![]() |
Fabus1184 · Haskell mapM_不打印 3 年前 |
![]() |
Gotthold · 基于范数约束向量的类型 3 年前 |
![]() |
jian · haskell将另一个函数用作输入参数 3 年前 |
![]() |
Jocafrei · 用Haskell函数实现最大公约数函数 6 年前 |