从 Smalltalk 中的集合生成所有组合

2024-02-07

我已经看到这个问题在 C# 和其他语言中得到解决,但在 Smalltalk 中却没有得到解决。我有3个集合,例如:

a := #(3 4 5).
b := #(4 1 2).
c := #(5 2 3).

我需要做出所有可能的组合,i。即:

#(3 4 5)
#(3 4 2)
#(3 4 3)

#(3 1 5)
#(3 1 2)
#(3 1 3)

#(3 2 5)
#(3 2 2)
#(3 2 3)

#(4 4 5)
...

我在 Squeak 和 Pharo 中看到有组合:atATimeDo: 但我不知道如何在这种情况下使用它。这不是家庭作业。有什么帮助吗?


这有点神秘,但很短。它将块用作匿名函数(某种程度上,它仍然需要从变量引用,以便可以递归调用)。

| expand |
expand := [ :prefix :lists |
    lists isEmpty
        ifTrue: [ Array with: prefix ]
        ifFalse: [ | tail |
            tail := lists allButFirst: 1.
            lists first inject: #() into: [ :all :each |
                all, (expand value: (prefix copyWith: each) value: tail) ] ] ].
expand value: #() value: #((3 4 5)(4 1 2)(5 2 3)) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Smalltalk 中的集合生成所有组合 的相关文章

  • Pharo 5 无头模式下的调试

    我正在无头模式下使用 RFB 运行 pharo 5 海边 pharo vm display null vm sound null app pharo5 Pharo5 0 image no quit 在本地运行良好 带有 XFCE 的 Ubu
  • 如何在 Java 中递归地从 N 元素集中生成所有 k 元素子集

    所以我陷入了试图从给定的 N 元素集中找到所有 k 元素子集的问题 我知道使用公式 C n k C n 1 k 1 C n 1 k 的 k 子集总数是多少 我也知道如何做到这一点以迭代的方式 但是当我尝试思考递归解决方案时 我陷入了困境 谁
  • 如何在 Seaside 回调中访问 jQuery 事件对象

    基本上 我想将以下内容翻译成 Seaside Smalltalk myDiv bind click function e console log e 除此之外我不想console log事件 但在我的 ajax 回调中访问它 最有希望的方法
  • 配置器中的组合数量

    我被要求编写一个例程来决定产品配置器中可能的组合数量 配置器非常简单 尽管它具有比这更多的功能 但它可以建模为多个 单选组 如 UI 控件 其中必须选择 n 个选项之一 唯一可以使用的约束是规则 如果选择了一个选项 则不能选择另一个选项 所
  • 一组玩家的所有可能的牌/扑克牌组合

    我正在寻找一个优雅 快速 的 python 函数 它可以从以下两个数组中生成每个组合 cards 8H 8S 8C 8D 9H 9S 9C 9D 10H 10S 10C 10D AH AS AC AD players 1 1 1 2 2 2
  • 将 n 分成 k 个组的所有可能方法 - R

    我陷入了一道数学问题 我想创建一个函数 输出将整数 n 分为 k 组的所有方式 使得每个组中 k 至少为1 k gt 1 该函数可能类似于 n ways lt function n k 我想要一个数据帧作为输出 因此对于 n ways 5
  • 在 Less 中组合多个“转换”条目

    我有两个 mixin 它们都转换为 webkit transform rotate deg webkit transform rotate deg scale factor webkit transform scale factor 当我一
  • 生成向量元素的所有可能组合的列表

    我正在尝试在长度为 14 的向量中生成 0 和 1 的所有可能组合 是否有一种简单的方法可以将输出作为向量列表 甚至更好 作为数据帧 为了更好地演示我正在寻找的内容 假设我只想要一个长度为 3 的向量 我希望能够生成以下内容 1 1 1 0
  • 生成字符串列表的所有组合

    我想生成一个字符串列表的所有可能组合的列表 它实际上是一个对象列表 但为了简单起见 我们将使用字符串 我需要这个列表 以便我可以在单元测试中测试每种可能的组合 例如 如果我有一个列表 var allValues new List
  • Smalltalk:原语是如何实现的?

    我知道一切都是对象 您可以向 Smalltalk 中的对象发送消息来执行几乎所有操作 现在我们如何实现一个对象 内存表示和基本操作 来表示原始数据类型 例如如何 对于整数的实现 我查看了 Smalltalk 的源代码并发现了这个Smalli
  • 选择单个随机值组合的算法?

    说我有y不同的值 我想选择x他们是随机的 执行此操作的有效算法是什么 我可以打电话rand x次 但如果x y很大 注意组合这里需要 每个值应该有相同的被选择概率 但它们在结果中的顺序并不重要 当然 任何算法生成排列 questions t
  • MySql查询获取两列的所有组合,如果没有匹配的记录则为NULL

    我有一个表 其中记录了服务器的停机时间 我在 sqlfiddle 创建了该表的简化版本 请看这里sqlfiddle http www sqlfiddle com 2 8479e 8 该表的每条记录如下 Reason Month Down T
  • 尝试对变量列表进行所有操作组合

    我有一个值列表 例如 values 1 2 3 4 我想尝试此列表中的所有组合 例如 1 2 1 3 1 4 1 2 1 3 1 4 1 2 3 1 2 4 1 3 4 etc 以最简洁的方式获得所有这些可能的操作组合的最直接的方法是什么
  • 一组内所有对的组合

    我想计算你可以组成一个集合的所有可能的对列表 例如 input 1 2 3 4 5 6 output 1 2 3 4 5 6 2 3 4 5 1 6 2 4 1 3 5 6 注意 这个例子只是输出中的一些随机内容 大部分都被删除了 我不关心
  • 如何在 C++ 中创建多个向量的组合而无需硬编码循环?

    我有几个数据看起来像这样 Vector1 elements T C A Vector2 elements C G A Vector3 elements C G T up to VectorK elements Note also that
  • 如何在 R 中迭代生成组合? [复制]

    这个问题在这里已经有答案了 所以我目前正在使用以下代码来生成我的组合 组合 x y 但问题是函数存储了所有可能的组合 我不想存储它们 我只想通过循环或其他方式生成它们 这对我的程序来说会更有效率 有没有办法通过 for 循环生成组合而不是全
  • 生成字符串所有组合的算法

    我在网上找到了一个链接 其中显示了生成字符串的所有组合的算法 http www mytechinterviews com combinations of a string http www mytechinterviews com comb
  • 如何从Python中列表的字典中的值生成所有组合

    我想生成在字典中索引的列表中的所有值组合 A D E B F G H C I J 每次 每个字典条目的一项都会被选择并与其他键中的项目组合 所以我有 D F I D F J D G I D G J D H I E H J 我知道有一些东西可
  • 生成总和为 N 的所有数字排列

    我正在编写一个程序来创建所有数字 起初 我尝试使用分区函数对数字进行分区 然后对每个数字集进行排列 但是我认为这行不通 最好的方法是递归排列 同时对数字求和 这超出了我的能力范围 抱歉 如果这听起来真的很愚蠢 但我真的不知道 Example
  • 通过增加索引之和来生成排序组合的有效方法

    对于启发式算法 我需要一个接一个地评估特定集合的组合 直到达到停止标准 由于它们很多 目前我正在使用以下内存高效迭代器块生成它们 受到 python 的启发 itertools combinations http docs python o

随机推荐