Questions tagged «combinatorics»

对于涉及组合学的挑战。

3
原子比例游戏
您的任务是使机器人扮演得分最高的Atomas。 游戏的运作方式: 游戏板以6个“原子”的环开头,数字范围为1到3。您可以“玩”两个原子之间或另一个原子上的原子,具体取决于原子本身。 您可以有一个普通原子,也可以有一个特殊原子。 正常原子: 您可以在板上任意两个可用原子之间播放普通原子。 您从处于该范围内的原子开始1 to 3,但是该范围每40移动一次就增加1(因此,在40移动之后,范围变为2 to 4)。 如果板上的原子小于该范围,则有1 / no. of atoms of that number on the board可能产生。 假设您有一个2要玩的地方,董事会看起来像这样: 1 1 2 1 让我们将放在的2右侧1。 董事会现在变成: 1 1 2 1 2 注意:木板环绕,所以1最左侧的实际上2是最右侧的旁边。稍后将很重要。 有“特殊”原子的4种类型,它们是: 的+原子: 这个原子在两个原子之间起作用。它有五分之一的机会产卵。 如果原子两侧的+原子相同,则会发生聚变。运作方式如下: The two atoms fuse together to create an atom one higher. …
21 code-challenge  game  code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

20
一分钱的节省就是一分钱
...算了! 您将为您的程序传递一个变量,该变量代表以美元和/或美分表示的货币数量以及一系列硬币值。您的挑战是输出给定硬币值数组的可能组合的数量,这些数量加起来将等于传递给代码的数量。如果使用命名的硬币不可能,则程序应返回0。 关于美国钱币学术语的注释: 1分硬币:美分 5美分硬币:镍 10分硬币:角钱 25美分的硬币:季度(四分之一美元) 范例1: 程序通过: 12, [1, 5, 10] (12美分) 输出: 4 有四种可能的方法来组合命名为12美分的硬币: 12便士 1镍7便士 2镍2便士 1角钱和2便士 范例2: 程序通过: 26, [1, 5, 10, 25] (26分) 输出: 13 有13种可能的方法来组合命名为26美分的硬币: 26便士 21便士和1镍 16便士和2镍 11便士和3镍 6便士和4镍 1便士和5镍 16便士和1角钱 6便士和2角钱 11便士,1角钱和1镍 6便士,1角钱和2枚镍币 1便士,1美分和3枚镍币 1便士,2角钱和1镍 1个季度1分钱 范例3: 程序通过: 19, [2, 7, …

30
用给定的宽度绘制空心的#
我从Codingame那里获得了这一挑战,并且对比我的更好的解决方案感到好奇: 通过标准输入给定宽度,在给定的宽度和长度上绘制一个空心的#号正方形。 例: 5结果 ##### # # # # # # ##### 我用python解决了这个问题,所以我对其他python代码特别感兴趣。但是,请随时以所需的任何语言发布您的解决方案。
21 code-golf  string  ascii-art  number  code-golf  grid  code-golf  string  ascii-art  code-golf  alphabet  cipher  code-golf  math  number  code-golf  quine  code-golf  palindrome  polyglot  code-golf  number  array-manipulation  counting  logic  code-golf  string  primes  binary  decision-problem  code-golf  ascii-art  kolmogorov-complexity  popularity-contest  code-golf  probability-theory  code-golf  string  code-golf  python  polyglot  programming-puzzle  c++  code-golf  math  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 

5
每日随机ASCII艺术#5:钻石拼贴
混搭时间! 这是我的每日随机高尔夫和Optimizer的ASCII每日艺术系列的第5期。您在此挑战中提交的作品将计入两个排行榜(您可以在其中找到链接的帖子)。当然,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心任何一个系列。 第5洞:钻石拼贴 正六边形始终可以用钻石平铺,如下所示: 我们将使用这些拼贴的ASCII艺术表示形式。对于边长为2的六边形,有20个此类平铺: ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ /\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\ /\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\ \/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/ \/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ …

30
打印3x3网格的所有颜色
您有一个3x3的网格。每个单元格可以染成黑色或白色。显示所有512种颜色。最少的字节数获胜。 您可以以任何形式显示网格,只要它们在视觉上分开并且间距看起来规则即可。您可以使用ASCII艺术作品或图像。黑色和白色可以使用任何两种不同的可见符号或颜色。只要结果在视觉上正确,任何空格都可以。 输出示例: ... ... ... ... ... ..X ... ... .X. ... ... .XX ... ... X.. ... ... X.X ... ... XX. ... ... XXX ... ..X ... ... ..X ..X ... ..X .X. ... ..X .XX ... ..X X.. ... ..X X.X ... ..X XX. ... ..X …

13
素数的组合产品
问题陈述 给定一组唯一的,连续的素数(不一定包括2个),则生成这些素数的第一幂的所有组合的乘积(例如,无重复)以及1。例如,给定的集{2,3,5, 7},您产生{1,2,3,5,6,7,10,14,15,21,30,35,42,70,105,210},因为: 1 = 1 2 = 2 3 = 3 5 = 5 6 = 2 x 3 7 = 7 10 = 2 x 5 14 = 2 x 7 15 = 3 x 5 21 = 3 x 7 30 = 2 x 3 x 5 …

7
解释> <>(鱼)
虽然&gt; &lt;&gt;不是流行的语言,但它可能对打高尔夫球很有用,并且已在本网站上使用。它受到Befunge的启发,在指令上有一些相似之处。 所需命令: &gt; &lt; ^ v 更改指令指针的方向(右,左,上,下) / \ | _ # 。指针将根据其已有的方向改变方向。 x 随机方向。 + - * , % 加法,减法,乘法,除法和模。将A和B弹出堆栈,然后将B运算符A推入。除以0会引发错误。 0-9 a-f 将相应的值压入堆栈。a = 10,...,f = 15 = 从堆栈中弹出A和B,如果B = A,则按1,否则按0。 ) 比...更棒。将A和B弹出堆栈,如果B &lt;A ( 小于,则按1 。将A和B弹出堆栈,如果B&gt; A ' " 启用字符串解析,则按1 。字符串解析将找到的每个字符推入堆栈,直到找到结束引号为止。 ! 跳过以下说明。 ? 如果堆栈顶部为零或堆栈为空,则跳过以下指令。(注意:这不会从堆栈中弹出任何东西!) : 复制堆栈中的最高值。 …

25
代码高尔夫:排列
编写一个函数,该函数接受一组整数(可以是列表,数组或任何其他具有不同数字的容器)作为输入,并输出所有其排列的列表。 Python(95个字符): p=lambda s:s and sum(map(lambda e:map(lambda p:[e]+p,p(filter(lambda x:x!=e,s))),s),[]) or [[]] 用相同的语言击败真是太好了,但是其他语言的实现实在值得欢迎!

8
在圆环上循环
挑战 这一挑战将让你写一个程序,它在两个整数n和m输出的数量不相交的环n通过m由开始做圆环(0,0),只有采取措施,并在右边。您可以将环面视为顶部和底部以及侧面均具有环绕效果的网格。 这是代码高尔夫球,因此最少的字节获胜。 例 例如,如果输入为n=m=5,则一个有效的步行路线为 (0,0) -&gt; (0,1) -&gt; (0,2) -&gt; (1,2) -&gt; (2,2) -&gt; (2,3) -&gt; (2,4) -&gt; (2,0) -&gt; (3,0) -&gt; (4,0) -&gt; (4,1) -&gt; (4,2) -&gt; (4,3) -&gt; (0,3) -&gt; (1,3) -&gt; (1,4) -&gt; (1,0) -&gt; (1,1) -&gt; (2,1) -&gt; (3,1) -&gt; (3,2) -&gt; (3,3) -&gt; (3,4) …

14
这是一个截断的三角形数字吗?
相关OEIS序列:A008867 截断三角数 三角数的一个共同属性是它们可以排列成三角形。例如,取21并排列成os 的三角形: Ø OO oo oo oo oo 让我们定义一个“截断:”从每个角切割相同大小的三角形。截断21的一种方法如下: 。 。。 oo oo 。oo。 。。哦。。 (的三角形.是从原始三角形切出的)。 o剩下12 秒,因此12是一个截断的三角形数字。 任务 您的工作是编写一个程序或函数(或等效函数),该程序或函数采用整数并返回(或使用任何标准输出方法)数字是否为截断的三角形数字。 规则 没有标准漏洞。 输入是非负整数。 切口的边长不能超过原始三角形的一半(即,切口不能重叠) 切口的边长可以为零。 测试用例 真相: 0 1 3 6 7 10 12 15 18 19 虚假: 2 4 5 8 9 11 13 14 16 17 …
20 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 

9
纸牌游戏中的手形
一副纸牌是S西服和R等级的直角乘积。许多(尽管不是全部)纸牌游戏使用S=4和R∊{6,8,13}。一副H牌从甲板上发出。它的分布(也称为“手形”)是一个数组,用于描述您从每套西服中获得多少张牌,而忽略西服的顺序(因此,就像是多套)。鉴于分布D满足len(D)=S,1≤sum(D)=H≤S×R,0≤D[i]≤R,D[i]≥D[i+1],发现它发生的概率。 输入:一个整数R和一个数组D。 输出:小数点后至少5位数字的概率;尾随零可以被跳过;科学记数法还可以。 禁止漏洞。最短的胜利。 测试: R D probability 13 4 4 3 2 -&gt; 0.2155117564516334148528314355068773 13 5 3 3 2 -&gt; 0.1551684646451760586940386335649517 13 9 3 1 0 -&gt; 0.0001004716813294328274372174524508 13 13 0 0 0 -&gt; 0.0000000000062990780897964308603403 8 3 2 2 1 -&gt; 0.4007096203759162602321667950144035 8 4 2 1 1 -&gt; 0.1431105787056843786543452839337155 …

8
整理列表
考虑“挑选”嵌套列表的过程。拣配定义如下: 如果参数是列表,则从列表中随机(均匀地)选取一个元素,然后从中选择一个元素。 如果参数不是列表,则只需将其返回即可。 Python中的示例实现: import random def pick(obj): if isinstance(obj, list): return pick(random.choice(obj)) else: return obj 为简单起见,我们假定嵌套列表仅包含整数或其他嵌套列表。 给定任何列表,就有可能创建一个扁平化的版本,该版本无法通过来区分pick,即从中进行选择会以相同的概率产生相同的结果。 例如,“拼合”列表 [1, 2, [3, 4, 5]] 产生清单 [1, 1, 1, 2, 2, 2, 3, 4, 5] 。简单展平是无效的原因是,子列表的元素被选择的可能性较低,例如,列表中[1, [2, 3]]的1被选择的可能性为2/4 = 1/2,而3和4的被选择的可能性为1/4每个机会。 还要注意,从单例列表中进行选择等同于从其元素中进行选择,而从空列表中进行选择则没有任何意义。 挑战 给定一个嵌套的非负整数列表,返回一个扁平化的非负整数列表,从中进行拾取会以相同的概率产生相同的结果。 这是代码高尔夫球,因此最短的有效答案(以字节为单位)获胜。 技术指标 输入[2, 3, 4],[2, 2, 2, 2, …

3
漂流问题(背包变体)
我的第一个难题是,很高兴收到改进建议! 场景是;您是一家激流漂流公司的经理。每天早晨,您都会收到一份预订清单,您必须将它们分类为木筏装载。用您选择的语言编写适合您的程序或函数。 每个木筏最多可容纳一个n客户,并且每个预订的n人数是1至2 (含)之间的一组。必须遵守以下规则; 不得拆分任何组。如果他们一起订票,他们必须都在同一排。 筏子的数量必须最小化。 在符合前两个规则的前提下,组必须在木筏之间尽可能平均地分布。 输入。 数字n(您可能会认为这是一个正整数),以及所有预订的大小。如果您的语言支持,则可以是数组,列表或类似的数据结构。所有这些都是介于1和之间的正整数n。预订的顺序没有定义,也不重要。 输出。 预订编号列表,分为筏负载。必须明确指出分组,例如; 列表或数组数组。 每个筏的逗号分隔列表。每个筏之间的换行符。 如何实施第三条规则由您决定,但这可能涉及找到平均木筏占用率,并尽可能减少其偏离。这是一些测试用例。 n Bookings Output 6 [2,5] [5],[2] 4 [1,1,1,1,1] [1,1,1],[1,1] 6 [2,3,2] [2,2],[3] 6 [2,3,2,3] [2,3],[2,3] 6 [2,3,2,3,2] [2,2,2],[3,3] 12 [10,8,6,4,2] [10],[8,2],[6,4] 6 [4,4,4] [4],[4],[4] 12 [12,7,6,6] [12],[7],[6,6] 适用标准规则,以最短的代码为准。玩得开心! 编辑; 建议为第三条规则尽可能平等地定义的方法。 一旦r确定了木筏的数量(服从第二条规则),则a可以通过对预订进行求和并除以来计算平均占用率r。对于每个筏,可以使用找出与平均占用率的偏差d(x) = abs(n(x)-a),其中n(x)每个筏中的人数是和1 &lt;= x &lt;= …

2
晶体管组合
电子游戏晶体管具有非常有趣的能力系统。您收集了16个“功能”,可以在16个不同的插槽中使用。有趣的是,有3种插槽类型,每个函数根据您在哪个插槽中使用其行为有所不同: 有4个被动插槽。 有4个活动插槽。 每个活动插槽都有2个升级插槽。 我们想弄清楚给我们带来了多少种不同的技能。 但是,某些组合是等效的。特别是,在这些插槽组的每一个中,功能的特定位置无关紧要。另一方面,升级插槽中功能的效果确实取决于父级活动插槽中使用的特定功能。 因此,使用十六进制数字表示功能,以下组合都是等效的: Passive Slots: 0 1 2 3 Active Slots: 4 5 6 7 Upgrade Slots: 8 9 A B C D E F Passive Slots: 2 0 1 3 # Permutation of passive slots. Active Slots: 4 5 6 7 Upgrade Slots: 8 9 …

2
用一连串的棒形成多米诺骨牌
背景 考虑一个(闭合的)杆链,每个杆的长度都是整数。有多少不同的无孔四角系统,你可以在给定链形成的?或者换句话说,对于给定的链,可以形成多少个与轴对齐的边的非自相交多边形? 让我们看一个例子。考虑由8条长度为1和2的杆组成的特定链,我们可以将其表示为[1, 1, 2, 2, 1, 1, 2, 2]。直到旋转和平移,只有8种可能的多米诺骨牌(我们会计算不同的反射): 第一个杆是深蓝色,然后我们以逆时针方向遍历多边形。 旋转感不影响上面示例中的结果。但是,让我们考虑另一条链,[3, 1, 1, 1, 2, 1, 1]它产生以下3个多氨基酸: 注意,我们不包括最后一个多米诺骨牌的反射,因为它需要顺时针遍历。 如果我们有一条相同长度的更灵活的链[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],我们实际上将能够在其他一些多音色之间形成两种反射,总计为9: 挑战 给定链条的描述(以阵列或类似形式),可以按顺序确定杆(在旋转和平移的情况下)可以形成的不同多义氨基酸的数量,同时按逆时针方向绕周长。 请编写完整的程序,并包含用于编译的命令(如果适用),并从命令行运行代码。另请提供指向您所用语言的免费编译器/解释器的链接。 您的程序应从STDIN读取输入。第一行将包含的整数中号。接下来的M行将是测试用例,每个用例将是一个用空格分隔的杆长度列表。您的程序应将M行打印到STDOUT,每行由一个整数组成-可以形成的不同多氨基酸的数量。 您只能使用一个线程。 您的程序在任何时候都不得使用超过1 GB的内存。(这不是一个完全严格的限制,但是我将监视可执行文件的内存使用情况,并杀死任何持续使用超过1 GB或峰值明显超过此1GB的进程。) 为防止过多的预计算,您的代码不得超过20,000字节,并且不得读取任何文件。 您也不能针对所选的特定测试用例进行优化(例如,通过对结果进行硬编码)。如果我怀疑您这样做,我保留生成新基准集的权利。测试集是随机的,因此您的程序在这些测试集上的性能应代表其在任意输入下的性能。您唯一可以做的假设是杆长度的总和是偶数。 计分 我为N = 10、11,...,20根杆的链条提供了基准套件。每个测试集包含50条随机链,长度在1-4之间(含1和4)。 您的主要分数是程序在5分钟内(在我的计算机上,Windows 8下)完成完整测试集的最大N分。决胜局将是程序在该测试集上花费的实际时间。 如果有人击败最大的测试仪,我将继续增加更大的测试仪。 测试用例 您可以使用以下测试用例来检查实现的正确性。 Input Output …

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.