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而子列表没有f1,f2则位于head。如果fn在子列表中,它将在last.
一般来说,如果fx列表中有 a ,它永远不会在f(x - 1).
生成子列表时基本上保留主列表的顺序。
可以假设列表的长度总是大于给定的参数。
我刚刚开始学习 Haskell,所以我还没有尝试那么多,但到目前为止,这是我尝试过的:
使用subsequences函数生成排列并对其进行应用(filter (== 4) . length) …
给出这样的矩阵
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)