Questions tagged «set-theory»

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

9
计算超集
您的任务很简单: 给定整数集列表,找到集合并集。换句话说,找到包含原始集列表中的所有元素(但没有其他元素)的整数集的最短列表。例如: [1,5] and [3,9] becomes [1,9] as it contains all of the elements in both [1,5] and [3,9] [1,3] and [5,9] stays as [1,3] and [5,9], because you don't want to include 4 集使用范围表示法表示:[1,4]表示整数1,2,3,4。集也可以是无界的:[3,]表示所有整数>= 3,并且[,-1]表示所有整数<= -1。确保范围的第一个元素不大于第二个。 您可以选择采用字符串符号表示的集合,也可以使用2元素元组,并使用常量非整数作为“无限”值。您可以使用两个不同的常量来表示无限的上限和无限的下限。例如,在Javascript中,只要您在所有测试用例中都使用一致,就可以使用它[3,{}]来标记所有整数。>= 3{} 测试用例: [1,3] => [1,3] [1,] => [1,] [,9] => [,9] [,] …

23
用集合构造自然数
这种构造是表示自然数的一种方式。 在此表示形式中,0被定义为空集,而对于所有其他数字,n是{0}和{n-1}的并集。 例如,构造3我们可以遵循以下算法: 3 = {ø, 2} = {ø, {ø, 1}} = {ø, {ø, {ø}}} 任务 您可能已经猜到,您的任务是取一个自然数(包括零)并输出其构造。 如果您选择的语言支持这样的对象,则可以将其输出为字符串或设置为对象。 如果选择输出为字符串,则应使用花括号({})表示一个集合。您可以选择将空集表示为ø(否则,它应该是没有条目的集{})。您也可以选择在集合中的条目之间和之后添加逗号和空格。 顺序并不重要,但是输出的集合中可能没有重复的元素(例如{ø,ø}) 这是代码高尔夫球,因此目标是拥有最少的字节数 测试用例 这是一些带有一些示例输出的测试案例。 0 -> {} 1 -> {{}} 2 -> {{}{{}}} 3 -> {{}{{}{{}}}} 4 -> {{}{{}{{}{{}}}}}

12
沙米尔的秘密分享
给定n(玩家数量),t(阈值)和s(秘密),输出n由Shamir的秘密共享算法生成的秘密。 算法 出于这一挑战的目的,将在GF(251)(size的有限域251,也称为整数mod 251)中进行计算。通常,将选择该字段,使其大小比的素数大得多n。为了简化挑战,字段大小将保持不变。251选择它是因为它是8位无符号整数可以表示的最大质数。 生成t-1(包括)范围内的随机整数[0, 250]。标明这些一个1通过一个T-1 。 构造一个t-1使用次多项式s为恒定值,并从步骤1中的功率的系数的随机整数x:F(X)= S + X *一个1 + X 2 * A 2 + ... + X 叔1 * a t-1。 (含)范围内(f(z) mod 251)每个输出。z[1, n] 参考实施 #!/usr/bin/env python from __future__ import print_function import random import sys # Shamir's Secret Sharing algorithm # Input is taken …
17 code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

12
猜词次数
任务 给定2个正整数n和k,其中n > k输出从一组可n区分元素到一组可k区分元素的排斥数。 定义 如果对于每个t∈T都有s∈S使得f(s)= t,则函数f:S→T被称为素射。 例 当n=3和时k=2,输出为6,因为存在6从{1,2,3}到的排斥{1,2}: 1↦1, 2↦1, 3↦2 1↦1, 2↦2, 3↦1 1↦1, 2↦2, 3↦2 1↦2, 2↦1, 3↦1 1↦2, 2↦1, 3↦2 1↦2, 2↦2, 3↦1 测试用例 n k output 5 3 150 8 4 40824 9 8 1451520 参考 OEIS A019538 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。 有标准漏洞。

5
在自然数内打双射,将素数映射到素数的适当子集
定义 甲双射从一组S到一组T是从函数S到T这样一个元件在T由恰好一个要素映射S。 阿一组内双射 S是从一个双射S来S。 在自然数是它是大于或等于整数0。 一组子集S是一组,使得该组中的每一个元素也是S。 一个真子集一组S是一组的一个子集S这是不等于S。 任务 编写一个将自然数作为输入并输出自然数的程序/函数。它必须是双射,并且程序/功能下的素数图像{f(p) : p ∈ ℙ}必须是的适当子集ℙ,其中ℙ素数是。 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。适用标准漏洞。

2
查找子集因素
假设我们有一组有限的正整数。这个集合可以表示为一点点线,其中集合中存在的每个整数都像扫描仪或打孔卡一样被填充。例如,该集合{1,3,4,6}可以表示为: *.**.* *代表我们集合的成员,并且.代表一个不是集合成员的整数。 这些集合具有“因素”。如果可以从x的副本中构建y,则x是y的因子。更严格地,我们对因子的定义如下: 当且仅当y是许多不交集的并集时,x都是y的因子,所有不交集都是x且具有偏移量。 我们之所以称其*.*为因子,是*.**.*因为它很显然是由两个*.*首尾相连的副本组成的。 *.**.* ------ *.*... ...*.* 因素不一定是端到端的,我们还要说这*.*是*.*.*.* *.*.*.* ------- *.*.... ....*.* 因素也可以重叠。这*.*也意味着**** **** ---- *.*. .*.* 但是,一个数字不能多次覆盖一个因数。例如*.*是不是一个因素*.*.*。 这是一个更复杂的示例: *..*.**..***.*.* 这*..*.*是一个因素。您可以在下面看到我排列的三个实例的地方*..*.*。 *..*.**..***.*.* ---------------- *..*.*.......... ......*..*.*.... ..........*..*.* 任务 给定一个由任何合理表示形式输出的集合,所有集合都是输入的因子。 您可以按任何值编制索引(即,可以选择输入中可以存在的最小数字)。您还可以假设输入集将始终包含该最小值。 这是一个代码问题,因此您应该以尽可能少的字节为目标。 测试用例 这些测试用例是手工完成的,较大的可能有一个或两个错误 * -> * *.*.* -> *, *.*.* *.*.*.* -> *, *.*, *...*, *.*.*.* ****** -> …

4
解决数学问题符号
想象一下,我有无数个作业问题(!),每个问题都有一个整数。 数学问题符号是一种使用问题说明符描述问题子集的符号。 MPN表达式可以包含以下几项: 单个值。这表示一个包含数字的集合:99 -> {99}。 一个简单的范围。这表示包含从范围的开始到结束的所有数字的集合10~13 -> {10, 11, 12, 13}。如果左侧或右侧丢失,那么他们被认为是负无穷大或无穷大分别为:~10 -> {x|x ≤ 10}; ~ -> ℤ。 一个MPN表达式,后跟“跳过”和另一个MPN表达式。这代表了两组的区别:10~20 skip 12~14 -> {10, 11, 15, 16, 17, 18, 19, 20}。 两个MPN表达式,以逗号分隔。这表示两个集合的并集:1,8~9,15~17 -> {1,8,9,15,16,17}。 “跳过”运算符的绑定比逗号运算符更紧密,因此16,110~112 skip 16 -> {16,110,111,112}(16个不包括在集合中{110,111,112}中不包括16,因此排除16无关紧要。) 您也可以将表达式放在括号中以消除歧义: 1~9 skip (2~8 skip (3~7 skip (4~6 skip 5))) -> …

12
所有人都说……
目标给定不包含字符[或的文本输入],请执行以下操作: 对于Amen具有至少一个大写字母的每个实例(因此,所有Amen不包含的实例amen),都输出相同的名称Amen(保留大写)。 对于/all the people said[?: ]/i(这是一个正则表达式)的每个实例,还输出Amen(任何情况都可以)。 在每个输出之后,您可以选择任何常量分隔符,例如换行符,空格或什么都不做。 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 IO范例 Input: I said AMEN! AMEN, PEOPLE! Output: AMENAMEN ; any separator is fine, I choose none. Input: amen amen amen amen Output: ; nothing Input: ; empty Output: ; nothing Input: *blah blah blah* And all the people said? Output: …

2
最大程度延长整数间隔
假设您得到了一组不相交的整数间隔[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]。(其中[a,b]是一组大于或等于a且小于或等于的整数b。) 索引处的间隔X覆盖bX - aX + 1值。我们叫这个号码cX。 鉴于每个间隔可以是... 保持不变(保持为[aX,bX]), +通过cX(成为[aX,bX + cX])向数字线的右侧扩展, 或-通过cX(成为[aX - cX,bX])向行的左侧扩展, 给定所有更新间隔的并集仍然可以不相交,那么最多可以包含多少个值? 编写一个函数或程序,该函数或程序采用字符串形式[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]并计算该最大值。如果编写函数,则返回值。如果编写完整的程序,请使用stdin作为输入并将值打印到stdout(或使用最接近的替代方法)。 您可以假设所有值都在正常的有符号32位整数范围内,aX并且小于或等于bX所有索引X。间隔可以是任何顺序,不一定总是增加。它们必须以上述格式作为字符串给出。该字符串可能为空,在这种情况下,答案将为0。 以字节为单位的最短提交获胜。 例 如果输入为[-3,0],[1,2],[4,9]输出,则为22。中间间隔没有空间可以扩展,因此必须保持不变。左右间隔都可以分别扩展到[-7,0]和[4,15]。的联合[-7,0]和[1,2]和[4,15]包含了除3.这是22个值的所有值从-7到15。

30
两个列表的笛卡尔积
任务 给定两个字符列表,输出其笛卡尔积,即,第一个列表中每个字母与第二个列表中每个字母的配对列表。 例 "123456"并"abcd"给出: [["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]] 输入值 两个字符或字符串列表。所使用的字符将是字母数字字符,a-z, A-Z, 0-9并且一个字符可以出现两次,并且可以同时出现在两个输入中。 输出量 输入列表的笛卡尔积。即,列出来自第一列表的字符和来自第二列表的字符的每个可能有序对的列表。每对都是两个字符或两个长度为一的字符串的列表或字符串或类似内容。输出的长度将等于输入长度的乘积。 对必须按顺序列出;首先列出第一个列表的第一个字符与第二个列表的第一个,然后是第一个列表的第一个字符的所有配对。最后一对由第一个列表的最后一个字符和第二个列表的最后一个字符组成。 输出必须是对的平面列表;不是2D矩阵,其中按对的第一个或第二个元素进行分组。 测试用例 inputs output "123456", "abcd" [["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]] "abc", "123" [["a","1"],["a","2"],["a","3"],["b","1"],["b","2"],["b","3"],["c","1"],["c","2"],["c","3"]] "aa", "aba" [["a","a"],["a","b"],["a","a"],["a","a"],["a","b"],["a","a"]]

15
手动逻辑门
编写一个模拟基本逻辑门的程序。 输入:一个全大写单词,后跟2个1位二进制数字,以空格分隔,例如OR 1 0。门OR,AND,NOR,NAND,XOR,和XNOR需要。 输出:输入的逻辑门的输出将被赋予两个数字:1或0。 例子: AND 1 0成为0 XOR 0 1变得1 OR 1 1成为1 NAND 1 1成为0 这是codegolf,所以最短的代码获胜。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

13
斐波那契产品
您可以将大于0的数字分解为正Fibonacci数字的唯一和。在这个问题中,我们通过重复减去最大可能的正斐波那契数来做到这一点。例如: 1 = 1 2 = 2 3 = 3 4 = 3 + 1 12 = 8 + 3 + 1 13 = 13 100 = 89 + 8 + 3 现在,我将斐波那契乘积称为与上面相同的列表,但加法运算被乘积代替。例如,f(100) = 89 * 8 * 3 = 2136。 编写一个给定正整数n的程序或函数,该函数将返回该数字的斐波那契乘积。 测试用例: 1: 1 2: 2 3: 3 4: …
13 code-golf  math  sequence  fibonacci  code-golf  word  code-golf  cipher  code-golf  string  math  subsequence  code-golf  regular-expression  code-golf  brainfuck  assembly  machine-code  x86-family  code-golf  math  factorial  code-golf  math  geometry  code-golf  math  arithmetic  array-manipulation  math  number  optimization  stack  metagolf  code-golf  tips  assembly  code-golf  tips  lisp  code-golf  number-theory  path-finding  code-golf  number  sequence  generation  code-golf  math  geometry  code-golf  grid  permutations  code-golf  code-golf  graphical-output  geometry  fractal  knot-theory  code-golf  math  arithmetic  code-golf  interpreter  balanced-string  stack  brain-flak  code-golf  math  set-theory  code-golf  math  array-manipulation  code-golf  code-golf  string  natural-language  code-golf  code-golf  math  linear-algebra  matrix  code-golf  string  encode 

14
用零填充文件
今天的任务是获取一个现有文件,并将零添加到该文件,直到达到一定大小为止。 您必须编写一个程序或函数,该程序或函数采用当前目录中文件的名称f和字节数b。在保留的原始内容的同时f,您必须在末尾写入零(空字节,而不是ascii 0),以便其新大小为b字节。 您可以假设名称中f仅包含字母数字的ascii,您对此具有完全权限,其初始大小不大于b,但可能与一样大b,并且有无限的可用磁盘空间。 您可能不会假设f它是非空的,或者它不已经包含空字节。 执行结束后,不应修改其他现有文件,也不应该存在新文件。 测试用例 f的内容| b | f的结果内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

5
维恩图单元
给定的多组,例如s1={2,3,7},s2={1,2,4,7,8}和s3={4,7},一个维恩图可视每一组由闭合曲线和一套元件,其内部或曲线的周边之外,这取决于它们是否是该组或不的元件。因为所有集合元素在Venn图中仅出现一次,所以如果一个元素存在于多个集合中,则表示每个集合的曲线需要重叠。我们称这种重叠为维恩图的一个单元。 这种解释可能有点混乱,因此让我们看一个示例。 例 维恩图的集合s1,s2并且s3看起来是这样的: 被(从顶部到底部看,从左到右)这个文氏图的细胞{1,8},{2},{7},{4},{3},{}和{}。 在实践中,一个人通常只遇到两个或三个集合的维恩图,因为四个或更多集合的维恩图的表示不是很清楚。但是它们确实存在,例如六组:CC BY-SA 3.0,https: //commons.wikimedia.org/w/index.php?curid = 1472309 任务 给定一组以任何合理表示形式表示的非空正整数集,请返回输入集的维恩图的像元集。具体而言,不需要图形表示。 您可以编写完整的程序或函数。 您可能会返回与有空单元格(即,所有单元格的列表)一样多的空集,而不是仅返回一个空集(即,单元格的集合)。 输入的用于上述示例的一些合理的方式包括但不限于{{2,3,7},{1,2,4,7,8},{4,7}},[[2,3,7],[1,2,4,7,8],[4,7]],"2,3,7;1,2,4,7,8;4,7"或"2 3 7\n1 2 4 7 8\n4 7"。如果不确定您选择的输入格式是否可接受,请随时在评论中提问。 如果可能,您的输出格式应与您的输入格式匹配。请注意,此规则要求您的格式能够明确显示空集。 这是code-golf,因此请尝试使用您选择的语言使用尽可能少的字节。为了鼓励每种语言而不是每种语言之间的竞争,我不会接受答案。 测试用例 以下是一些输入以及可能的输出: input -> output {{2,3,7},{1,2,4,7,8},{4,7}} -> {{1,8},{2},{7},{4},{3},{}} (or {{1,8},{2},{7},{4},{3},{},{}}) {{1,2,3},{4,5,6},{7,8,9}} -> {{1,2,3},{4,5,6},{7,8,9},{}} {{}} -> {{}} {{1,2,3},{1,2}} -> {{1,2},{3},{}} {{4,3,8},{1,2,9,3},{14,7,8,5},{6,11,3,8},{10},{9,4,3,7,10}} -> {{6,11},{10},{4},{3},{8},{5,14},{1,2},{9},{7},{}} {{2,3,4,7},{},{1,3,7,5,6},{2,3,7,5},{7,2,4,3,6},{1,4,5}} -> {{},{4},{2},{7,3},{1},{6},{5}} …

2
解释基普尔!
介绍 Kipple是Rune Berg于2003年3月发明的基于堆栈的深奥编程语言。 Kipple有27个堆栈,4个运算符和一个控制结构。 堆栈 堆栈被命名为a- z并包含32位带符号整数。还有一个特殊的堆栈,@使输出数字更加方便。当将数字压入时@,实际上将压入该数字的ASCII值。(例如,如果您将12推到@,它将推49,然后推50。@) i在执行程序之前,将输入压入输入堆栈。解释器将i在执行之前要求存储值。执行完成后,输出堆栈上的所有内容o都会弹出以ASCII字符形式输出。由于这是Kipple唯一的IO机制,因此无法与Kipple程序进行交互。 经营者 操作数可以是堆栈标识符或带符号的32位整数。 推送:>或< 语法:Operand>StackIndentifier或StackIndentifier<Operand Push运算符将操作数向左移并将其推入指定的堆栈。例如,12>a将值12推入stack a。a>b将从堆栈中弹出最高值a并将其推入堆栈b。弹出空堆栈总是返回0 a<b相当于b>a。a<b>c从弹出最高值,b并同时推入c和a。 加: + 句法: StackIndentifier+Operand Add运算符将堆栈上最顶层项目和操作数之和压入堆栈。如果操作数是堆栈,则从中弹出值。例如,如果堆栈的最高值为a1,a+2则将3压入堆栈。如果a为空,a+2则将2推入。如果堆叠的最值a和b是1和2,然后a+b将从栈中弹出的值2 b和3推入堆栈a。 减去: - 句法: StackIndentifier-Operand 减法运算符的工作方式与加法运算符完全相同,只是它减去而不是加法。 明确: ? 句法: StackIndentifier? 如果最上面的项目为0,则Clear运算符将清空堆栈。 解释器将忽略操作符旁边不存在的所有内容,因此以下程序将起作用:a+2 this will be ignored c<i。但是,添加注释的正确方法是使用#字符。#执行前,a 和行尾字符之间的所有内容都将被删除。ASCII字符#10在Kipple中定义为行尾。 操作数可以由两个运算符共享,例如a>b c>b c?可以写为a>b<c?。 该程序1>a<2 a+a将导致a包含值[1 4](从下到上),而不是[1 3]。对于-操作员也是如此。 控制结构 Kipple中只有一种控制结构:循环。 句法: (StackIndentifier code …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

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.