Questions tagged «combinatorics»

对于涉及组合学的挑战。

30
生成帕斯卡三角形
Pascal的三角形是从第一行的1开始生成的。在随后的行上,该数字由在其左右上方正上方的两个数字之和确定。 为了演示,这是Pascal三角形的前5行: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 挑战 给定输入n(但是,使用您选择的语言提供的最方便),请生成Pascal三角形的前n行。您可以假设n是一个介于1和25之间的整数(包括1和25)。每行之间必须有一个换行符,并且每个数字之间必须有一个空格,但是除此之外,您可以随意设置其格式。 这是代码高尔夫球,因此最短的解决方案是成功的。 示例I / O > 1 1 > 9 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 …

9
“排序”算法
有一种“排序算法”,有时也称为Stalin排序,在该算法中,为了对列表进行排序,您只需从列表中删除元素,直到其按升序进行排序即可。例如清单 [1, 2, 4, 5, 3, 6, 6] 当使用斯大林排序进行“排序”时 [1, 2, 4, 5, 6, 6] 这三个被删除,因为它故障。 现在显然有许多方法可以删除元素以对列表进行排序。例如,任何少于两个元素的列表都必须进行排序,因此只要盲目地删除足够的元素,我们就可以对列表进行排序。既然是这种情况,我们只在乎斯大林排序可能的最长结果。 您的任务将是获取一个正整数列表,并输出可以通过从原始列表中删除元素而得出的最长排序(递增)列表的长度。那就是找到最长排序的(可能是非连续的)子列表的长度。 排序的列表可以连续多次具有相同的元素。除非程序本身为空,否则不需要支持空列表。 计分 您的答案将根据其可能的最长斯大林排序长度进行评分。程序将被解释为字节序列而不是字符序列,并且它们的顺序将是通过将字节解释为数字而产生的自然顺序。分数越低越好。 这不是代码高尔夫 这是一个简洁的工具,可帮助您对答案进行评分。 测试用例 [1, 2, 4, 5, 3, 6, 6] -> 6 [19, 2] -> 1 [3, 3, 4, 3] -> 3 [10] -> 1 [1, 2, 4, 9] …

24
这是Loeschian号码吗?
正整数k是Loeschian数,如果 k可以表示i*i + j*j + i*j为i,j整数。 例如,第一正Loeschian号码为:1(i=1,j=0); 3(i=j=1); 4(i=2,j=0); 7(i=2,j=1); 9(i=-3,j=3); ...注意i,j对于给定k的不是唯一的。例如,9也可以与产生的i=3,j=0。 这些数字的其他等效特征是: k可以表示i*i + j*j + i*j为i,j非负整数。(对于每对整数i,j都有一对给出相同值的非负整数k) 有一组k连续的六边形在六边形网格上形成网格化(请参见k = 4和的插图k = 7)。(由于这个属性,这些数字可在移动蜂窝通信网络中找到应用。) 在序列的OEIS页面中查看更多特征。 挑战 给定一个正整数,如果它是Loeschian数,则输出真实结果,否则,则输出虚假结果。 程序或函数应处理(例如不到一分钟)最多达1000或数据类型限制的输入。 代码高尔夫。最短的胜利。 测试用例 以下数字应输出真实结果: 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 以下数字应输出虚假结果: 2, 5, 10, 42, 101, 102, 128, 150, 501, …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

29
它是前缀代码吗?
在信息论中,“前缀代码”是一个字典,其中所有键都不是另一个的前缀。换句话说,这意味着没有一个字符串以其他任何字符串开头。 例如,{"9", "55"}是前缀代码,但{"5", "9", "55"}不是。 这样做的最大优点是,可以将编码的文本记下来,并且它们之间没有分隔符,并且仍然可以唯一地解密。这在诸如Huffman编码之类的压缩算法中得到了体现,该算法始终会生成最佳的前缀代码。 您的任务很简单:给定一个字符串列表,确定它是否是有效的前缀代码。 您的输入: 将是任何合理格式的字符串列表。 仅包含可打印的ASCII字符串。 将不包含任何空字符串。 您的输出将是一个true / falsey值:如果是有效的前缀代码,则为True,否则为falsey。 这是一些真实的测试用例: ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] 以下是一些错误的测试案例: ["4", "42"] …

23
蛮力配电盘
前几天,我们的团队去了一个逃生室。难题之一是由六个机械开关组成的板,您必须找到打开和关闭的正确组合才能解锁盒子,如下所示: -v-v-v- -v-v-v- 作为开发人员,我们认为尝试2 ^ 6 = 64个组合中的每个组合要比实际解决难题更有效。因此,我们分配了一个可怜的家伙进行一些二进制计数: -v-v-v- -v-v-v- -v-v-v- -v-v-^- -v-v-v- -v-^-v- -v-v-v- -v-^-^- 等等。 挑战 编写一个程序,给定所有开关都按上述格式设置为关闭的字符串,从而以任意顺序生成打开和关闭的所有组合。 您可以编写完整的程序或函数。因此,您的程序可以通过stdin,文件或单个字符串参数接收输入,然后返回或打印输出。如果返回,则输出可能在列表/数组/等中。而不是单个字符串。如果输出为单个字符串,则板子之间应使用换行符分隔(允许使用尾随换行符)。 输入字符串将与正则表达式匹配,r'((-v)+-)(\n(-v)+-)*'并代表一块板,所有开关均关闭。这意味着无零情况,并且开关左对齐。每行可能没有相同数量的开关。 每个输出板应具有与输入完全相同的格式,除了v可以根据需要用^代替。输出板可以用任意数量的换行符分隔。 由于运行时间自然是开关数量的O(2 ^ n),因此您的代码将不会在任何排列的10个以上的开关上进行测试。 这是代码高尔夫球,因此以字节数为单位的最短代码获胜。 样本输入和输出 输入: -v- 可能的输出: -v- -^- 输入: -v- -v- 可能的输出: -^- -^- -^- -v- -v- -^- -v- -v- 由于要为更大数量的开关检查答案非常繁琐,因此这里有一个Python脚本作为健全性检查工具。(不幸的是,我提供了一个当前注释掉的代码段,以在给定的输入文件中生成预期的输出,以备您需要更多的测试用例。)将输入字符串放在名为“ input”的文件中,并将换行符分隔的输出(对不起,没有列表格式)放在同一目录中的名为“ output”的文件中,然后运行python3 sanitycheck.py。

6
井字游戏,只有十字架
介绍 每个人都知道游戏井字游戏,但是在这个挑战中,我们将介绍一些小技巧。我们将只使用十字架。第一个连续放置三个十字架的人输了。一个有趣的事实是,有人输掉前的最大十字架数等于6: X X - X - X - X X 这意味着对于3 x 3的面板,最大数量为6。因此对于N = 3,我们需要输出6。 另一个示例,对于N = 4或4 x 4板: X X - X X X - X - - - - X X - X 这是一个最佳解决方案,您可以看到最大的十字架数量等于9。12 x 12板的最佳解决方案是: X - X - X - X X - X …

30
2的幂和
挑战 给定一个整数输入x其中1 <= x <= 255,返回时总结给出了两种力量的结果x。 例子 给定输入: 86 您的程序应输出: 64 16 4 2 输入: 240 输出: 128 64 32 16 输入: 1 输出: 1 输入: 64 输出: 64 如果总和中没有确定的2的幂,则输出可能包含零。 例如,输入65可以输出0 64 0 0 0 0 0 1。 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

7
最长的多米诺骨牌链
挑战说明 多米诺骨牌(Dominos)是一款带有两个值的图块-左边是一个值,右边是一个值,例如[2|4]或[4|5]。如果两个图块包含公共值,则可以将它们连接在一起。上面的两个图块可以像这样连接: [2|4][4|5] 我们将n连接的瓦片序列称为长度为n 的链。当然,地砖可以旋转,所以瓦片[1|2],[1|3]并且[5|3]可被重新安排到一个链[2|1][1|3][3|5]长度为3的。 给定整数对列表,请确定可以使用这些图块形成的最长链的长度。如果列表为空,则正确答案为0(请注意,您始终可以1从非空的图块列表中形成一个长度链)。 样本输入/输出 [(0, -1), (1, -1), (0, 3), (3, 0), (3, 1), (-2, -1), (0, -1), (2, -2), (-1, 2), (3, -3)] -> 10 ([-1|0][0|-1][-1|2][2|-2][-2|-1][-1|1][1|3][3|0][0|3][3|-3]) [(17, -7), (4, -9), (12, -3), (-17, -17), (14, -10), (-6, 17), (-16, 5), (-3, -16), (-16, 19), (12, -8)] …

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

26
数字总和斐波那契
我们都熟悉斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 但是,相反,f(n) = f(n-1) + f(n-2)我们将对前2个条目进行数字求和。 序列应仍以开头0, 1,之后差异会迅速显现。此列表的索引为0,也可以使用索引为1的状态。 f(0) = 0 f(1) = 1 f(2) = 1 # 0 + 1 f(3) = 2 # 1 + 1 f(4) …

30
ASCII三角形
您的任务是编写一个打印ASCII三角形的程序或函数。他们看起来像这样: |\ | \ | \ ---- 您的程序将采用单个数字输入n,并带有约束0 <= n <= 1000。上面的三角形的值为n=3。 ASCII三角形将具有n反斜杠(\)和竖线(|),n+1线和破折号(-),并且每行除最终行外还将具有等于行号(从0开始,即第一行为行0)的空格。 。 例子: 输入: 4 输出: |\ | \ | \ | \ ----- 输入: 0 输出: 在此测试用例中,输出必须为空。没有空格。 输入: 1 输出: |\ -- 输入和输出必须完全是我指定的方式。 这是代码高尔夫球,因此请争取尽可能短的代码!
30 code-golf  ascii-art  code-golf  rubiks-cube  code-golf  path-finding  maze  regular-expression  code-golf  math  rational-numbers  code-golf  kolmogorov-complexity  graphical-output  code-golf  tips  code-golf  string  permutations  code-golf  sorting  base-conversion  binary  code-golf  tips  basic  code-golf  number  number-theory  fibonacci  code-golf  date  code-golf  restricted-source  quine  file-system  code-golf  code-golf  math  code-golf  ascii-art  code-golf  math  primes  code-golf  code-golf  math  matrix  code-golf  string  math  logic  factorial  code-golf  palindrome  code-golf  quine  stateful  code-golf  interactive  code-golf  board-game  code-golf  math  arithmetic  code-golf  string  code-golf  math  matrix  code-golf  math  abstract-algebra  polynomials  code-golf  date  code-golf  string  array-manipulation  sorting  code-golf  game  code-golf  string  code-golf  ascii-art  decision-problem  code-golf  number  sequence  code-golf  code-golf  code-golf  sequence  fibonacci  code-golf  math  geometry  random  code-golf  code-golf  math  decision-problem  fractal  rational-numbers  code-golf  number  number-theory  code-golf  combinatorics  permutations  card-games  code-golf  math  sequence  array-manipulation  fibonacci  code-golf  sequence  decision-problem  graph-theory  code-golf  ascii-art  parsing  lisp  code-golf  string  math  natural-language  logic  code-golf  math  logic  code-golf  string  alphabet  code-golf  string  code-golf  string 

17
莫兹金数
第n个Motzkin数是从(0,0)到(n,0)的路径数,其中每个步骤的形式为(1,-1),(1,0)或(1,1),以及路径永远不会低于y = 0。 这是上述链接中n = 1、2、3、4的这些路径的说明: 所需序列为OEIS A001006。OEIS具有该序列的其他一些特征。 您将得到一个正整数n作为输入。您应该输出第n个Motzkin编号。 以下是莫兹金数1到10: 1, 2, 4, 9, 21, 51, 127, 323, 835, 2188 允许所有标准输入和输出方法。有标准漏洞。 这是代码高尔夫。最少的字节数获胜。

7
哪些“朋友”角色确实是最好的朋友?
美国情景喜剧之友的六个主要演员均同意,在整个系列的整个过程中(至少在第二季之后),他们将获得相同的薪水。但这并不意味着他们都具有相同的播放时间,也不意味着它们在屏幕上彼此交互的时间相同。 在这个挑战中,您将编写一个程序来帮助确定哪些Friends朋友确实是最好的。 设定 考虑观看“ 朋友”的情节或场景,并准确记录每次相机拍摄期间谁在屏幕上显示多长时间。 我们将缩写每个字符的名称: C是钱德勒的 J是给乔伊的 M是给莫妮卡的 P是给菲比的 R是给瑞秋的 S是给罗斯的 然后,对于每个相机镜头(或角色每次进入/退出镜头),我们都会列出屏幕上的人物。例如: 504 CRS 200 J 345 MP 980 2000 CJMPRS 这就是说: 在504毫秒内,钱德勒,雷切尔和罗斯出现在屏幕上。 然后持续200毫秒,乔伊就呆了。 然后持续345毫秒,莫妮卡和菲比都在。 然后持续980毫秒,屏幕上没有显示6个主要角色。 然后两秒钟,所有的人都。 (这不是来自实际剪辑,而是由我组成的。) 请注意,以下内容是等效的: 504 CRS 1 J 199 J 345 MP 980 2000 CJMPRS 为了分析哪些字符组合具有最大的屏幕显示时间,我们查看了6个字符的所有64个可能子集,并总计了它们的屏幕显示时间。如果在拍摄镜头期间某个子集中的每个人都出现在屏幕上,即使其中的字符比该子集中的人物更多,该镜头拍摄的时间也会添加到该子集的总屏幕时间中。 空子集有一个例外-仅计算不包含6个主要角色的场景。 因此,以上示例的分析将是: 980 2504 C 2200 J 2345 …

28
计算超级对数
这应该是一个简单的挑战。 给定一个数字n >= 0,输出的超级对数(或log *,log-star或迭代对数,它们是等效的,因为n对于该挑战永远不会为负。)n。 这是四官能的两个反函数之一。另一个是超级根,这是一个相关的问题。 例子 Input Output 0 0 1 0 2 1 3 2 4 2 ... 15 2 16 3 ... 3814279 3 3814280 4 规则 您可能不需要支持小数。 您需要至少支持输入3814280 = ceiling(e^e^e)。 您可能不对值进行硬编码3814280。(理论上,您的程序必须支持更高的数字。)我希望实现一种算法。 最短的代码胜出。 相关OEIS
29 code-golf  math  code-golf  array-manipulation  sorting  code-golf  math  arithmetic  matrix  code-golf  string  kolmogorov-complexity  code-golf  string  code-golf  math  sequence  arithmetic  recursion  code-golf  math  ascii-art  sequence  code-golf  math  array-manipulation  code-golf  code-golf  kolmogorov-complexity  code-golf  string  code-golf  string  decision-problem  code-golf  array-manipulation  tips  javascript  json  code-golf  math  string  number  number-theory  code-golf  math  sequence  fibonacci  number  arithmetic  fastest-code  integer  code-golf  math  sequence  code-golf  string  file-system  tips  golfscript  code-golf  string  code-golf  string  natural-language  code-golf  string  file-system  code-golf  math  array-manipulation  code-challenge  image-processing  compression  code-golf  math  number  sequence  code-golf  math  combinatorics  regular-expression  code-golf  sequence  pi  code-golf  ascii-art  code-golf  string  array-manipulation  sorting  code-golf  string  graph-theory  code-golf  string  code-golf  string  ascii-art  code-challenge  compression  code-golf  code-golf  math  sequence  number-theory  code-golf  maze  graph-theory  code-golf  math  sequence 

3
装满填料的盒子
您的任务是编写一个程序或函数,该程序或函数可以用质数填充给定的矩形。矩形的width和height将作为输入。输出必须是height由width数字和空格组成的字符串列表。长度为2或更大的每个水平(从左到右)和垂直(从上到下)数字序列(由空格或矩形边框分隔)必须是质数。每个素数只能使用一次。不允许前导零。在输出中尾随新行是可选的。 例: With input (5, 3) a valid output would be: 11 13 7 0 173 which scores 11, 13, 173, 17, 103 for a total of 5 points. 得分: 得分的矩形大小为80, 60。矩形中长度为2或更大的每个水平或垂直素数得分为1分。得分最高的答案将获胜。如果出现平局,最早的答案将获胜。 规则: 禁止出现标准漏洞。 您的程序不能为该80, 60大小设计。如果我怀疑此大小的答案是最佳的,我保留将矩形大小更改为的权利100, 100。 使用的素数必须是实数素数(不是概率素数或伪素数)。您的程序可能会在运行时计算或检查数字,或者对其进行硬编码。查找素数的方法不是挑战的重要部分。 您的答案应包括输出文本和代码。如果您的程序太大,则可能只包含一些核心算法代码,并附带一些解释。 编辑:阐明需要真正的素数。增加了最大矩形尺寸。 编辑2:阐明了需要发布的代码。

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.