Questions tagged «combinatorics»

对于涉及组合学的挑战。

20
分解一个数字!
您的任务是使用以下格式分解数字。 这与基本转换类似,不同之处在于digits,您列出了values,而不是在基本列表中列出,这样列表就加到了输入上。 如果给定的基为n,则列表中的每个数字都必须采用的形式k*(n**m),其中0<=k<n和m在整个列表中都是唯一的。 眼镜 任何合理的输入/输出格式。您的程序/功能需要2个输入并输出一个列表。 输出列表可以是任何顺序。 0 可以排除或包含。 0允许领导。 允许内置。 测试用例 number base converted list input1 input2 output 123456 10 [100000,20000,3000,400,50,6] or [6,50,400,3000,20000,100000] 11 2 [8,2,1] or [0,0,0,0,8,0,2,1] 727 20 [400,320,7] 101 10 [100,1] or [100,0,1] 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。
16 code-golf  number  sequence  number-theory  base-conversion  code-golf  bitwise  hashing  code-golf  string  ascii-art  whitespace  code-golf  math  code-golf  code-golf  image-processing  counting  code-golf  math  arithmetic  checksum  code-golf  code-golf  math  arithmetic  number-theory  code-golf  array-manipulation  random  code-golf  string  code-golf  math  ascii-art  base-conversion  code-golf  graphical-output  geometry  3d  code-golf  math  linear-algebra  matrix  code-golf  math  number  sequence  code-golf  array-manipulation  code-golf  math  matrix  linear-algebra  code-golf  number  sequence  counting  code-golf  string  code-golf  string  restricted-source  quine  sorting  code-golf  string  geometry  code-golf  string  code-golf  networking  code-golf  base-conversion  code-golf  math  matrix  code-golf  arithmetic  linear-algebra  matrix  code-golf  number  arithmetic  grid  code-golf  number  source-layout  code-golf  string  bitwise  checksum  code-golf  array-manipulation  code-golf  string  probability-theory  code-golf  tips  code-golf  sequence  code-golf  string  math  sequence  calculus  code-golf  string  palindrome  bioinformatics  code-golf  math  combinatorics  counting  permutations  code-golf  parsing  logic-gates  code-golf  arithmetic  number-theory  combinatorics  code-golf  math  sequence  polynomials  integer  code-golf  string  ascii-art  chess  code-golf  string  code-golf  number  code-golf  string  ascii-art  parsing  code-golf  code-golf  number  natural-language  conversion  code-golf  arithmetic  code-golf  string  code-golf  ascii-art  decision-problem 

8
画出山脉
受斐波那契多米诺骨牌拼贴的启发,此问题与生成代表另一种著名组合序列的ASCII艺术有关。 阿正步骤山图是山脉的图,使用完全相同Ñ “/”和Ñ “\”字符,使得字符绘制一连续曲线,该曲线永不下降到低于其初始的“高度”。例如, /\/\ /\/ \ 和 /\ /\/ \/\ 都是四步山图,但是 /\ /\/\ \/ 不是。 输入值 程序应从stdin 接受整数n或作为函数的参数。 输出量 将所有n步山图打印到stdout。图可以以任何顺序排列,但应以某种空白分隔。您可以决定是否将水平,垂直等输出不同的图。 就像在多米诺砖化问题中一样,您可以使用所需的任何空白。这包括在打印输出之前或之后的多余换行符。 例 对于n = 3的一些示例有效输出: 有效输出A: /\ /\ /\ / \ /\/\ /\/\/\ / \/\ /\/ \ / \ / \ 有效输出B: /\ /\/ \ /\/\ / \ /\/\/\ …

4
使用ASCII艺术图可视化长除法
编写一个程序,以可视化方式用ASCII艺术进行长除法。使用您选择的输入格式,输入由两个整数组成:分子和分母。 例子: 1234÷56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012÷12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0÷35 0 - 35|0 规则: 编程语言的除法运算符的用途是允许的。 也允许使用大整数支持。 为了保持一致: 如果商为零,则在跳水板的末端打印一个零。 如果余数为零,请不要打印。 不要在任何数字上打印前导零。 末尾多余的换行符和右边的尾随空格是允许的。 字符最少的解决方案获胜。 限制: 0 <=分子<= 10 72 - 1 1 <=分母<= 9999999 …

7
振荡平等
我们的对象在两个整数点之间[l, r]以每时间单位一个单位的速度从lon 开始振荡t=0。您可以假设l < r。例如,如果一个对象在上振荡[3, 6],则我们有: t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 等等,但是物体不断振荡,所以我们还有t=0.5 -> 3.5和t=3.7 -> 5.3。 由于两个物体之间振荡[l1, r1],[l2, r2],确定是否存在过一段时间t,使得这两个对象共享相同的位置。您可以采用l1, r1, l2, r2任何方便的格式,并输出任何真实/错误值。 真实的输入: [[3, 6], [3, 6]] [[3, 6], [4, 8]] …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

30
创建一个鹦鹉程序
给定输入,输出该输入,然后不断地换行。 输入将是仅由可打印的ASCII字符(0x20-0x7E)和换行符(0x0A)组成的字符串。 如果输入长度为0,则不断输出换行符。 这是代码高尔夫球,因此每种语言中最少的字节会获胜!
15 code-golf  string  sequence  combinatorics  fastest-code  number  code-challenge  restricted-source  rosetta-stone  code-golf  arithmetic  decision-problem  integer  factorial  code-golf  arithmetic  decision-problem  integer  bitwise  code-golf  kolmogorov-complexity  code-golf  tips  vim  code-golf  quine  code-generation  code-golf  string  restricted-source  code-golf  string  random  unicode  code-golf  audio  code-golf  ascii-art  code-golf  decision-problem  code-golf  puzzle-solver  code-golf  restricted-source  code-golf  kolmogorov-complexity  permutations  hexagonal-grid  code-golf  string  math  combinatorics  fastest-code  code-golf  restricted-source  code-golf  string  code-golf  arithmetic  code-golf  math  number  code-golf  string  decision-problem  balanced-string  code-golf  binary  code-golf  string  number  code-challenge  restricted-source  code-golf  ascii-art  printable-ascii  interactive  code-golf  string  ascii-art  code-challenge  restricted-source  source-layout  code-golf  arithmetic  tips  functional-programming  golfing-language  code-golf  binary  encryption 

3
Dobble / SpotIt卡生成器
介绍 Dobble / Spot这是一种纸牌游戏,人们必须在最短的时间内在一对纸牌上发现相同的符号,并指出并移到下一对。每张卡具有多个符号(普通版为8个),但每对卡之间恰好有一个共同的符号。 来自游戏实体副本的示例: 挑战 编写一个程序,给定一组符号(单个ascii字符)和单个卡上的符号数量,将生成输出列表卡,其中每个卡都有符号。显然有许多等效的组合,您的程序只需要编写任何组合就可以为给定的输入产生最大数量的卡片。 这是一个代码问题,因此代码越短越好。 如果在最复杂的情​​况下,在宇宙热死之前完成计算,那将也很好。 输入值 函数/ stdin的两个参数(您的选择) 首先是符号的集合,例如'ABCDE'或['A','B','C','D','E']-您选择的格式,可以是字符串,集合,列表,流,或所选择语言的惯用语言。字符将从[A-Za-z0-9]的集合中给出,不能重复(因此输入符号集的最大大小为62)。它们不会在(因此您也可以在6个符号的情况下获得“ yX4i9A”)。 第二个参数是整数,表示单张卡上的符号数量。小于符号集的大小。 输出量 打印用换行符分隔的多行,每行包含一张卡的符号。 例子 ABC 2 >>>> AB BC AC 要么 ABCDEFG 3 >>>> ABC BDE CEF BFG AEG CDG ADF 要么 ABCDE 4 >>>> ABCD 提示 所产生的卡片数量不能大于不同符号的数量,并且在许多组合中,它将大大减少 如果您需要数学方面的帮助,则可能需要阅读一些数学背景 这是我第一次挑战高尔夫代码,因此请原谅格式/样式方面的可能问题-如果您在注释中指出错误,则我将尝试更正。

1
同色算术级数
范德瓦尔登定理说 对于任何给定的正整数r和k,都有一些数字N,如果这些整数{1, 2, ..., N}是有色的,每一个都具有一种r 不同的颜色,则k在算术级数中至少存在所有相同颜色的整数。最少的N是Van der Waerden数W(r, k)。 您的目标是给W(r, k)定正整数输入r和来计算范德瓦尔登数k。最少的字节数获胜。 请注意,此功能增长非常快,并且计算耗时。甚至W(4, 4)是未知数。您可能会假设您的代码在资源(时间,内存,堆栈深度等)无限制的理想计算机上运行。理论上,即使对于未知答案的值,您的代码也必须给出正确的答案。 不允许使用计算此功能的内置程序。 例 对于r = 2长度的颜色和渐变k = 3,存在8避免这种渐变的长度序列,即3相同颜色的等距元素: B R R B B R R B 但是,没有这样的长度9序列W(2, 3) == 9。例如, R B B R B R R B R ^ ^ ^ 包含所示的长度3相同颜色的算术级数。 测试用例 您可能只能测试小案例。 +-----+-----+-----+-----+-----+-----+------+ | | …

3
标记基于堆栈的语言
我一直在研究另一种称为Stackgoat的基于堆栈的高尔夫语言。在这个挑战中,您将为Stackgoat(或实际上是任何通用的基于堆栈的语言)编写Tokenizer。 例子 "PPCG"23+ ["PPCG", '23', '+'] 'a "bc" + ['"a"', '"bc"', '+'] 12 34+-"abc\"de'fg\\" ['12', '34', '+', '-', '"abc\"de'fg\\"'] "foo ['"foo"'] (empty input) [] ' "" ['" "', '""'] 规格 您需要处理的三种类型是: 弦乐,什么内"" 数字,任何数字序列 运算符,除空格外的任何其他单个字符 除非将其留在字符串中或将两个数字分隔开,否则实际上将忽略空格。 字符串/字符规范: 字符串以分隔",当\遇到时,下一个字符应转义。 字符前面加a ',后面的字符'应转换为字符串文字。'a->"a" ' 后面总会有一个角色 右引号应自动插入 规则: 没有形式eval允许 输入输出: 可以通过STDIN,函数参数或您的语言等效输入。 输出应为数组或您的语言最接近的等效数组。
15 code-golf  parsing  code-golf  hexagonal-grid  code-golf  string  code-golf  string  code-golf  combinatorics  code-golf  ascii-art  code-golf  string  game  counting  code-golf  arithmetic  complex-numbers  code-golf  string  code-golf  decision-problem  hexagonal-grid  code-golf  string  sequence  code-golf  number  arithmetic  code-golf  ascii-art  code-golf  ascii-art  code-golf  string  arithmetic  code-golf  number  simulation  code-golf  number  arithmetic  code-golf  string  sequence  unicode  code-golf  string  ascii-art  balanced-string  code-golf  number  clock  code-golf  ascii-art  number  code-golf  math  number  sequence  code-golf  string  ascii-art  balanced-string  code-golf  math  string  popularity-contest  graphical-output  image-processing  code-golf  string  permutations  code-golf  string  code-golf  random  code-golf  string  cryptography  palindrome  code-golf  chess  code-golf  math  array-manipulation  topology  code-golf  math  sequence  code-golf  keyboard  classification  code-golf  string  sequence  code-golf  natural-language  code-golf  math  number  sequence  sorting  code-golf  sequence  combinatorics  grid  tic-tac-toe  code-golf  geometry  code-golf  number  restricted-source  new-years  expression-building 

8
最小总和为n的数字
这里的第一个问题,如果这是重复的或不好的挑战,请不要对我大喊。 介绍 我自己想到了这个挑战,对于初学者来说,这似乎是一个很好的基本难题。这也可能有助于我确定要学习哪种编码语言。 挑战 给定一个小于或等于整数n的数组,从数组中输出或返回最小数目的精确求和n。 您可以选择编写函数或完整程序。 输入值 您可以放心假设0 <= n < 2^31。 接受任何类型的数组或列表(允许vector用于C ++或Java LinkedList),以及n一个可选参数length,该参数指定数组的长度。 您还可以将输入作为用空格分隔的字符串,并n用逗号或空格分隔: 1 5 7 3 7 3 6 3 2 6 3,10 1 5 7 3 7 3 6 3 2 6 3 10 如果更容易。 输出量 输出或从数组中返回总和恰好为的最小数目的数字n。使用上面的示例: 1 5 7 3 7 3 6 3 …

11
求和
我很喜欢阅读本网站;这是我的第一个问题。欢迎进行编辑。 给定正整数n和m,将m的所有有序分区精确地计算为n个正整数部分,并用逗号和换行符分隔它们。任何顺序都可以,但是每个分区必须恰好出现一次。 例如,给定m = 6和n = 2,可能的分区是对正整数的和,总和为6: 1,5 2,4 3,3 4,2 5,1 请注意,[1,5]和[5,1]是不同的有序分区。输出应与上述格式完全相同,并带有可选的尾随换行符。(编辑:分区的确切顺序无关紧要)。输入/输出通过标准代码高尔夫球I / O进行。 m = 7,n = 3的另一个示例输出: 1,1,5 1,2,4 2,1,4 1,3,3 2,2,3 3,1,3 1,4,2 2,3,2 3,2,2 4,1,2 1,5,1 2,4,1 3,3,1 4,2,1 5,1,1 1周后以字节为单位的最小代码获胜。 同样,请根据需要进行编辑。 附录: @TimmyD询问程序必须支持的整数输入大小。除示例外,没有其他最低要求。实际上,输出大小呈指数增长,粗略地建模为:lines = e ^(0.6282 n-1.8273)。 n | m | lines of output …

4
订购40条
我们有40条相同宽度但不同高度的棍棒。有多少种布置可以将它们彼此相邻放置,以便当我们从右边看时看到10条,而当我们从左边看时又看到10条? 例如,这样的排序是: 黑棒是隐藏的,红色棒是从左看时可以看到的棒,蓝色棒是从右眼看时可以看到的棒,紫色的棒(即最长的棒)是可以看到的棒从双方。 作为测试用例: 如果我们有3个棍棒,那么从左边看2个,从右边看2个的订购数量是2 如果我们有5个棍棒,那么从左边看3个,从右边看3个的订购数量是6 如果我们有10个棍棒,那么从左边看4个从右边看4个的订购数量是90720

6
将置换分解为周期
有一个众所周知的定理,任何置换都可以分解为一组循环。您的工作是编写最短的程序。 输入: 两行。第一个包含数字N,第二个包含以空格分隔N的范围内的不同整数[0,N-1]。这些整数表示N元素的排列。 输出: 排列中每个循环一行。每行应是按循环顺序用空格分隔的整数列表。 循环可以以任何顺序输出,并且每个循环可以从任意位置开始输出。 范例1: 8 2 3 4 5 6 7 0 1 此输入编码排列0-> 2、1-> 3、2-> 4、3-> 5、4-> 6、5-> 7、6-> 0、7-> 1。这分解成如下循环: 0 2 4 6 1 3 5 7 同样有效的输出将是 5 7 1 3 2 4 6 0 范例2: 8 0 1 3 4 5 6 …

5
二进制卷积
二进制卷积由数字描述M,并应用于数字N。对于的二进制表示形式中的每个位M,如果将该位设置为(1),则通过将与相应位中的相应位相邻的两个位进行XOR N(在必要时进行环绕)来给出输出中的相应位。如果未设置该位(0),则输出中的相应位由中的相应位给出N。 一个有效的示例(具有8位值): 让N = 150,M = 59。它们的二进制表示形式分别为10010110和00111011。 根据M的二进制表示形式,卷积0、1、3、4和5。 位0的结果由对位1和7进行XOR运算得出(因为我们进行了环绕),得出1。 位1的结果由位0和2的XOR运算得出0。 位2的结果由原始位2给出,即1。 第3位的结果由第2位和第4位的XOR运算得出0。 位4的结果由位3和5的XOR运算得出0。 第5位的结果由第4位和第6位的XOR运算得出1。 位6和7的结果由原始位6和7给出,得出0和1。 因此,输出为10100110(166)。 挑战 给定N和M,输出执行Mon上描述的二进制卷积的结果N。输入和输出可以采用任何方便,一致且明确的格式。N并且M将始终在(包括)范围内[0, 255](8位无符号整数),并且应将其二进制表示形式填充为8位以执行二进制卷积。 测试用例 150 59 -> 166 242 209 -> 178 1 17 -> 0 189 139 -> 181 215 104 -> 215 79 214 -> 25 190 207 -> 50 61 …
15 code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

3
排列组运算
在n个元素的排列与数字0到n!-1之间存在众所周知的双射,使得排列与相应数字的字典顺序相同。例如,n = 3: 0 <-> (0, 1, 2) 1 <-> (0, 2, 1) 2 <-> (1, 0, 2) 3 <-> (1, 2, 0) 4 <-> (2, 0, 1) 5 <-> (2, 1, 0) 还众所周知,n个元素的排列形成一个组(阶为n!的对称组)-因此,尤其是,将n个元素的一个排列应用于n个元素的第二个排列将产生n个元素的排列。 例如,将(1、0、2)应用于(a,b,c)收益率(b,a,c),因此将(1、0、2)应用于(2、1、0)收益率(1、2 ,0)。 编写一个使用三个整数参数的程序:n,p1和p2;将p1和p2解释为n个元素的排列;将第一个应用于第二个;并输出相应的整数。例如: $ ./perm.sh 3 2 5 3

8
混乱的重排
您的任务是编写一个计算机程序,以便将其切成几行(用换行符分隔)时,行的每种排列将输出1到n之间的不同数字!(其中n是总行数)。两种不同的布置均不得输出数字,并且每种布置均应在此范围内输出数字。既然有n!排列程序行的方式,这意味着每个数字应通过一次重新排列输出。 例如python程序 print 1;""" print 2;""" 有两种安排 print 1;""" print 2;""" 和 print 2;""" print 1;""" 第一输出1和第二输出2。 您可以使用所使用语言的标准输出格式。您可能不会假设任何样板。我认为,如果您必须解决语言所坚持的任何格式,那么这一挑战将变得更加有趣。 计分 您的分数将是程序中的行数,分数越高越好。如果愿意,您可以选择输出0到n!-1之间的数字。

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.