Questions tagged «graph-theory»

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

2
绘制节点网络
最多有26个节点的网络(根据您的意愿命名A为Z或a以命名z)。每对节点都可以连接或断开。一个节点最多可以连接四个其他节点。您的任务是在2D图中绘制网络。将给出输入以使此任务成为可能(请参见输出部分中的更多约束)。 格式 输入项 成对的字母(按您的意愿A发送Z或a发送给z您)。它们没有以任何顺序排序。 可选-对数 输出量 ASCII图,显示节点之间的实际链接。节点由ato z或Ato 给定Z。使用-了横向的联系和|垂直链接。链接的长度可以是任意(非零),但它们应为水平/垂直的直线,且不会弯曲。如果不破坏图片,可以添加空格。 您可能无法使用有助于图形布局的内置函数。可能允许使用其他与图形相关的内置程序(尽管不带内置程序的解决方案会受到更多欢迎)。最短的代码胜出。 样本数据 输入项 A B B F B L F K L K K R K S R P S J S P J A T V V N 输出量 A - B - F T - V | | | …

9
打印所有3 x 3坚固的正方形
坚固的正方形(类似于魔术正方形)是整数1到N 2在N by N网格上的排列,以使每2 by 2子网格具有相同的总和。 例如,对于N = 3,一个坚固的正方形是 1 5 3 9 8 7 4 2 6 因为四个2 x 2子网格 1 5 9 8 5 3 8 7 9 8 4 2 8 7 2 6 全部加起来等于23, 23 = 1 + 5 + 9 + 8 = 5 + …
24 code-golf  number  arithmetic  number-theory  grid  code-golf  binary  code-golf  popularity-contest  code-golf  chemistry  code-golf  code-golf  date  code-golf  quine  chess  code-golf  hexadecimal  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  math  date  code-golf  typography  code-golf  string  code-golf  string  code-golf  code-golf  math  arithmetic  array-manipulation  grid  code-golf  puzzle-solver  code-golf  music  audio  code-golf  decision-problem  code-golf  geometry  code-golf  number  bitwise  code-golf  string  metagolf  hexagonal-grid  code-golf  string  code-golf  sorting  popularity-contest  code-golf  game  sequence  base-conversion  binary  code-golf  decision-problem  graph-theory  natural-language  code-golf  math  parsing  optimized-output  code-golf  array-manipulation  code-golf  graphical-output  image-processing  tiling  code-golf  graph-theory  path-finding  chess  code-golf  code-golf  balanced-string  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  statistics  code-golf  chemistry 

12
醉汉之旅之家
醉汉之旅之家 在这个挑战中,您将要编写一个程序,模拟一个酒鬼从酒吧回家的途中。 输入: 输入将是一个邻接矩阵(表示一个有向图),该矩阵表示酒鬼可以采取的路径。在每个位置,酒鬼都会随机选择一条路径(每个选项的机会大致相等,并且与先前的选择无关)。 假设酒鬼总是从柱子开始(邻接矩阵的第一行)。 如果酒鬼陷入死胡同,可以认为他要么回家了,要么因公共陶醉而被捕,程序应该返回他的路。 可以假设该图将始终包含至少一个死角。 还可以假定酒鬼将始终能够退出酒吧(第一行将不全为零),并且如果酒鬼将卡在某个位置,则该行将用全零表示。 输出: 输出将是酒鬼试图回家的道路。位置的值可以为零或一个索引。 例子: Input [1,0,1,1] [0,0,0,0] [1,0,0,0] [1,1,1,1] Possible Outputs [0,2,0,3,2,0,0,3,1] [0,3,0,3,1] Input [0,1,1,1,0,1] [1,0,1,0,1,1] [0,0,0,0,0,0] [0,0,0,0,0,1] [1,0,0,0,0,0] [0,0,0,0,0,0] Possible outputs [0,1,5] [0,5] [0,1,4,0,2] [0,3,5] [0,3,0,1,4,0,5] Deterministic path: Input [0,0,1,0] [0,0,0,1] [0,1,0,0] [0,0,0,0] Output [0,2,1,3]

1
是仙人掌吗?
在图论中,仙人掌是一个连通图,因此图中任何不同的两个简单循环最多共享一个顶点。 这是一个仙人掌,带有3个简单的虚线框。 下图类似于上图,但不是仙人掌,因为用红色标记的两个顶点由两个简单的循环共享。 事情可能会变得有些棘手,例如下图: 可能看起来像仙人掌,但事实并非如此。可以通过突出显示以下周期来表明这一点: 该循环与图中许多更明显的循环共享一个以上的点。 定义 连通图是这样的图:在任意两个顶点之间至少存在一条路径。 一个简单的循环是图形上一条路径,该路径在相同的顶点处开始和结束,并且访问一个顶点不超过一次。 简单图是无向的,无权的图,因此没有一个顶点通过一个以上的边彼此连接,并且没有顶点与其自身连接。简单图是图的最基本类型,也是大多数人说图时的意思。 任务 以一个简单的图作为输入,并确定它是否是仙人掌图。您应该输出两个不同的值,一个为True,另一个为False。您可以采用您认为合适的任何格式输入。 这是代码高尔夫球,因此您应尽量减少答案的字节数。 测试用例 测试用例作为邻接矩阵

5
得分围棋
进行围棋比赛得分并非易事。过去,关于如何设计规则以涵盖可能发生的所有奇特拐角案例的争论一直存在。幸运的是,在此任务中,您不必做复杂的工作,如生死攸关或检测出关。在此任务中,您必须实现一个根据Tromp-Taylor规则在没有Komi的情况下为游戏评分的程序。 计分程序非常简单: 如果P色的相邻点(从P到C点)之间存在(垂直或水平)相邻点的路径,则称为P点(未着色的C点)到达C 点。 ,再加上仅达到她的颜色的空白点数。 例如,考虑以下电路板。X,O并-表示黑色,白色和无色交叉点: - - - X - O - - - - - - X - O - - - - - - X - O - - - - - - X O - - O - X X X O - O O - …

24
ogl-edocf挑战
输入项 一个非空的字符串,由范围内的ASCII字符组成。[ 32..126 ][32..126][32..126] 输出量 通过对输入字符串进行连续旋转来获得输出。 对于[a-zA-Z]输入字符串中的每个字母(),从左到右: 如果字母是大写字母,请将其前面的所有字符向左旋转一个位置 如果字母是小写字母,请将其前面的所有字符向右旋转一个位置 例 输入:“ Cb-Ad” 第一个字母是“ C ”。我们应该向左旋转,但是这个“ C ” 之前没有字符。因此,没有任何旋转。 下一个字母是“ b ”。我们向右旋转“ C ”。因为它是单个字符,所以它保持不变。 字符“ - ”不会触发任何旋转,因为它不是字母。 下一个字母是“ A ”。我们轮流“ CB- ”到左边,这给“ 公元前广告” 第四个也是最后一个字母是“ d ”。我们向右旋转“ b-CA ”,即为“ Ab-C d” 因此,预期输出为“ Ab-Cd ”。 规则 您可以将输入作为字符串或字符数组进行输入-根据您的语言,输入内容可能相同也可能不同。 您也可以输出字符数组而不是字符串。 这是ogl-edocf 代码高尔夫 测试用例 "cbad" -> …
22 code-golf  string  code-golf  string  code-golf  string  parsing  brainfuck  code-challenge  python  hello-world  error-message  code-golf  string  code-golf  number  integer  counting  subsequence  code-golf  string  cipher  code-golf  array-manipulation  arithmetic  integer  matrix  code-golf  math  sequence  code-golf  restricted-source  pi  popularity-contest  cops-and-robbers  polyglot  popularity-contest  cops-and-robbers  polyglot  code-golf  file-system  king-of-the-hill  code-golf  number  sequence  integer  rational-numbers  string  code-challenge  source-layout  code-golf  ascii-art  king-of-the-hill  code-golf  array-manipulation  sorting  code-golf  string  code-golf  restricted-source  source-layout  tips  math  code-challenge  permutations  logic-gates  code-golf  number  random  integer  code-golf  math  code-golf  math  number  decision-problem  king-of-the-hill  python  board-game  code-challenge  brainfuck  busy-beaver  code-golf  number  cops-and-robbers  polyglot  obfuscation  answer-chaining  code-golf  number  integer  conversion  code-golf  string  parsing  code-golf  ascii-art  number  king-of-the-hill  javascript  code-golf  source-layout  radiation-hardening  code-golf  array-manipulation  matrix  code-golf  string  graph-theory  code-golf  array-manipulation  decision-problem  code-golf  string  ascii-art  code-golf  string  code-golf  array-manipulation 

13
做NP:找到最大的集团
背景 在撰写本文时,P与NP的问题仍未解决,但是您可能已经听说过Norbert Blum的新论文,声称P!= NP已被证明是错误的(但我们将会看到)。 本文讨论的问题是集团问题。至少这是我在报纸上读到的,如果我错了,请更正我,但是无论如何,我希望您编写一个解决以下变体的程序: 任务 假设我们有一所大学校,有很多学生。每个学生在这所学校都有一些朋友。一个集团的学生是仅由学生谁是朋友与一组的每个其他成员。 您的程序将接收成对的朋友,作为他们的输入。从这些信息中,程序必须找到最大的集团的规模。学生用整数ID标识。 如果您更喜欢数学术语,这意味着您将获得一个无向图的边缘,该边缘分别由两个节点标识。 输入项 您的输入将是一个正整数对的非空列表,例如[[1,2],[2,5],[1,5]]。您可以采用任何明智的形式来输入此输入,例如,作为数组的数组,作为文本行,每个文本行包含两个数字,等等... 输出量 预期的输出是一个数字n >= 2:最大集团的规模。与上面的例子中的输入,其结果将是3,因为所有的学生(1,2和5)是朋友彼此。 测试用例 [[1,2]] => 2 [[1,2],[3,1],[3,4]] => 2 [[1,2],[2,5],[1,5]] => 3 [[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]] => 4 (the largest clique is [1,3,4,5]) [[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]] => 3 (the largest clique is [23,764,1073]) [[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52], [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565], [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860], [1296,1860],[1860,52],[711,1639]] => 6 (the largest clique …

10
两种颜色的重叠圆
编写一个程序或函数,以您选择的合理格式接收以下输入: 两个正整数W和H定义要生成的图像的宽度和高度。 两种RGB颜色C1和C2将用于为图像着色。 形式的三元组列表,(r, x, y)用于定义在图像平面中具有半径r和中心的圆x, y。r是一个正整数,x并且y是任何整数。图像的左上像素为0, 0,x轴向右增加,y轴向下增加。 输出尺寸为W x H的图像,并用C1和C2着色,以使所有重叠圆所定义的两个相邻区域都不是同一颜色。 例如:如果输入是 W = 300 H = 200 C1 = (255, 200, 0) C2 = (128, 0, 255) Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162) 那么圆边界看起来像这样: 圆圈创建的图像中有六个不同的连续区域。每个区域必须用C1(黄色)或C2(紫色)上色,以使没有两个相邻的区域具有相同的颜色。 有两种方法可以做到这一点,它们唯一的区别是可以交换颜色: 因此,对于示例输入,这两个图像中的任何一个都是有效输出。 喜欢的东西这是因为两个黄地区彼此相邻无效的输出。 您的输出图像应遵循以下准则: 除了C1和C2,第三种中性色(例如黑色或白色)也可以用于圆形边界,只要它们的厚度不超过5像素即可。(上面的示例中存在黑色的1像素厚边界。) 但是,圆边界不是必需的。这些区域可以彼此直接相邻: …

2
高峰体验:快速参观所有高峰
我站在x 地图中以数字表示高度的点(0,0)上,例如:HW 1132 2221 1230 # H = 3, W = 4 我想体验每一个山峰的美景,在这种情况下,这里是海拔很高的地区3。但是,爬山并非易事,而且我也没时间了。 挑战 面临的挑战是找到最快的途径参观所有的山峰然后回来。 最短的程序获胜。 输入项 H,W-地图的高度和宽度(整数)(可选,可以是列表/元组或两个单独的整数输入) 以任何方便的格式(2D列表,用换行符分隔的字符串等)H以W数字集(0- 9)形式给出的地图。 输出量 参观每个高峰并回到起点的最短时间(整数) 条件 给定区域的高度由从0到的数字表示9。 “高峰”由海拔最高的区域定义。 路径必须在左上角(0,0)区域开始和结束。 您只能移动到与当前区域相邻的区域,并且不能对角移动。 如果高度没有变化,则从一个区域移动到另一区域需要3分钟。 爬上需要11分钟;也就是说,要从一个区域移动到另一个1单位正好更高的区域。 爬下需要2分钟;就是说,从一个区域移动到另一个1单位正好较低的区域。 您不能将区域移到1比您所在的位置高或低的地方。(例如,您不能从一个高海拔的区域1到另一个有高海拔的区域3) 保证通往所有山峰的道路 最大峰数为15。 样品 输入项 4 5 32445 33434 21153 12343 输出量 96 说明 您从左上角开始3。你必须访问两个5是位于在s (0,4)和(3,3)回来到3在(0,0)在最短的时间内。 3 2 4->4->5 V …

1
依赖图可视化
挑战的目标是编写一个程序,该程序以树的形式可视化依赖图。尽管在这种情况下“依赖关系图”仅意味着有向图,但此处描述的可视化方法最适合描述某些依赖关系的图(作为练习,在阅读了挑战之后,尝试反转其中一个的方向示例图,看看结果是否同样有用。) 程序的输入由一个或多个目标定义组成,这些目标定义是以下形式的行: Target DirectDependency1 DirectDependency2 ... ,定义目标及其相关的直接依赖项(如果有)。目标及其依赖关系统称为对象。如果对象仅显示为依赖项,而不显示为目标,则它没有依赖项。输入中出现的所有对象的集合称为Γ。(有关输入格式的更多详细信息,请参见“输入和输出”部分。) 对于任意一对对象A和B,我们说: 对于某些对象 B',如果 A直接依赖于 B,或者 A直接依赖于 B',而 B'依赖于 B,则 A依赖于B(等效地, B是A所必需的); 如果 A依赖于 B,而 B不依赖于 A,则 A适当地依赖于B(等效地, A适当地要求B)。 我们在Γ中定义了一个人为对象oo such,使得ʀooᴛ并不是任何对象都直接需要的,并且对于所有对象A,andooᴛ直接且仅当A在Γ中且A不是时才依赖于A通过在Γ的任意对象正确需要(换句话说,ʀooᴛ直接取决于甲如果没有其他对象取决于甲,或如果依赖于所有对象甲还需要由甲)。 输出树 我们构造一棵树,其根节点为ʀooᴛ,并且每个节点的子节点都是其直接依赖项。例如,给定输入 Bread Dough Yeast Dough Flour Water Butter Milk ,结果树是 ,或者以ASCII形式, ʀooᴛ +-Bread | +-Dough | | +-Flour | | +-Water | …

7
家谱求解器
这是加尔文的爱好给社区留下的几个挑战之一。 采取“形式描述的家谱”文件,其格式如下: [ID] [mother ID] [father ID] [gender] [full name] 例如,它描述了http://en.wikipedia.org/wiki/Cousin上的第一棵家谱: 1 ? ? M Adam 2 ? ? F Agatha 3 ? ? M Bill 4 2 1 F Betty 5 2 1 M Charles 6 ? ? F Corinda 7 3 4 M David 8 6 5 F …

23
指针跳
假设我们有一个长度为n的数组psps\texttt{ps},其中的指针指向该数组中的某个位置:“ 指针跳跃 ”过程将把每个指针都设置为其指向的指针所指向的位置。nnn 出于此挑战的目的,指针是数组元素的(从零开始)索引,这意味着数组中的每个元素都将大于或等于000且小于nnn。使用此表示法,可以将过程表述为: for i = 0..(n-1) { ps[i] = ps[ps[i]] } 这意味着(针对此挑战),指针将按顺序进行就地更新(即,先降低索引)。 例 让我们来看一个例子,ps = [2,1,4,1,3,2]ps = [2,1,4,1,3,2]\texttt{ps = [2,1,4,1,3,2]}: i = 0:the element at position ps[0] = 2 points to 4→ps = [4,1,4,1,3,2]i = 1:the element at position ps[1] = 1 points to 1→ps = [4,1,4,1,3,2]i = …

3
遵循不完整的指示
您的一位朋友已为您指示了镇上最好的餐厅。这是一系列的左转和右转。不幸的是,他们忘了提到在这些转弯之间需要走多长时间。幸运的是,您有一张包含所有餐厅的街道地图。也许您能弄清楚他们的意思是哪家餐厅? 输入项 该地图以ASCII字符的矩形网格形式给出。.之路,#是一个建筑,A到Z是各种餐馆。您从左上角开始,向东行驶。例: .....A .#.### B....C ##.#.# D....E ##F### 您朋友的说明将以(可能为空)字符串或包含Ls和Rs 的字符列表的形式给出。 输出量 您可以走与输入字符串中的左转和右转相对应的任何路径,前提是您在每个位置之前和末端至少向前走了一步。特别是,这意味着如果字符串以R您开头,则不能在最左边的列中立即向南移动。这也意味着您不能当场旋转180°。 除了最后到达的那栋建筑物或餐厅,您不能漫步。您可以假设左上角为.。 您应该将您朋友指示下可以到达的所有餐馆输出为字符串或列表。 您可能会认为这些说明将导致至少一家餐馆。例如,一张单张L对于以上地图无效。 上图的一些示例: <empty> A R F RR B,D RL C,E RLRL E RLLR C RLLL B RLRR D RLRRRR A,C RLLLRLL B 请特别注意R达不到B。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 适用标准代码高尔夫球规则。 其他测试用例 这是一张较大的地图,由Conor O'Brien提供(我对此做了一些修改): .......Y..........................###### .####.....#.##....##..######....#.###.## B.........#.##.#..##....##...##.#.#P...# .#.#####..#.##..#.##....##.#....#.####.# .#.#...C..#.##...G##..#.##.#....#.#....# .#.#.#.#..#.####.###.#..##.#....#.#.NO.# .#.#A#.#..#.##...F###...##.#.##.#......# …

2
这些树是同构的吗?
介绍 在这个挑战中,您的任务是编写一个程序,该程序确定两个给定的树是否同构。树表示有向无环图,其中除根节点之外,每个节点都只有一个输出边缘。如果可以通过重命名节点将一棵树转换为另一棵树,则两棵树是同构的。例如,两棵树(每个边缘朝上) 0 0 /|\ /|\ 1 3 4 1 2 5 |\ /| 2 5 3 4 很容易看出来是同构的。 我们L通过以下方式将树编码为非负整数列表。树的根具有标签0,并且还具有节点1,2,...,length(L)。每个节点i > 0都有一个传出边缘L[i](使用基于1的索引)。例如,列表(在元素下给出索引) [0,0,1,3,2,2,5,0] 1 2 3 4 5 6 7 8 编码树 0 /|\ 1 2 8 | |\ 3 5 6 | | 4 7 输入项 您的输入是两个非负整数列表,以本机格式或您的语言给出。它们以上面指定的方式编码两棵树。您可以假设以下条件: 他们不是空的。 它们具有相同的长度。 …

1
恐怖电影搜寻派对
剧情:吉米失踪了;我们必须找到他。我们应该分手。 剧情转折:吉米已经死了。 但是,我们的演员不知道这一点,因此他们仍然需要搜索整个区域。有N列x M行(1 <= M,N <= 256)的单元格网格,其中任一网格标记为“ S”作为起点“”。代表开放空间,“#”代表障碍物。这是地图。 有0 <= p <= 26个Costars,0 <= q <= 26个Extras和1个star。最初,每个人都在标记为S的单元格中。 规则 每个人的视线半径如下所示: ... ..... ..@.. ..... ... 星星用“ @”表示,古斯塔用大写字母表示,以“ A”开头,多余部分用小写字母表示,以“ a”开头。最初,起点周围的视线半径已标记为已搜索。如果这构成了地图的整个开放空间,则游戏结束。每转,按以下顺序: 每个人同时使国王移动(要么静止不动,要么移动到8个相邻牢房之一)。 每个人周围视线半径内的所有像元都算作搜索。 如果肋骨看不见别人,她就会死。如果一个额外人员看不到肋骨,星星或至少2个其他额外人员,他会死。这些事件同时发生 -也就是说,单回合就没有死亡的连锁反应;检查以上条件,每个要死的人都会立即死亡。 如果已经搜索了地图上的所有开放空间,则搜索结束。 笔记 任何时候都可以有多个人在同一广场上,这些人可以看到彼此。 障碍永远不会阻碍视线,只会阻碍运动。人们可以在熔岩上看到彼此,呃...熔岩? 确保地图上的开放空间由国王移动连接。 最初的“ S”也被认为是开放空间,而不是障碍物。 降落在开放空间上的任何国王举动均有效。例如,以下举动是合法的: .... .... .@#. ---> ..#. .#.. .#@. .... .... …

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.