问题标签 [set-theory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 对一组 N 个元素组合的测试可用于计算每个不同元素的总和
我需要进行一般测试,看看我是否可以使用元素的组合来计算不同元素的总和,其中每个组合的总和是已知的,但单个元素的值不是。如果你能计算出这个不同的和,那么这个集合是有效的,如果不是,那么这个集合是无效的。一个元素不会在组合中出现两次。
为了显示:
- 集合 1:{A+B},{B,C} 是无效集合
- 集合 2:{A}, {B}, {B,C} 是有效集合 ( {A} + {B,C} = A+B+C )
- 集合 3:{A,D}, {B,C,A}, {B,C} 是无效集合
- 集合 4:{A,B}, {B,C}, {A,C} 是有效集合 (({A,B}, {B,C}, {A,C})/2 = A+B +C)
将寻求通过 C# 或 SQL 实现测试。
lisp - 设置,而不是在 Lisp 世界中列出?
在集合论中,我们有{x, y, z}
,这与{z, y, x}
which 相同 ... {y, x, z}
, {z, x, y}
... 现在,在 Lisp(Scheme 等)中,列表不允许这种并置。订单很重要。问题:是否有一个 Lisp/Scheme 等价于一个顺序无关的集合?
只是猜测,我可能只是简单地构建一个列表,比如说(x y z)
,然后有某种类型,member?
即,你是其中的成员吗?机制。
...我敢打赌,我不是唯一对此感到疑惑的人...
string - 如何用 Clojure(Script) 字符串模仿“设置交集”和“设置联合”之类的东西?
假设S
和T
是字符串,分别定义如下:
是否有类似的 clojure(script) 操作string-intersection
和string-union
(因为没有更好的名称)满足以下条件?
和
如您所见,string-intersection
将消除(逐行)不匹配的行(仅保留匹配的行),同时string-union
具有合并行并忽略重复项的效果。
注意:我正在使用 clojurescript,但我想答案也可以推广到 clojure。
coq - 如何在 Coq 中表达子集关系?
我如何在 Coq 中描述一个集合Y
是另一个集合的子集X
?
我测试了以下内容:
,试图表达如果一个元素y
在 中Y
,那么y
在 中X
。但这会产生关于 的类型错误y
,这并不奇怪。
有没有简单的方法subset
在 Coq 中定义?
javascript - 确定可以从序列中删除一组值的所有可能方式的算法
我试图确定有多少种不同的方法可以从序列中删除一组值,使原始序列保持有序(稳定),并确保从原始序列中仅删除一个实例值。例如,如果我有
[1,2,1,3,1,4,4]
并且我想删除[1,4,4]
我的结果组合将是:
[1,2,1,3,1,4,4] \ [1,4,4] = [ [2,1,3,1], [1,2,3,1], [1,2,1,3] ]
或者
[1,2,1,3,1,4,4] \ [1,1] = [ [2,3,1,4,4], [1,2,3,4,4], [2,1,3,4,4] ]
我编写了 javascript 代码来生成所有数组值的组合而无需删除,删除部分似乎应该很容易,但是当需要多次删除多个值时我没有看到算法。
clojure - 当结果为空且右集具有更高的基数时,clojure.set/difference 失败
我尝试从一组元素中删除元素,这些元素存在于 Clojure 中的不同序列中。但clojure.set/difference
似乎并没有像我预期的那样工作。我的错误在哪里?
一些例子:
删除空序列
结果:(#{3 2}
如预期)
删除一些元素
结果:(#{2}
如预期)
移除集合中不存在的元素
结果:(#{3 2}
如预期)
删除所有元素
结果:(#{}
如预期)
移除更多存在的元素
而不是结果我得到IllegalArgumentException contains? 类型不支持:clojure.lang.PersistentList clojure.lang.RT.contains (RT.java:814)
预期结果:#{}
clojure.set/difference
因此,当结果是空集并且要删除的元素集具有比原始集更高的基数时,该函数似乎失败了。但问题是:为什么这不起作用?我希望这是clojure.set/difference
.
recursion - Racket/Scheme - 将函数应用于列表列表中的每个元素
我是一名物理专业的学生,正在学习编程的数学课(我注册了数学),但我以前从未用任何语言编写过代码,所以关于 Racket 的一切对我来说都是全新的。到目前为止,该类的目标是获取与集合相关的函数并将它们转换为 Racket 程序。其中一个功能是获取列表列表并删除每个元素的第一项:
f({(0, 1, 0), (1, 0, 0), (1, 1, 1)...} = {(1, 0), (0, 0), (1, 1)。 ..}
到目前为止,我已经将此作为一个程序:
当我运行程序时,它会返回应用了正确的功能,但只有第一个元素,比如如何
回到'(1 0)。它是某种“地图”功能,还是完全不同的东西?我以为最后一行会处理列表的其余部分,但事实并非如此。
python - Python:frozensets 比较
考虑以下脚本:
神秘的输出是
这些 if-else 条件检查两种情况 a) i <= singleFrozenset 和 b) len(i) == 1。第二个条件很简单;但是,我无法弄清楚匹配的案例是 1、4、6 和 7 的第一个条件。在这些案例中,我找不到这些冻结集之间的链接!知道为什么吗?
c# - 将双向关系表划分为不同的组
我正在开发一个应用程序,用户可以在其中将“组件”标记为工作流程的一部分。在许多情况下,它们最终会带有几个彼此同义的标签。他们希望将这些标签组合在一起,以便在将一个标签添加到组件时,也可以添加组中的其余标签。
我决定将标签组分解为组中每对标签之间的双向关系。因此,如果一个组具有标签 1 和 2,则记录如下所示:
基本上,一个组被表示为其中每个标签的笛卡尔积。将其扩展到 3 个标签:
我们的关系是这样的:
我有几种方法可以将它们组合在一起,但它们并不出色。首先,我编写了一个视图,列出了每个标签及其组中的标签列表:
这样做的问题是,每个组在结果中出现的次数与其中的标签一样多,我无法想出在单个查询中解决的方法。所以它给了我:
然后在我的后端,我丢弃所有包含另一个组中出现的密钥的组。标签没有被添加到多个组中,所以这很有效,但我不喜欢我拉下多少无关数据。
我想出的第二个解决方案是这个 LINQ 查询。用于对标签进行分组的键是组本身的列表。这可能比我最初想象的要糟糕得多。
我真的很讨厌按调用结果分组string.Join
,但是当我尝试按键列表分组时,它没有正确分组,将每个标签单独放在一个组中。此外,它生成的 SQL 非常可怕。我不打算在这里粘贴它,但 LINQPad 显示它在我的测试数据库中生成了大约 12,000 行单独的 SELECT 语句(我们在 RelatedTags 中有 1562 个标签和 67 条记录)。
这些解决方案有效,但它们非常幼稚且效率低下。不过,我不知道还能去哪里。有任何想法吗?
regex - 为什么是 {0^n1^n | n >=0} 一种非常规语言?
我试图理解为什么语言{0^n1^n | n >=0}
不规则。
我知道 FSA 没有内存,因此无法跟踪 n 的值是多少,但是,如果机器能够为 0 生成足够的状态,为什么它不能为 1 生成足够的状态。
它只是失去了记忆n
吗?
我希望有人可以向我解释这一点。
是不是0^n
也很不规律?既然没有记忆n
?