Questions tagged «set-theory»

集合论是研究无序对象集合的数学分支。使用此标签的挑战将涉及对集合的操纵或分析。

3
紫菜表计算和未知在ZFC中终止的算法
将紫菜表提供的还没有被证明在数学的标准公理系统终止程序的例子ZFC但是当一个人承担非常大基数公理就终止。 介绍 经典紫菜表是独特的有限代数与底层集合和操作,其满足的身份,并且其中用于和其中。An{1,...,2n}*x * (y * z)=(x * y) * (x * z)x*1=x+1x<2n2n*1=1 有关经典Laver表的更多信息,请参见Patrick Dehornoy所著的《辫子和自我分配》。 挑战 1*32在经典Laver表中计算并在找到nwith 时恰好终止的最短代码(以字节为单位)是什么?换句话说,程序仅在找到with时终止,否则它将永远运行。1*32<2nn1*32<2n 动机 一个秩为秩基数(也称为I3-基数)是一个非常大的水平无穷的,如果一个假设秩为秩基数的存在,那么一个人能够证明更定理如果一个不超过假设存在等级为基数的基数。如果存在一个秩为秩基数,再有就是一些经典紫菜表哪里。但是,尚无ZFC中的证明。此外,已知的是,至少其中大于(这是一个非常大的数量,因为阿克曼函数是一个快速增长的函数)。因此,任何此类程序都将持续极长的时间。An1*32<2n1*32<2nn1*32<2nAck(9,Ack(8,Ack(8,254)))Ack 我想看看可以编写多短的程序,以便我们不知道该程序是否使用标准公理系统ZFC终止,但是我们确实知道该程序最终在一个更强大的公理系统(即ZFC + I3)中终止。这个问题的灵感来自斯科特 ·亚伦森(Scott Aaronson)最近的一篇文章,在这篇文章中,亚伦森和亚当·叶迪迪亚(Adam Yedidia)建造了具有8000个州以下的图灵机,以至于ZFC无法证明图灵机不会终止,但是当人们假设大的基本假设时,已知该图灵机不会终止。 经典Laver表的计算方式 当计算紫菜表通常是方便使用的事实,在代数,我们对所有的。An2n * x=xxAn 以下代码计算经典Laver表 An #table(n,x,y)在A n中返回x * y 表格:=功能(n,x,y) 如果x = 2 ^ n则返回y; elif y = 1然后返回x + 1; 否则返回table(n,table(n,x,y-1),x + …

4
将不确定大小的列表映射到数字!
众所周知,在研究无穷大的数学领域中,任何有限数量的可数集合的笛卡尔积也是可数的。 您的任务是编写两个程序来实现此目的,一个程序从列表映射到整数,一个程序从整数映射到列表。 您的函数必须是双射的和确定性的,这意味着1它将始终映射到特定列表,并且2将始终映射到另一个特定列表,等等。 之前,我们将整数映射到仅包含0和的列表1。 但是,现在列表将由非负数组成。 眼镜 程序/功能,合理的输入/输出格式。 映射的整数是从头开始1还是从头开始0是您的选择,这意味着0不必(但可以)映射到任何东西。 空数组[]必须被编码。 输入/输出可以在任何基础上。 允许在两个函数之间共享代码。 计分 这是代码高尔夫球。最低分获胜。 分数是两个程序/功能的长度之和(以字节为单位)。

4
贪婪地划分重复的组合列表
首先,一些定义: 给定n和k,考虑多重集的排序列表,对于每个多重集,我们从中选择带有重复的k数字{0, 1, ..., n-1}。 例如,对于n=5和k=3,我们有: [(0,0,0),(0,0,1),(0,0,2),(0,0,3),(0,0,4),(0,1,1),( 0,1,2),(0,1,3),(0,1,4),(0,2,2),(0,2,3),(0,2,4),(0, 3、3),(0、3、4),(0、4、4),(1、1、1),(1、1、2),(1、1、3),(1、1, 4),(1、2、2),(1、2、3),(1、2、4),(1、3、3),(1、3、4),(1、4、4) ,(2、2、2),(2、2、3),(2、2、4),(2、3、3),(2、3、4),(2、4、4),( 3,3,3),(3,3,4),(3,4,4),(4,4,4)] 甲部分是与所有多集的在部分的交集的大小是至少属性多集的列表k-1。也就是说,我们将所有多重集都一次相交(使用多重集相交)。例如,[(1, 2, 2), (1, 2, 3), (1, 2, 4)]是一个零件,因为其交点的大小为2,但[(1, 1, 3),(1, 2, 3),(1, 2, 4)]不是,因为它的交点的大小为1。 任务 您的代码应带有两个参数n和k。然后,它应该按排序的顺序贪婪地遍历这些多集并输出列表的各个部分。对于这种情况n=5, k=3,正确的分区是: (0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4) (0, 1, 1), (0, 1, …

12
N-唯一加法集
请记住,集合是无序的,没有重复项。 定义长度为K的N个唯一加法集合S是一个集合,使得S中所有N个长度子集的总和为不同的数。换句话说,S的所有N个长度的子集的和都是不同的。 目标给定一个数组/集合作为输入,并N以任意合理格式给函数或完整程序提供一个数字,查找并返回或输出表示输入是否为N的真实或假值(错误为假)。独特的添加剂。 您可以假设每个元素最多只能出现一次,并且每个数字都在您语言的本机数据类型之内。如果需要,您还可以假设输入已排序。最后,您可以假设0 < N <= K。 例子 让我们考虑一下set S = {1, 2, 3, 5}和N = 2。这是所有唯一对的总和S(因为唯一对是唯一的总和): 1 + 2 = 3 1 + 3 = 4 1 + 5 = 6 2 + 3 = 5 2 + 5 = 7 3 + 5 = 8 我们可以看到输出中没有重复项,因此S是2唯一加法的。 现在让我们考虑集合T …

1
设置理论算术(+和*)
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 4年前关闭。 集合理论算术 前提 已经存在涉及不使用乘法运算符的乘法(这里和此处)的几个挑战,并且这个挑战是相同的(最类似于第二个链接)。 与以前的挑战不同,此挑战将使用自然数(N)的一组理论定义: 和 例如, 等等。 挑战 我们的目标是使用集合运算(请参见下文),以对自然数进行加法和乘法。为此,所有条目将使用其解释器在下面的相同“设置语言”。这将提供一致性并简化评分。 该解释器允许您将自然数作为集合进行操作。您的任务是编写两个程序主体(请参见下文),其中一个加上自然数,另一个自然将它们相乘。 集合的初步说明 集合遵循通常的数学结构。以下是一些要点: 集不排序。 没有集合包含自身 元素是否在集合中,这是布尔值。因此,集合元素不能具有多重性(即元素不能多次出现在集合中。) 口译员和细节 用于此挑战的“程序”以“设置语言”编写,并且由两部分组成:标题和正文。 标头 标头非常简单。它告诉解释器您正在解决什么程序。标题是程序的开始行。它以+or *字符开头,后跟两个以空格分隔的整数。例如: + 3 5 要么 * 19 2 是有效的标头。第一个表明您正在尝试解决3+5,这意味着您的答案应该是8。除了乘法之外,第二个相似。 身体 正文是您对口译员的实际指示所在。这才是真正构成您的“加法”或“乘法”程序的要素。您的答案将包含两个程序主体,每个任务主体一个。然后,您将更改标题以实际执行测试用例。 语法及指示 指令由一个命令后跟零个或多个参数组成。为了以下演示的目的,任何字母字符都是变量的名称。回想一下,所有变量都是集合。label是标签的名称(标签是单词,后跟分号(即main_loop:),int是整数。以下是有效的说明: 流量控制: jump label无条件跳转到标签。标签是一个“单词”,后跟一个分号:例如,main_loop:是一个标签。 je A label 如果A为空则跳转到标签 jne A label …

17
设置两个列表的交集
您的目标是计算两个整数列表的集合相交。相交定义为在两个输入列表中至少发现一次的唯一无序整数组。 输入项 输入可以是所需的任何格式(功能参数,标准输入输出等),并且由两个整数列表组成。除了可能包含任何非负数的整数(即它们未排序,可能包含重复项,可能具有不同长度,甚至可能为空)之外,您可能不假设有关每个列表的任何内容。假定每个整数都适合您语言的本机带符号整数类型,长度可能超过1个十进制数字,并且已签名。 输入示例: 1 4 3 9 8 8 3 7 0 10 1 4 4 8 -1 输出量 输出是任何类似于列表的整数,代表将两个列表的交集设置为所需的任何格式(返回值,stdio等)。尽管欢迎您提供恰好总是被排序的实现,但是并不需要对输出进行排序。输出必须形成有效的无序集合(例如,它不得包含任何重复值)。 测试用例示例(请注意,输出顺序并不重要): 前两行是输入列表,第三行是输出。(empty)表示空白列表。 (empty) (empty) (empty) 1000 (empty) (empty) 3 1 2 4 3 1 1 1 1 3 3 1 -1 0 8 3 3 1 1 3 1 …

3
打印序列的交集
顺序 您将得到第四位序列号1通过4。 OEIS0当自然数以二进制列出时,的位置。这是有关如何计算序列的示例: 0,1,10,11,100,101,110,111 ^ ^ ^^ ^ ^ 0 3 78 10 14 序列的开始是这样的: 0, 3, 7, 8, 10, 14, 19, 20, 21, 23, 24, 27, 29, 31, 36, 37, 40, 45, 51, ... OEIS此序列包括第一个自然数,跳过后两个,然后包括后三个,然后跳过后四个,然后继续。 0, 3, 4, 5, 10, 11, 12, 13, 14, 21, 22, 23, 24, 25, …

6
排列编号
挑战 对于给定的n个整数集,编写一个程序,该程序将输出其字典索引。 规则 输入只能是由空格分隔的一组唯一的非负整数。 您应该输出排列的字典索引(范围从0到n!-1)。 不能使用置换库或内置置换。 您可能不会生成输入的排列集或排列的任何子集来帮助您找到索引。 您也不能将给定的排列递增或递减到下一个/上一个(按字典顺序)排列。 如果您找到某种无需使用阶乘就可以完成的奖励积分(-10字节)。 对于n = 100,运行时间应少于1分钟 字节数最短的代码获胜 优胜者选择星期二(2014年7月22日) 有关排列的更多信息 http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html 排列组运算 http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html 例子 0 1 2 --> 0 0 2 1 --> 1 1 0 2 --> 2 1 2 0 --> 3 2 0 1 --> 4 2 1 0 --> 5 0 …

4
计算{1,2,…,n}上的拓扑数
任务 编写一个函数/程序,该函数/程序将其n作为参数/输入并打印/返回集合上的拓扑数(如下所示){1,2,...,n}。 拓扑定义 令X为任意有限集,并假设T是X 的幂集的子集(即,包含X的子集的集合)满足以下条件: X和空集在T中。 如果两个组U和V是在T,则联合这两组都在T. 如果两组U和V在T中,则这两组的交点在T中。 ...然后T称为X上的拓扑。 技术指标 您的程序是: 一个函数,它接受n作为参数 或输入 n 并打印或返回set上(不同)拓扑的数量{1,2,...,n}。 n 是小于11的任何非负整数(当然,如果您的程序处理的n大于11也没有问题),并且输出是一个正整数。 您的程序不应使用任何类型的库函数或本机函数来直接计算拓扑数。 输入示例(n的值): 7 输出/返回示例: 9535241 您可以在此处或此处检查返回值。 当然,最短的代码胜出。 获胜者已确定,但是,如果出现较短的代码,我可能会更改获胜者。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.