gpt4 book ai didi

list - 在 Haskell 中表示四面体数序列

转载 作者:行者123 更新时间:2023-12-03 14:38:53 24 4
gpt4 key购买 nike

一段时间以来,我一直想学习一些 Haskell,我知道它和类似的语言对各种无限列表有很好的支持。那么,我如何在 Haskell 中表示四面体数的序列,最好解释一下发生了什么?

0   0   0
1 1 1
2 3 4
3 6 10
4 10 20
5 15 35
6 21 56
7 28 84
8 36 120

如果不清楚那里发生了什么,第二列是第一列的运行总计,第三列是第二列的运行总计。我更喜欢 Haskell 代码保留一些“运行总计”方法,因为这是我想知道如何表达的概念。

最佳答案

你是对的,Haskell 非常适合做这样的事情:

first_col = [0..]
second_col = scanl1 (+) first_col
third_col = scanl1 (+) second_col
  • first_col是整数的无限列表,从 0
  • 开始
  • scanl (+)计算惰性运行总和:Prelude docs

  • 我们可以验证上面的代码是否在做正确的事情:
    Prelude> take 10 first_col 
    [0,1,2,3,4,5,6,7,8,9]
    Prelude> take 10 second_col
    [0,1,3,6,10,15,21,28,36,45]
    Prelude> take 10 third_col
    [0,1,4,10,20,35,56,84,120,165]

    关于list - 在 Haskell 中表示四面体数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818558/

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