【发布时间】:2021-03-14 09:38:38
【问题描述】:
我有一个 (String, Int) 对的列表,我正在努力弄清楚如何按 snd 字段 (Int) 对列表进行排序。我不允许使用高阶函数或递归,这使得它变得更加困难。
例如,我有
[("aaaaa", 5),("bghdfe", 6),("dddr",4)]
并想将其分类为
[("dddr",4),("aaaaa", 5),("bghdfe", 6)].
编辑:
我知道没有高阶函数可能无法进行排序,我真正需要的是找到具有最小长度的元素(snd 字段),所以有没有办法找到最小数字然后取 @ 987654327@ 该索引处列表元素的字段?如果这种方式效果更好,我不确定如何找到该最小数字的索引。
【问题讨论】:
-
最小长度是多少?
-
您实际上可以使用什么?如果没有递归和高阶函数,它看起来是不可能的,除非有一些允许的方式来隐式调用 HO 函数。例如,列表推导可以有效地替换
map、filter、concatMap。do-notation 也是如此。是否允许?最重要的是,是否允许库sort函数? -
每个Int都是字符串的长度,所以最小的int = 最小长度——我需要在一个字符串列表中找到最小的字符串
-
'使用基本函数、列表推导和库函数,但不使用递归' - 不允许排序
-
你可能不会使用
minimumBy或foldl或sort?
标签: list sorting haskell minimum