You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Caml中实现判断两个列表是否排列等价的函数

实现方案

核心实现思路非常直接:

  • 优先校验两个列表的长度,长度不同时直接返回false,无需后续计算
  • 对两个列表执行相同规则的排序后,直接比较排序结果是否完全相等即可

代码实现

let are_permutations l1 l2 =
  if List.length l1 <> List.length l2 then
    false
  else
    List.sort compare l1 = List.sort compare l2

说明

  • 该函数完全符合要求的 'a list -> 'a list -> bool 类型,支持所有可比较类型的列表校验
  • 逻辑成立的依据是:两个列表元素种类、各元素出现次数完全一致时,排序后的结果必然完全相同,和原始排列顺序无关
  • 先校验长度的逻辑可以避免对长度不同的长列表做无意义的排序,优化运行效率

测试验证

你给出的示例运行结果如下:

  • are_permutations [2; 3; 4; 3] [3; 3; 4; 2] 返回 true
  • are_permutations [2; 3; 4; 3] [2; 4; 3] 返回 false

内容的提问来源于stack exchange,提问作者Chezza luna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:54:08