Questions tagged «combinatorics»

对于涉及组合学的挑战。

4
计算将球放入垃圾箱的方式数
在此任务中,您将获得奇数数量的白球和相同数量的黑球。任务是计算将球放入垃圾箱的所有方法,以使每个垃圾箱中每种颜色的数量均为奇数。 例如,假设我们有3个白球。不同的方式是: (wwwbbb) (wb)(wb)(wb) 两种不同的可能性。 如果我们有5个白球,则不同的方法是: (wwwwwbbbbb) (wwwbbb)(wb)(wb) (wwwb)(wbbb)(wb) (wb)(wb)(wb)(wb)(wb) 您可以按照自己喜欢的任何方式获取输入,它是一个整数。输出只是一个整数。 您的代码必须足够快,这样您才能看到完整的11个白球。 您可以使用任何喜欢的语言或库。

4
现在我们正在考虑n维!
的问题:给定一个数n≥2,多少不同成对的点上的n维n x n x n x n x n x n ... x n点阵,其中坐标范围从0到n - 1,是一个距离至少 n分开?成对的{(2,1,3,1), (3,2,1,3)}和{(3,2,1,3), (2,1,3,1)}不会被视为彼此不同,因为它们由相同的两个相反点组成。请注意,对的总数增长非常迅速。总对数去6,351,32 640,4 881 250,1 088 367 840,等。 测试用例: 2 -> 0 (all pairs are at most a distance of sqrt(2) < 2 apart) 3 -> 28 (They must either be (2,2,1) or …

7
打假素!
简介/背景 在最近一次关于加密聊天的讨论中,我被挑战去讨论/帮助Fermat素数测试和Carmichael数字。该测试基于a^(p-1) mod p==1始终适用于素数p而不适用于复合材料的前提。现在,carmichael号码本质上是Fermat考验的最大敌人:您必须选择一个号码,a以使其不与素数p相抵a^(p-1) mod p!=1。现在,如果a不是互质,则基本上可以发现一个非平凡的因子p众所周知,保理可能相当困难。特别是在所有因素都足够大的情况下。您现在可能已经意识到,为什么在实践中不经常使用Fermat测试(还有更好的算法),这是因为作为防御者(在安全性方面)您需要为某些数字做与攻击者(即数量)。 因此,既然我们知道为什么这些数字有些引人入胜,我们将以最短的方式生成它们,因此只要需要,我们就可以记住生成的代码! Carmichael编号在OEIS上也称为A002997。已经 存在一个相关的挑战,但是这里的条目没有竞争力,因为它们是针对速度而非大小进行了优化的。同样的论点也适用于反方向,此处的输入可能会在速度上做出取舍,而有利于大小。 规格 输入项 这是一个标准 序列挑战,因此您将正整数或非负整数n作为输入。n可以根据需要选择0或1的索引(请指出)。 输出量 根据需要,您的输出将是n-th carmichael数或第一个ncarmichael数(请指出)。 规格 一个整数x是卡迈克尔数当且仅当x是复合材料和所有的整数y与gcd(x,y)=1,它认为y^(x-1) mod x==1。 谁赢? 这是 代码高尔夫球,因此以字节为单位的最短代码获胜!适用标准IO和漏洞规则。 测试用例 前几个carmichael号码是: 561,1105,1729,2465,2821,6601,8911,10585,15841, 29341,41041,46657,52633,62745,63973,75361,101101, 115921,126217,162401,172081,188461,252601,278545, 294409,314821,334153,340561,399001,410041,449065, 488881,512461
9 code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

13
扩大比较链
与大多数语言不同,Python a<b<c会像在数学中一样进行评估,实际上是比较三个数字,而不是将布尔值a<b与进行比较c。用C(以及许多其他语言)编写此代码的正确方法是a<b && b<c。 在这个挑战中,您的任务是将这样任意长度的比较链从Python /直观表示扩展到如何用其他语言编写。 技术指标 您的程序必须要处理运算符:==, !=, <, >, <=, >=。 输入将具有仅使用整数的比较链。 不用担心一路比较的真实性,这纯粹是语法/语法上的挑战。 输入将没有任何空格,以防止答案因分割空格而使解析变得琐碎。 但是,您的输出可能只有一个空格,要么仅包含&&,要么包含比较运算符和&&,或者两者都不包含,但是要保持一致。 测试用例 Input Output --------------------------------------------------------------- 3<4<5 3<4 && 4<5 3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9 3<5==6<19 3<5 && 5==6 && 6<19 10>=5<7!=20 10>=5 && 5<7 && 7!=20 15==15==15==15==15 …
9 code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

30
给定int输入n,输出n * reversed(n)
给定一个整数n,打印输出n * reversed(n) reversed(n)是当您reverse的数字为时得到的数字n。 reverse(512) = 215 reverse(1) = 1 reverse(101) = 101 >>>>>>>> func(5) = 5*5 = 25 func(12) = 12*21 = 252 func(11) = 11*11 = 121 func(659) = 659*956 = 630004 最短的代码胜出! 排行榜 显示代码段 var QUESTION_ID=144816,OVERRIDE_USER=71625;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var …
9 code-golf  math  arithmetic  code-golf  math  integer  code-golf  arithmetic  integer  code-golf  sequence  base-conversion  palindrome  code-golf  math  primes  integer  code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

4
最大不同子字符串数
描述 给定一个长度n和一个字母大小k>0,您的程序必须确定带有最大唯一子字符串数的那些参数的字符串数。在这种情况下k=2,将生成OEIS A134457。 例 例如,2210具有子 ,2,22,221,2210,2,21,210,1,10,和0,总共11。然而,2出现了两次,所以它只有10个独特的子串。 对于包含3个不同符号的长度为4的字符串,此数目尽可能多,但它与其他35个字符串并列0012,总共36个绑定字符串,包括2101,和0121。因此,对于n=4和k=3,您的程序应输出36。 测试用例 n k output 0 5 1 1 3 3 5 1 1 9 2 40 2 3 6 5 5 120

5
计算汉明距离序列的数量
等长的两个字符串之间的汉明距离是相应符号不同的位置数。 让P是长度为二进制串n和T是长度为二进制字符串2n-1。我们可以按从左到右的顺序计算到每个长度子字符串n之间的汉明距离,并将它们放入数组(或列表)中。PnT 汉明距离序列示例 让P = 101和T = 01100。从这对中得到的汉明距离的顺序是2,2,1。 任务 为了增加n起始位置n=1,请考虑所有可能P的长度对n和T长度对的二进制字符串对2n-1。有2**(n+2n-1)这样的对,因此有许多汉明距离序列。但是,这些序列中的许多序列将是相同的。任务是找到每个有多少不同n。 您的代码应为的每个值输出一个数字n。 得分了 您的分数是n您的代码在5分钟内到达我的计算机的最高分数。时间是用于总运行时间,而不是仅用于该时间n。 谁赢 得分最高的人获胜。如果两个或两个以上的人最终获得相同的分数,那么这是第一个获胜的答案。 示例答案 对于n从1到8最佳答案2, 9, 48, 297, 2040, 15425, 125232, 1070553。 语言和图书馆 您可以使用任何喜欢的语言和库。在可行的情况下,能够运行您的代码将是一件好事,因此,请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 我的机器计时将在我的64位机器上运行。这是带有8GB RAM,AMD FX-8350八核处理器和Radeon HD 4250的标准ubuntu安装。这也意味着我需要能够运行您的代码。 领先的答案 11在C ++通过feersum。25秒 C ++ 11,作者:Andrew Epstein。176秒。 10中的Javascript尼尔。54秒 nimi 在Haskell中的9。4分59秒。 8中的Javascript通过fənɛtɪk。10秒

1
具有n个交叉点的主要结数
一个主要的结是: 一个非平凡的结,不能写成两个非平凡的结的总和。 结和的说明:将两个结相邻放置, ...然后在它们之间绘制两条线,到每一侧的同一条线上,并删除刚绘制的线之间的部分。两个结的这种组合将形成一个新的非原始结。 以下是所有具有7个以下交叉的主要结(“未结不是主要结”): 您需要输出给定数量的交叉的唯一素结数量。 1 0 2 0 3 1 4 1 5 2 6 3 7 7 8 21 9 49 10 165 11 552 12 2176 13 9988 14 46972 15 253293 16 1388705 我不认为输入大于会知道这些值16,但是如果给出这样的输入,则您的代码需要在足够的时间内找到正确的结果。 OEIS-A002863

4
多米诺瓷砖的数量
编写一个给定正n和m的程序或函数,以计算可以放入n × m矩形中的有效不同多米诺骨牌拼贴的数量。这是序列A099390在整数序列的在线百科全书。您可以采用任何合理的格式将输入作为函数参数,CLA或stdin接受。您必须返回或打印单个整数作为输出。 每个平铺块都不得留有任何间隙,并且会计算每个不同的平铺块,包括旋转,反射等。例如,2x3的平铺块为: |-- ||| --| |-- ||| --| 输入/输出示例: 1, 9 -> 0 2, 2 -> 2 2, 3 -> 3 4, 4 -> 36 4, 6 -> 281 6, 6 -> 6728 7, 10 -> 53175517 从理论上讲,您的程序应可用于任何n和m,但是如果您的程序需要太多内存或数据类型溢出,则可以使用。您的程序必须能正确地工作任何n,但是m <= 8。 以字节为单位的最短代码获胜。

1
替代变量的唯一输出数
给定一组这样的公式: bacb bcab cbba abbc 给出一种算法,该算法可以找到在每个公式中用每个变量替换“ 0”或“ 1”时可获得的唯一结果的数量。 有(k!)^2公式,每个公式都有2k-1变量和k^2术语。用表示你的渐近性k。 最快的算法获胜。如果出现平局,则使用渐近内存使用率较低的解决方案为准。如果那仍然是平局,则第一帖获胜。 对于上述示例,通过替换变量可以获得以下结果: 1110, 0110, 1001, 0100, 1000, 0000, 0010, 1101, 1111, 0001, 1011, 0111 因此正确的答案是12。除其他外,1010不能使用上述公式得出。 我做了三个试验的情况下,与相应的解决方案,230,12076和1446672。

4
精确计算概率
此任务是关于编写代码以准确计算概率。输出应该是精确的概率,以其最大简化形式的分数表示。那是它永远不应该输出4/8,而应该1/2。 对于某个正整数n,请考虑一个长度为1s和-1s的均匀随机字符串,n并将其称为A。现在将A其串联为第一个值。就是说A[1] = A[n+1]从1 A开始的索引 现在具有length n+1。现在还考虑长度的第二随机串n,其第一n值是-1,0或1的概率是1 / 4,1 / 2,1/4每并调用它B. 例如,考虑n=3。对于可能的值A,并B可能会A = [-1,1,1,-1]和B=[0,1,-1]。在这种情况下,两个内积是0和2。 现在考虑的内积A[1,...,n]和B和的内积A[2,...,n+1]和B。 您的代码必须输出两个内积均为零的概率。 对于n=1这种可能性显然是1/2。 我不介意n代码中的指定方式,但是如何更改它应该非常简单明了。 语言和图书馆 您可以使用任何喜欢的语言和库。我想运行您的代码,因此请尽可能提供有关如何在Linux中运行/编译代码的完整说明。

2
计算最大栅栏布置
背景 我要建篱笆。为此,我收集了一堆电线杆,并将其固定在地面上。我还收集了很多木板,将它们钉在电线杆上,以制作实际的围栏。我在建造东西时往往会被带走,很可能我会一直把木板钉在电线杆上,直到没有更多的地方放它们了。我想让你列举出我最终可能会遇到的障碍。 输入项 您的输入是一个二维整数坐标列表,以任何方便的格式表示极点的位置。您可以假定它不包含任何重复项,但是不能假设有关其顺序的任何信息。 这些板由两极之间的直线表示,为简单起见,我们仅考虑水平和垂直板。如果两极之间没有其他极或板,则可以将它们连接在一起,这意味着两板不能互相交叉。如果不能在其中添加新的板,则极和板的布置是最大的(等效地,在任何两个水平或垂直对齐的极之间有一个极或一个板)。 输出量 您的输出是可以使用极点构造的最大排列数。 例 考虑输入清单 [(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] 从顶部看,杆的相应排列如下所示: o o o o o o o o 可以使用这些极点构造三种最大的排列方式: o o o o-o o|o o-o o----o o||| o o| | o o-o o|o o-o o o o 因此正确的输出是3。 规则 您可以编写函数或完整程序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [] -> 1 [(0,0),(1,1),(2,2)] -> 1 [(0,0),(1,0),(2,0)] -> …

4
策展人的困境
介绍 您是一家美术馆策展人的朋友,他最近很高兴能从四位艺术家那里获得现代艺术(其中有些人会为策展人提供零艺术品,年轻的流氓)。由于这是现代艺术,因此任何给定艺术家的作品都看起来完全一样。您的朋友想使用计算机来帮助确定这些零件的放置顺序。 课程要求 您的程序必须使用五个整数(传递给函数或通过stdin输入(或以其他方式输入))。前四幅是四位艺术家各自提供的绘画数量。最后一个值是排列索引i(从1开始计数,而不是0)。策展人希望i按字典的顺序查看绘画的排列。 您的程序必须以任何合理的格式输出此排列:例如abbccd或[0 1 1 2 2 3]。总输入少于十幅画的运行时间必须少于一个小时(希望这不会有问题)。 不允许使用任何内置函数来计算排列 例子 输入:0 1 2 0 2 假设我们有艺术家B的一幅画和艺术家C的两幅画(它们看起来都一样),则按字典顺序排列是: ['bcc',' cbc ','ccb'] 高亮显示的排列将是正确的输出,因为它是按字典顺序排列的第二个。 输入:1 2 0 1 5 [“ abbd”,“ abdb”,“ adbb”,“ babd”,“ badb ”,“ bbad”,“ bbda”,“ bdab”,“ bdba”,“ dabb”,“ dbab”,“ dbba”] 测试中 这是一些应该正确的测试。 1 2 4 1 5 - ABBDCCCC …

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 …

21
重复生成有序组合
给定一串不同的字符和一个数字n,使用这些字符生成长度为1到n的所有重复的有序组合。 定义它的另一种方法是将给定字符视为字符数基数(基数)中的“自定义”数字,然后程序应在该基数中生成具有1到n位数字的所有“数字”。也包括“零”。 组合应按其长度排序(首先为1个字符,然后为2个字符,依此类推),但除此之外,它们可以按任何顺序排列。您可以选择最方便的方式来处理输入和输出。最短的代码胜出。 例子: ab, 3-> a,b,aa,ab,ba,bb,aaa,aab,aba,baa,abb,bab,bba,bbb 0123456789, 2->0,1,2,3,4,5,6,7,8,9,00,01,...,09,10,11,...,99

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.