【问题标题】:Ocaml: How to get list of every combinations of permutation of two lists?Ocaml:如何获取两个列表排列的每个组合的列表?
【发布时间】:2011-10-21 22:04:23
【问题描述】:

我有两个列表,比如说:

let x = [1;2];;
let y = [true;false];;

我想拥有一个 (int*boolean) 列表列表

[[(1,true);(2;false)];[(1,true);(2,true);];[(1,false);(2,true);];[(1,false);(2,false);]]

有人知道怎么做吗?

【问题讨论】:

    标签: list ocaml permutation combinations


    【解决方案1】:

    这个问题没有很好地说明究竟是什么操作。 [(1,true);(1,false)] 呢?看起来操作不是对称的——x 中的东西总是按这个顺序出现,而y 中的东西可以重复出现,并以任意顺序出现。如果您将其分解为两个任务,也许会有所帮助:

    1. 重复第二个列表的每个排列
    2. 用第一个列表压缩每个结果

    【讨论】:

      【解决方案2】:

      我认为没有人回答,因为这有点像家庭作业问题。我将首先考虑您想要的结果中所有对的第二个元素。我看到一个非常规则的结构:TF、TT、FT、FF。它会在(例如)FF、FT、TF、TT 的顺序中更多规则。无论如何,一旦您可以制作一个看起来像这样的列表,使用 List 模块中的函数将列表与其他列表配对非常容易。

      (如果你展示了一些你尝试过的东西并解释了它们为什么不起作用,你可能会得到更多答案。)

      问候,

      【讨论】:

        【解决方案3】:

        您可以咨询List module's document

        否则,只需键入

        $ cd `ocamlc -where`
        $ less list.mli
        

        你可以找到你想做的功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-09
          • 2022-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-17
          • 1970-01-01
          • 2015-01-19
          相关资源
          最近更新 更多