Questions tagged «combinatorics»

对于涉及组合学的挑战。

30
从较小的“ H”创建一个“ H”
挑战 创建一个函数或程序,当给定整数时size,该函数或程序将执行以下操作: 如果size等于1,则输出 H H HHH H H 如果size大于1,则输出 X X XXX X X X程序/功能的输出在哪里size - 1 (只要您愿意,0只要您在答案中指定,就可以使基本情况与相对应) 可以使用以下任何一种输出格式,以您更方便的方式: 所需结构的字符串,其中任意两个不同的字符分别对应于H和space 具有所需结构的二维数组,其中任意两个不同的值分别对应于H和space 字符串的数组/列表,每个字符串中有一行输出,并且与H和对应的任意两个不同的值space 只要每行上有恒定数量的前导空格,就可以使用前导空格。两个不同的输出字符可以取决于您选择的任何内容,只要它们不同即可。 指定代码返回的输出格式。 测试用例 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH ...
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

28
计算Phi(非Pi)
不,我不是说ϕ = 1.618...和π = 3.14159...。我的意思是功能。 φ(x)的是一个整数小于或等于的数量x互质到x。 π(x)是小于或等于的素数x。 假设“非pi”为π̅(x),并将其定义为小于或等于的复合数x。 任务 给定一个严格的正整数x,计算φ(π̅(x))。得分以字节为单位。 例子 每行包括输入(从1到100,包括1和100),以及由空格分隔的相应输出。 1 0 2 0 3 0 4 1 5 1 6 1 7 1 8 2 9 2 10 4 11 4 12 2 13 2 14 6 15 4 16 6 17 6 18 4 19 4 ...
73 code-golf  sequence  primes  number-theory  code-golf  decision-problem  code-golf  date  code-golf  typography  code-golf  math  number  multiple-holes  code-golf  quine  code-golf  string  syntax  code-golf  math  primes  rational-numbers  code-golf  graphical-output  image-processing  code-golf  kolmogorov-complexity  music  audio  code-golf  string  code-golf  math  geometry  code-golf  math  sequence  combinatorics  code-golf  game  grid  board-game  code-golf  restricted-source  array-manipulation  source-layout  code-golf  base-conversion  binary  code-golf  math  physics  code-golf  math  number  date  expression-building  code-golf  array-manipulation  graph-theory  decision-problem  popularity-contest  error-correction  code-golf  kolmogorov-complexity  geometry  grid  code-challenge  arithmetic  combinatorics  set-partitions  code-golf  kolmogorov-complexity  sequence  fibonacci  code-golf  restricted-source  pristine-programming  code-golf  code-golf  string  kolmogorov-complexity  code-golf  arithmetic  code-golf  string  parsing  code-golf  code-golf  sorting  counting  permutations  3d  code-golf  code-golf  ascii-art  music  code-golf  string  code-golf  string  ascii-art  code-golf  string  code-golf  quine  polyglot  code-golf  math  string  code-golf  internet 

10
小钱德勒很伤心。画他的云,使他振作起来
小钱德勒很伤心。画他的云使他振作起来。 注意:画云实际上不会使他振作起来。 圆可以定义为三元组(x,y,r),其中x是圆在笛卡尔平面上的x位置,是圆在笛卡尔平面y上的y位置以及圆r的半径。x并y可能是负面的。r永远是积极的。输入是以空格分隔的三元组形式的圆的列表。例如: 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 的3,1,1意思是“在与中心点的圆3,1与1个半径。3,2,1.5是指”在与中心点的圆3,2用1.5半径。 如果我们在图形上绘制输入的所有这些圆,则看起来像这样(我仅出于清晰起见添加了网格线和标签;它们不是必需的): 注意所有的圆是如何凝聚的。也就是说,它们全部重叠在一起,从而形成一个大的组,而没有其他的小圈子。输入保证是内聚的。 假设现在绘制一条绕这些圆形成的“边界”行进的线,而没有其他任何线。就像绘制所有圆组成的轮廓的边界一样。生成的云看起来像这样: 因此,仅通过在输入中绘制形成边界的圆弧来形成单一形状即可形成此云。换句话说,仅通过绘制不在另一个圆内的圆弧来形成云。您的程序将以上述形式接受输入,并输出显示结果云的图像。云的整体形状必须正确,但是比例,颜色,线条粗细以及在顶点处的外观取决于您。请注意,云必须是可见的,因此您不能拉出类似“此程序在白色背景上绘制白色云”,“此程序以无限小的比例绘制云”,“此程序以0绘制云”之类的内容。线宽”等。还请注意,边框的颜色必须与填充或背景的颜色不同。 另一个例子。输入: 1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7 输出: 如果云中存在“洞”,则也应绘制该洞。输入: 0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4 输出: 这是一条重要规则:您的程序必须仅绘制形成边框的线。这意味着您不能简单地完全绘制圆,然后用白色填充将圆绘制得稍小一些,因为该方法仍会绘制不形成边界的线,之后只会将其覆盖。该规则的目的是防止“绘制圆,然后用白色填充再次绘制圆”的实现或类似的方法。预计答案将在绘制之前实际计算出绘制对象的位置。 这是代码高尔夫球,因此最短的字符数获胜。

30
追加字符串长度
挑战: 给定s字符a- z,A- Z,0- 上的字符串9,将其长度附加s到其自身,将长度中的其他字符计为的总长度s。 输入: 只是任意长度的字符串(可以为空)。 输出: 相同的字符串,但其长度附加到末尾。代表长度的字符也应算作长度的一部分。如果要附加多个有效长度,请选择最小的长度(有关示例,请参见测试用例)。 测试用例: INPUT -> OUTPUT // Comment aaa -> aaa4 -> 1 // Empty string aaaaaaaa -> aaaaaaaa9 // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned above aaaaaaaaa -> aaaaaaaaa11 a1 -> a13 // Input ...
51 code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

8
确定硬币系统是否规范
该出纳的算法是在最小的硬币数量是工作得很好大多数货币体系进行改变的算法。但是,像大多数贪婪算法一样,它并非没有缺陷。如果建立的货币系统恰好正确(或错误),那么某些值会使收银员算法无法找到最佳找零。 请看以下示例: 我们有4¢,3¢和1¢硬币。我们想赚6美分。 出纳员算法将首先选择尽可能多的最大硬币(开始时为4美分),然后减去并重复。这将产生1个4¢硬币和2个1¢硬币,总共3个硬币。 不幸的是,对于该算法,有一种方法只能用两个硬币(两个3¢硬币)赚取6¢。 对于所有整数值,找零系统将被认为是标准的,而Cashier算法将找到最佳硬币数量。 任务 您的任务是将系统当作代表硬币值的整数的无序容器或已排序的有序容器,如果系统输入为标准值且为假,则输出真实值。 您的程序应适用于可以创造任何价值的所有系统。(即所有系统都将有1美分的硬币) 这是代码高尔夫最少字节获胜的代码。 测试用例 此列表绝不是详尽无遗的,您的程序应适用于所有有效输入 1, 3, 4 -> 0 1, 5, 10, 25 -> 1 1, 6, 10, 25 -> 0 1, 2, 3 -> 1 1, 8, 17, 30 -> 0 1, 3, 8, 12 -> 0 1, 2, 8, 13 ...

2
扩展OEIS:计算钻石平铺
我保证,这将是我关于diamong拼贴的最后一个挑战(不管怎么说,还是一段时间)。从好的方面来说,这一挑战与ASCII艺术没有任何关系,而且也不是编码竞赛,因此实际上是完全不同的。 提醒一下,每个六角形都可以用三个不同的菱形来命名: 一个有趣的问题是,对于给定的六边形尺寸,这些平铺中存在多少个。似乎已经对这些数字进行了相当彻底的研究,可以在OEIS A008793中找到它们。 但是,如果我们问到旋转和反射之前存在多少个平铺,问题就会变得棘手。例如,对于边长N = 2,存在以下20个拼接: ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ /\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\ /\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\ \/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/ \/_/_/ \/_/_/ \/_/_/ ...

30
有已知的
美国前国防部长唐纳德·拉姆斯菲尔德(Donald Rumsfeld)著名地推广了“已知的已知物”。在这里,我们将把他的言论提炼成四行节。 具体来说,输出以下文本: known knowns known unknowns unknown knowns unknown unknowns 大小写无关紧要(例如,Known unKnowns可以),可以使用单行尾的换行符,但不允许其他格式更改。这意味着单词之间有一个空格,行之间有LF(59字节)或CR/LF(62字节)。 规则 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

30
计算两个平方的和
给定一个非负数n,请输出表示n为两个整数平方的和的方式数n == a^2 + b^2(OEIS A004018)。请注意,a和b可以为正,负或零,并且它们的顺序很重要。最少的字节数获胜。 例如,n=25给出12因为25可以表示为 (5)^2 + (0)^2 (4)^2 + (3)^2 (3)^2 + (4)^2 (0)^2 + (5)^2 (-3)^2 + (4)^2 (-4)^2 + (3)^2 (-5)^2 + (0)^2 (-4)^2 + (-3)^2 (-3)^2 + (-4)^2 (0)^2 + (-5)^2 (3)^2 + (-4)^2 (4)^2 + (-3)^2 这是直到的值n=25。请注意,您的代码适用于n=0。 0 1 1 4 2 4 ...

19
我的馅饼被平分了吗?
编写一个包含正整数的非空列表的程序或函数。您可能会假设它是以合理方便的格式输入的,例如"1 2 3 4"或[1, 2, 3, 4]。 输入列表中的数字表示完整饼图的切片,其中每个切片的大小与其对应的数字成比例,并且所有切片均按给定的顺序排列在图表周围。 例如,饼图为1 2 3 4: 您的代码必须回答的问题是:饼图是否一分为二?也就是说,从圆的一侧到另一侧是否存在一条完美的直线,将其对称地一分为二? 你需要输出truthy值,如果有至少一个平分线和输出falsy如果有没有价值。 在该1 2 3 4示例中,之间有一个等分线4 1,2 3因此输出将是真实的。 但是对于输入而言1 2 3 4 5,没有平分线,因此输出将是虚假的: 其他例子 以其他方式排列数字可能会消除等分线。 例如2 1 3 4→虚假: 如果输入列表中只有一个数字,则饼图不会一分为二。 例如10→虚假: 可能有多个平分线。只要大于零,输出就是真实的。 例如6 6 12 12 12 11 1 12→真实:(这里有3个等分线) 即使平分在视觉上不明显,也可能存在。 例如1000000 1000001→虚假: 例如1000000 1000001 1→真实: (感谢nces.ed.gov生成饼图。) 测试用例 ...
43 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 

8
懒惰战舰安置
想象以下情况:您正在与朋友一起玩战舰,但决定作弊。您决定不放置任何船只,而不是在他拍摄您的船只过去后移动它。您告诉他所有他的投篮都是未命中的,直到不可能以这种方式放置飞船。 您必须编写一个函数或一个完整的程序,该函数或函数以某种方式接受3个参数:字段大小,舰船数量列表和射击列表。 战场 给定参数之一是电路板尺寸。战场是一个单元格的正方形,给定的参数只是该正方形的一侧。 例如,以下是大小为5的电路板。 字段上的坐标指定为2组分字符串:字母后跟数字。在某些特殊情况下,您可以依靠字母。 字母指定列,数字指定单元格的行(1索引)。例如,在上图中,突出显示的单元格由表示"D2"。 由于只有26个字母,因此该字段不能大于26x26。 轮船 船只是1个或更多街区的直线。船舶数量在列表中指定,其中第一个元素是1单元船的数量,第二个是2单元船的数量,依此类推。 例如,该列表[4,1,2,0,1]将创建以下舰队: 当放置在战场上时,舰船不能相交,甚至不能相互接触。甚至没有角落。但是,它们可以接触到场的边缘。 您可以在下面看到有效的船位示例: 您可以假定,对于给定的舰船,在给定尺寸的空板上始终存在一个放置位置。 输出量 如果存在这样的船只布置,则必须输出其中的任何一个。 该程序必须输出以换行符分隔的3种类型的ascii字符矩阵-一种表示空白单元格,一种表示飞船,另一种表示标记为“ missed”的单元格。不应输出其他字符。 例如, ZZ@Z \@@Z @\\Z \Z\\ (在此示例中,我定义@为空白单元格,\为“缺失”单元格并Z为装运件) 如果不存在此类放置,则程序/功能应返回而不输出任何内容。 输入值 如果您决定制作一个成熟的程序,则需要指定您如何输入列表,有些可以通过参数输入,有些可以通过stdin输入。 这是代码高尔夫球,最少的字符获胜。 可以在此处找到一个非高尔夫球优化解决方案的示例,使用 编译-std=c99,第一个参数是木板的尺寸,其他参数是船的尺寸。在stdin上提供了换行符分隔的镜头列表。例: ./a 4 1 1 1 <<< $'A2\nA4\nB3\nC3\nC4\D4'

26
制作平方字
挑战 您的任务是创建一个程序,该程序接受任何给定的字符串输入,并以平方格式输出输入。空字符串应返回一个空字符串。 例子 给定输入: golf 您的程序应输出: golf o l l o flog 输入: 123 输出: 123 2 2 321 输入: a 输出: a 输入: Hello, world! 输出(注意,和之间的空格-间隙不只是换行符): Hello, world! e d l l l r o o , w w , o o r l l l d e !dlrow ...

30
从babbab到zyzyz的每个词
您的任务是编写一个程序,该程序将输出具有以下结构的每五个字母单词的可读列表: 辅音-元音-辅音-元音 输出应按字母顺序排序,每行一个单词,并且没有重复的单词两次。可以是小写或大写,但不能混合使用。因此,列表可以像这样开始和结束: babab babac babad ... zyzyw zyzyx zyzyz 元音是一个 - ë - 我 - Ø - ü - Ÿ,其他20个英文字母都是辅音字母。 单词不一定是实际的词典单词。 最短的代码胜出。 注意:几年前,我在大学网站上偶然发现了一个完全符合此要求的程序。原来我的名字和姓氏符合cvcvc约束,我一直在自我搜索。

10
小便池协议
背景 已经在多个地方讨论了所谓的“小便池规程”,该规程描述了在男士浴室中抽取单个小便池的顺序。此xkcd博客文章中给出了一个版本。这个问题涉及一个细微的变化: 布置:排成一行的小便池。 规程:每个新人都选择一个与已使用的小便器距离最远的小便器。 注意,这对第一人称小便池没有任何限制。 更新:不同的方式数的序列,其中n个人可以选出n个小便器开始与1,2,4,8,20 ...注意,这不一样OEIS A095236,其中描述了比这个稍微严格限制题。 任务 给定一个介于0到10之间的整数n,输出(以任何顺序)n个人可以占用n个小便池的所有可能的顺序。每种订购应按最终安排打印:代表人的数字序列(前9人为1-9,第十人为0),从最左边的小便池开始,中间有可选的非字母数字分隔符(但不包括在前面)或之后)的数字。例如,以下输出均有效: >> 3 132 213 312 231 >> 4 1|3|4|2 1|4|3|2 3|1|4|2 4|1|3|2 2|3|1|4 2|4|1|3 2|3|4|1 2|4|3|1 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数参数获取输入。结果应打印到STDOUT(或最接近的替代品)。 计分 最短的代码胜出。适用标准条款和条件。

30
加泰罗尼亚语数字
该Catalan数(OEIS)是自然数常常出现在组合的序列。 第n个加泰罗尼亚语数字是Dyck单词的数目(括号中的平衡字符串或方括号,例如[[][]];正式定义为使用两个字符a和b的字符串,这样从开头开始的任何子字符串的字符数都大于或等于number b个字符,整个字符串具有相同的a和b个字符),长度为2n。第n个加泰罗尼亚数字(对于n> = 0)也明确定义为: 从n = 0开始,前20个加泰罗尼亚数字为: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190... 挑战 编写一个完整的程序或函数,该程序或函数通过STDIN或可接受的替代方法获取非负整数n,并输出第n个加泰罗尼亚数字。您的程序必须至少对输入0-19有效。 输入输出 输入值 您的程序必须根据此meta post接收来自STDIN,函数参数或任何可接受的替代方法的输入。您可以将输入的数字读取为标准的十进制表示形式,一进制表示形式或字节。 如果(且仅当)您的语言无法从STDIN或任何可接受的替代方法中输入内容,则它可能从程序中的硬编码变量或适当的等效语言中获取输入。 输出量 您的程序必须根据此meta post将第n个加泰罗尼亚编号输出到STDOUT,函数结果或任何可接受的替代方法。您可以以标准的十进制表示形式,一元表示形式或字节形式输出加泰罗尼亚数字。 输出应包含适当的加泰罗尼亚语数字,并可以选择后面跟着一个或多个换行符。除了无法避免的语言解释器的恒定输出(例如问候语,ANSI颜色代码或缩进​​)以外,无法生成其他任何输出。 这并不是要找到最短的语言。这是关于寻找每种语言中最短的程序。因此,我不会接受答案。 在此挑战中,只要具有实现方式,就可以接受比挑战新的语言。允许(甚至鼓励)自己为以前未实现的语言编写此解释器。除此之外,必须遵守所有代码高尔夫球的标准规则。大多数语言的提交都将以适当的预先存在的编码(通常为UTF-8)以字节计分。另请注意,允许使用内置函数来计算第n个加泰罗尼亚语数字。 目录 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes ...

21
NxNxN Rubik多维数据集上的置换数量
介绍: 3x3x3魔方具有可能的排列,大约为43 亿个。您可能之前已经听说过这个数字,但是实际上是如何计算的呢?43 ,252 ,003 ,274 ,489 ,856 ,00043,252,003,274,489,856,00043,252,003,274,489,856,000 3x3x3魔方有六个面,每个面有九个贴纸。看(外部)件而不是贴纸,我们有六个中心件。八个角块;和十二个边缘碎片。由于中心不能移动,因此我们可以在计算中忽略它们。至于拐角和边缘: 有()排列八个角的方法。每个角都有三个可能的方向,尽管(八个中的)只有七个可以独立地定向。在给定()可能性的情况下,第八个/最后一个角的方向取决于前面的七个。8 !8!8!40 ,32040,32040,32037373^72 ,1872,1872,187 有()种方式来排列十二条边。从减半这是因为恰好在拐角处时,边缘必须始终保持均匀的排列。在给定()的可能性的情况下,第十二个/最终边缘的翻转取决于前面的十一个,因此可以独立翻转十一个边缘。12 !212!2\frac{12!}{2}239 ,500 ,800239,500,800239,500,80012 !12!12!2112,0482112112^{11}2 ,0482,0482,048 综上所述,我们有以下公式: 8 !× 37× 12 !2× 211= 43 ,252 ,003 ,274 ,489 ,856 ,0008!×37×12!2×211=43,252,003,274,489,856,0008!×3^7×\frac{12!}{2}×2^{11} = 43,252,003,274,489,856,000 资料来源:维基百科-Rubik的立方体排列 尽管这看起来可能已经很复杂了,但对于3x3x3多维数据集来说仍然相当简单。对于偶数立方体,公式略有不同。例如,这是4x4x4多维数据集的公式: 8 !× 37× 24 !2247= 7 ,401 ,196 ,841 ,564 ,901 ,869 ...

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.