Questions tagged «graph-theory»

对于有关图形的挑战,使用数学结构来建模对象之间的关系。

4
日益壮大的曼哈顿Ameobas
*** ameoba图****是一类树,其所有节点的值都从0到某个非负整数N,并且任何值x <N的特定节点都连接到x + 1 值x +的不同节点1。 N = 3的Ameoba图(表示为A 3) 请注意,不允许2共享3的任何一个。正好三个3必须分别属于“ 2”。 挑战 您的任务是通过贪婪地最小化节点之间的曼哈顿距离,在二维网格中归纳“增长”这些变形虫图: 基本情况:甲0仅仅是图形0。 感应步骤:甲N + 1是通过迭代地将新的N + 1级值的节点尽可能接近的N个值中的节点现有A产生Ñ结构。(由于最接近的位置可能已经被填充,因此只能尽可能地靠近。) 对于归纳步​​骤,必须遵循的一般步骤是: for each existing node P with value N: for each new N+1 valued node Q you need to connect to P: //this loops N+1 times find the set …

5
拓扑总数
对于给定的DAG(有向无环图),其每个拓扑排序都是所有顶点的排列,其中,对于DAG 中的每个边(u,v),在排列中,u出现在v之前。 您的任务是计算给定DAG的拓扑种类总数。 规则 您可以使用任何格式来表示图,例如邻接矩阵,邻接列表或边列表,只要您不对编码进行有用的计算。如果有用,您也可以在输入中包含诸如顶点数或顶点列表之类的东西。 您可以假设输入中的图形始终是DAG(没有任何循环)。 理论上,您的程序应该可以进行任何输入。但是,如果它溢出您语言中的基本整数类型,它可能会失败。 顶点名称可以是任何类型的任何连续值。例如:以0或1开头的数字。(当然,仅当您不使用该数字存储代码时)。 这是代码高尔夫球。最短的代码获胜。 例 这是相同的输入,但格式不同。您的程序不必全部接受。顶点始终是从0开始的整数。 Adjacency list: [ [1 2 3 5] [2 4] [] [2] [] [3] ] Adjacency matrix: [ [0 1 1 1 0 1] [0 0 1 0 1 0] [0 0 0 0 0 0] [0 0 1 0 …

2
网格中最大的正方形[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 挑战 给定这样的网格 1 2 3 4 5 6 7 8 1 . . . . . . . . 2 . # . . . # . . 3 . . . . . . . . 4 . . . . …

3
什么可以分配给什么?
有关 什么可以分配给什么? 在本次挑战中,您将获得两种类型,A并B确定A是可分配给B,B可分配给A还是都不分配。 类型系统 (我将t用来表示任何类型) 基本类型 基本类型用单个大写字母表示,例如X。它们基本上是类。 X是分配给Y如果Y是任一相同,或父类X。 交叉点类型 交集类型由表示intersect<X, Y>,并且在之间可以具有任意数量的类型<(例如intersect<X, Y, Z, D, E>)。 t可以分配给intersect<X1, X2... Xn>if t可以分配给all X。 intersect<X1, X2... Xn>是分配给t如有X可分配给t。 联合类型 联合类型由表示,union<X, Y>并且之间可以有任意多种类型<(例如union<X, Y, Z, D, E>)。 t可分配给union<X1, X2... Xn>if t,可分配给any X。 union<X1, X2... Xn>t如果所有X都可分配给,则可分配给t。 输入值 您将收到以下输入: 类层次结构。您可以为类层次结构选择输入方法。您可以输入树的表示形式,或者输入每种类型的树及其父级列表,或者输入任何其他能准确表示类层次结构的形式。 两种类型(输入是灵活的,只要符号一致,您就可以随意接收这些类型)。 输出量 您将在三个一致和不同值的输出之一,给他们打电话X,Y和Z。鉴于两种类型A和B输出X,如果A是分配给B输出Y,如果B是分配给A和输出Z,否则(如果A是分配给B和B可分配给A,你可以输出X,Y,这两者或第四值)。 测试用例 格式: # of types [type, …

2
冯·科赫猜想
您可能认识到数学家冯·科赫(von Koch)的著名雪花。但是,他有更多有趣的计算机科学问题要解决。的确,让我们看一下这个猜想: 给定具有n节点的树(因此n-1边缘)。找到一种方法,从枚举节点1向n,因此,从边缘1到n-1以这样的方式,对于每个边缘k其节点号的差等于k。推测这总是可能的。 这是一个例子,可以很清楚地说明这一点: 你的任务 您的代码将以一棵树作为输入,您可以采用所需的格式,但是对于测试用例,我将通过它们的弧线和它们的节点列表来提供树。 例如,这是图片中树的输入: [a,b,c,d,e,f,g] d -> a a -> b a -> g b -> c b -> e e -> f 您的代码必须返回带有编号的节点和边的树。您可以返回更多图形输出,但是我将为测试用例提供这种输出: [a7,b3,c6,d1,e5,f4,g2] d -> a 6 a -> b 4 a -> g 5 b -> c 3 b -> e 2 e -> …

6
找到路径!
您必须编写一个程序或函数。 输入是数字的“映射”。您可以选择将地图作为带换行符(\n)的字符串或二维字符串数组。 所有地图都是5个字符乘5个字符,并且这些字符始终是大于0的数字或空格。 这是地图的示例: 12 45 11233 233 1 2 899 您的任务是在地图中找到连接的组件。有效成分是至少三个水平和/或垂直(非对角线)相连的相同数字(不是空格)的序列。然后,您需要用xs 替换有效连接的组件的字符,然后打印或返回该结果。 因此,以上示例的输出为: x2 45 xx2xx 2xx 1 2 899 这是另一个测试用例(感谢Martin Ender): Input: 2 3 4 1 5 111 6 11 7 Output: 2 3 4 x 5 xxx 6 xx 7 这是代码高尔夫球,因此以字节为单位的最短代码获胜!

2
玩完美的4x4十六进制游戏
背景 Hex是在K×K六角形菱形菱形上玩的两人抽象策略游戏。菱形的两个相对的边都被涂成白色,另外两个被涂成黑色,两个玩家(黑与白)轮流将其颜色的标记放置在一个空置的瓷砖上。首先设法在其颜色的相对两侧之间建立路径的玩家是获胜者。众所周知,游戏无法以平局告终,并且不管棋盘大小如何,第一位玩家都有获胜的策略(有关详细信息,请参阅Wikipedia页面)。 任务 在此挑战中,我们将板子尺寸固定为K = 4,并将板子表示为以下网格。粗线表示相邻的图块。 您的任务是为第一个玩家制定一个获胜策略,您可以选择是黑人还是白人。这意味着无论对方球员采取何种合法行动,您的比赛都必须取得胜利。您的输入是一个游戏位置(板上的代币排列),而您的输出是合法移动,采用以下指定的格式。如果您想自己找到一个成功的策略,请不要阅读以下内容: 假设白人先行,则可能的制胜策略概述。 首先选择5。之后,如果您有从5到最底行的路径,或者黑色在任何时候都选择0或1,请选择0或1中的任何一个作为响应。如果黑色选择9或13,则选择10,然后选择14或15中的任何一个。如果黑色未选择9、13或14,则选择9,然后选择13或14中的任一个。如果黑色选择14,则通过选择15进行响应。接下来,如果空白则选择10;否则,选择10。如果黑色选择10,则响应为11。如果黑色选择6,则响应7,然后选择2或3中的任一个。如果黑色未选择6,请选择它,因此您具有从5到最底行的路径。 输入输出 您输入的字符串是16个字符WBE,代表白色,黑色和空白。它们代表了上面所列举的板块。您可以从以下选项中选择输入法(这也决定了您的输出法): 从STDIN输入,输出到STDOUT。 输入作为一个命令行参数,输出到STDOUT。 输入为16个单字符命令行参数,输出到STDOUT。 输入作为命名函数的参数,输出作为返回值。 您的输出代表您放置下一个标记的磁贴,因为该旋转了。您可以从以下输出格式中选择: 从零开始的索引(如上图所示)。 一个基于索引的索引。 输入字符串与一个E由两者的替代W或B您选择您的播放器。 规则 您的策略必须是确定性的。您不需要使用您的策略来正确处理空局无法到达的游戏位置,或已经为任一位玩家赢得的位置,您可能会因此而崩溃。相反,在使用您的策略可以到达的板上,您必须返回合法举动。 这是代码高尔夫球,因此最低的字节数为准。不允许出现标准漏洞。 测试中 我已经编写了一个Python 3控制器来验证条目,因为手工操作非常繁琐。你可以在这里找到它。它支持前三种输入格式和Python 3函数(必须将其他语言的函数包装到程序中),所有三种输出格式以及这两种播放器。如果某策略没有获胜,它将输出发现的失败游戏,因此您可以调整程序。

1
粘液霉菌可以指望!
背景 粘液霉菌真棒。如果将它们放在有食物来源的表面上,它们将蔓延其卷须以寻找食物,然后它们在来源之间形成连接网络。在此挑战中,您将模拟一个黏液模具来寻找食物。而且,一旦找到足够的模具,该模具将停止。 输入值 您的输入应为使用L语言的本机格式的2D整数坐标列表,以及非负整数N。该列表L保证不会重复,但是可能无法排序。输入N介于0和的长度(L含)之间。 该列表L代表了一组食物来源坐标。例如清单 [(0,0),(2,-1),(3,1),(0,4),(5,5)] 可以在视觉上解释为 o o o o o 输出量 您的输出是另一个K2D整数坐标的无重复列表,其格式与输入相同。它代表由粘液模具形成的网络,并且应满足以下条件: 的交点L和K具有大小完全相同N。 该集合K作为整数网格的子集连接(通过正交或对角线邻接)。 如果K移除了的任何坐标,则它不再满足前两个条件。 请注意,如果N = 0,输出必须为空列表。 用于上述列表中的可接受的输出的一个例子L和N = 4将 [(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)] 可以可视化为 xxO Oxx x x x x x O O o 其中,每个O代表一个在两个坐标L和K,并且每个x代表一个坐标中K而不是在L。其他输出也是可以接受的,“卷轴”不必尽可能短。例如,这也是可接受的解决方案: xxOxx Oxx x x x x x x o x O x Ox 规则 …

7
本周四年级数学作业:效率最低的旅行推销员
我女儿的数学作业有以下任务。想象一下,有六个朋友生活在一条名为E,F,G,H,J和K的直线上。他们在直线上的位置如下所示(未按比例): 因此,F从E居住五个单元,从G居住两个单元,依此类推。 您的作业:设计一个程序,该程序以朋友的位置和n为输入,以总长度n个单位的长度来精确地访问每个朋友一次。如果找到它,它应该报告该路径(例如,对于长度17,它可能报告“ E,F,G,H,J,K”,并且如果不存在任何解决方案,则应正常退出。对于它的价值,我完成了Mathematica中271个字节的非解决方案,我怀疑这可能比这更简洁。

4
一元数有多强?
通常,您会得到一个由0到8组成的非进制(基数9)非负整数。但是,此数字中的位数(没有前导零)是一个完美的正方形。 因此,可以将数字排列在正方形网格中(仍保留读取顺序)。 1480(1125以10为基)的示例: 14 80 现在,让这样的一元网格中的每个数字指示运动到另一个网格空间(具有周期性边界条件): 432 501 678 就是说 0 = stay still 1 = move right 2 = move right and up 3 = move up ... 8 = move right and down 因此,如果在1480网格中从4开始,然后向上移动(记住pbc)并向左移动到8,这意味着您将向右和向下移动回到4,从周期2开始一个循环。 通常,此过程一直持续到您达到0或注意到一个循环为止。(0被认为是周期为1的周期。) 在1480的情况下,最终到达4个起始数字中的每个数字的时间段2 2 2 1分别是。 对于更大的网格,这些数字可能大于8,但是我们仍然可以将它们用作新的非二进制数字中的“数字”(简单地将9 ^ n的系数视为数字): 2*9^3 + 2*9^2 + 2*9 + …

6
给定一棵树,生成其Prüfer代码
在 图论一个Prüfer代码是整数的唯一序列,它表示一个特定的树。 您可以使用以下来自维基百科的算法找到一棵树的Prüfer代码: 考虑一个标记树T与顶点{1, 2, ..., n}。在步骤i处,删除标签最小的叶子,并将Prüfer序列的第i个元素设置为该叶子邻居的标签。 (请注意,由于它是一片叶子,因此只有一个邻居)。 当图形中仅保留两个顶点时,应停止迭代。 任务 给定一个带有标签的树作为输入输出,其Prüfer代码。您可以以任何合理的方式接受输入。例如邻接矩阵或您的语言内置图形表示。(您可能不接受输入作为Prüfer代码)。 这是 代码高尔夫球 因此,您应该以最小化源中的字节为目标。 测试用例 这是一些ASCII输入,其输出如下。您不需要支持这样的ASCII输入。 3 | 1---2---4---6 | 5 {2,2,2,4} 1---4---3 | 5---2---6---7 | 8 {4,4,2,6,2,5} 5---1---4 6 | | 2---7---3 {1,1,2,7,3}

3
最小成本流问题
甲流网络是一个有向图G = (V, E)具有源顶点s ϵ V和宿顶点t ϵ V,并且其中每一个边缘(u, v) ϵ E上的曲线图(连接节点u ϵ V和v ϵ V)具有与其相关联的2个量: c(u, v) >= 0,边缘的能力 a(u, v) >= 0,通过边缘发送一个单位的成本 我们定义一个函数0 <= f(u, v) <= c(u, v)为通过给定边的单位数量(u, v)。因此,对于一个给定边缘的成本(u, v)是a(u, v) * f(u, v)。的最小代价流问题被定义为在最小化对于给定的流量所有边缘的总成本d,由下面的量给出: 以下约束适用于该问题: 容量要求:通过给定边的流量不得超过该边的容量(f(u, v) <= c(u, v))。 倾斜对称:当方向相反时,通过给定边缘的流动必须是反对称的f(u, v) = -f(v, u)。 流保护:净流量到任何非汇聚非源节点必须为0(对于每个u ∉ {s, …

2
粉末玩具中打高尔夫球的技巧
玩得开心,“粉玩具”是高尔夫运动中一个有趣的挑战,尤其是在摆球逻辑方面。 使TPT成为挑战的是许多解决问题的方法: Should I use Cellular Automaton rules, SWCH logic, Filt logic, subframe filt logic, and/or wall logic? 这样,TPT高尔夫球技巧的位置将非常有帮助,因此我提出了这个问题。 该线程可能会使用很多缩写。其中很多都是游戏中的元素,因此在Wiki上进行搜索会带给您很多有关它们的信息,例如它们的外观。 这是您可能在此主题中看到的最常见的内容,并附有游戏内描述(及其全名),以供不希望搜索的人使用: SPRK:电力。TPT中所有电子设备的基础是沿着电线和其他导电元件传播的。 过滤:过滤。过滤光子,更改颜色。 ARAY:Ray Emitter。光线碰撞时会创建点。 BTRY:电池。产生无限电。 DRAY:复印机射线。复制前面的一行粒子。 CRAY:粒子射线发射器。创建由其ctype设置的粒子束,范围由tmp设置。 SWCH:切换。仅在打开时进行。(PSCN打开,NSCN关闭) 所有元素清单
9 code-golf  tips  the-powder-toy  code-golf  number  array-manipulation  integer  code-golf  string  decision-problem  boggle  code-golf  array-manipulation  average  code-golf  math  code-golf  decision-problem  restricted-source  code-golf  code-golf  math  primes  code-golf  random  code-golf  tips  perl  code-golf  string  parsing  code-golf  math  number  decision-problem  code-golf  math  number  code-golf  string  alphabet  code-golf  math  geometry  code-golf  interpreter  brainfuck  code-golf  code-golf  decision-problem  boggle  code-golf  math  number  sequence  code-golf  math  code-golf  ascii-art  code-challenge  restricted-source  quine  code-golf  math  decision-problem  number-theory  primes  code-golf  ascii-art  code-golf  integer  graph-theory  chess  code-golf  math  interpreter  code-golf  code-golf  code-golf  ascii-art  code-golf  arithmetic  number-theory  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  code-golf  primes  factoring  encode  code-golf  decision-problem  code-golf  geometry  grid  code-golf  quine  code-golf  matrix  code-golf  matrix  code-golf  code-golf  number  array-manipulation  code-golf  array-manipulation  sorting  code-golf  matrix  code-golf  brain-flak 

1
来临挑战2:当前的保险库突袭!
<<上一页 下一页>> 挑战 现在,圣诞老人终于弄清楚了如何进入他现在的保险库,他意识到,精灵们以某种方式进入了他的仓库并偷走了他的一些礼物!他们还没有弄清楚如何离开金库,所以圣诞老人必须设法抓住他们。圣诞老人和小精灵都有无限的运动能量,但不幸的是,小精灵具有更高的无限能量,因此,如果最终他们到处循环运行,那么小精灵就会获得自由。 给定一个n节点和e边的图形,任意两个节点之间都存在游走,以及精灵和圣诞老人​​的位置,确定圣诞老人在累之前可以抓到多少只精灵。 追逐是基于回合的。在每个周期中,精灵都首先同时移动(它们可以彼此移动并移动到同一节点上),然后圣诞老人将移动。如果圣诞老人移动到与小精灵相同的节点上,那么他已经抓住了那个小精灵。每个小精灵只能在一个步骤中从一个节点移动到其邻居。一开始圣诞老人也是如此,但是对于他遇到的每个精灵,圣诞老人都可以采取进一步的措施。因此,如果圣诞老人抓到了一个小精灵,那么他可以从一个节点移动到其邻居的邻居。这意味着他可以移动到某个节点然后再返回。但是,由于圣诞老人在此期间的运行速度过快,因此他不会抓到任何在中间步骤中经过的精灵(因此,如果他在A上,A与B连接,B与C连接,则有一个小精灵B,然后圣诞老人从A-> B-> C移出,尚未捕获小精灵)。但是,圣诞老人不必一次移动那么多步骤。他每回合最多移动1 +(被抓住的精灵数量)。 请注意,所有小精灵每转一圈都必须移动,如果一个小精灵移动到圣诞老人的节点上,就会被抓住。 一开始,所有实体(精灵,圣诞老人)都会位于不同的节点上。 规格和规则 理论上,您的程序应可用于任何大小的输入。输入将以图形,精灵的位置和圣诞老人​​的位置给出。您可以采用任何合理格式的图形(节点列表+边列表,边列表,邻接矩阵,循环符号等),并且可以以与您的图形输入格式一起使用的任何合理格式来放置位置(索引在节点列表等中)。输出应为单个正整数,指示圣诞老人可以抓到的最大精灵数量。 测试用例 这些是作为边的列表和位置的节点编号给出的。 Input -> Output [(0, 1), (1, 2)], [0, 2], 1 -> 2 # Easy win for Santa, the elves get themselves caught :P [(0, 1), (1, 2), (2, 3), (3, 0)], [0, 1], 2 -> …

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 

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.