小编Jen*_*sen的帖子

在Haskell中对无限列表进行燕尾迭代

我想迭代2(或3)个无限列表,找到满足条件的"最小"对,如下所示:

until pred [(a,b,c) | a<-as, b<-bs, c<-cs]
  where pred (a,b,c) = a*a + b*b == c*c
        as = [1..]
        bs = [1..]
        cs = [1..]
Run Code Online (Sandbox Code Playgroud)

a == b == 1整个计划的运行过程中,上述情况不会太长 .有没有一种很好的方法可以解决问题,例如构建无限序列[(1,1,1),(1,2,1),(2,1,1),(2,1,2),(2,2,1),(2,2,2),(2,2,3),(2,3,2),..]

额外奖励:是否有可能推广到n元组?

haskell

7
推荐指数
3
解决办法
754
查看次数

在 JavaScript 中在数组上滑动窗口

我需要在 JavaScript 中的数组上滑动窗口。

例如,大小3超过的滑动窗口[1,2,3,4,5,6,7,8,9]应计算序列[[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],[6,7,8],[7,8,9]]

以下是我的尝试,因为我找不到现成的解决方案:

function window(a, sz) {
  return a.map((_, i, ary) => ary.slice(i, i + sz)).slice(0, -sz + 1);
}
Run Code Online (Sandbox Code Playgroud)

它返回一个窗口数组,可以映射这些窗口以获取单个窗口。

什么是更好的解决方案?

javascript

5
推荐指数
3
解决办法
6162
查看次数

标签 统计

haskell ×1

javascript ×1