小编iov*_*ovo的帖子

一种生成给定长度组合的更快方法,保留顺序

TL;DR:我想要确切的行为作为filter ((== 4) . length) . subsequences. 仅使用subsequences还会创建可变长度的列表,这需要大量时间来处理。由于最终只需要长度为 4 的列表,我认为必须有一种更快的方法。


我有一个功能列表。该列表具有类型[Wor -> Wor]

列表看起来像这样

[f1, f2, f3 .. fn]

我想要的是一个n函数列表列表,同时保留这样的顺序

输入 : [f1, f2, f3 .. fn]

参数:4 个函数

输出:4 个函数的列表。

如果f1子列表中有 ,则预期输出将始终位于head列表中。

如果f2子列表中有 a而子列表没有f1f2则位于head。如果fn在子列表中,它将在last.

一般来说,如果fx列表中有 a ,它永远不会在f(x - 1).

生成子列表时基本上保留主列表的顺序。

可以假设列表的长度总是大于给定的参数。

我刚刚开始学习 Haskell,所以我还没有尝试那么多,但到目前为止,这是我尝试过的:

使用subsequences函数生成排列并对其进行应用(filter (== 4) . length) …

optimization combinations haskell list

4
推荐指数
1
解决办法
261
查看次数

Haskell - 有没有更好的方法在列表上均匀分布元素

给出这样的矩阵

matrix_table =

[[ 0, 0, 0, 0]
,[ 0, 0, 0, 0]
,[ 0, 0, 0, 0]
,[ 0, 0, 0, 0]
]
Run Code Online (Sandbox Code Playgroud)

和一份清单 position_list = [2, 3, 2, 10]

函数的输出

distribute_ones :: [[Int]] -> [Int] -> [[Int]]
distribute_ones matrix_table position_list 
Run Code Online (Sandbox Code Playgroud)

应该是这样的

[[ 0, 1, 0, 1] -- 2 '1's in the list
,[ 0, 1, 1, 1] -- 3 '1's in the list
,[ 0, 1, 0, 1] -- 2 '1's in the list
,[ 1, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
1
解决办法
126
查看次数

标签 统计

haskell ×2

combinations ×1

list ×1

optimization ×1