Questions tagged «graph-theory»

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

4
查找色号
令人惊讶的是,我们在图形着色方面还没有遇到任何挑战! 给定一个无向图,我们可以为每个顶点赋予一种颜色,使得没有两个相邻的顶点共享相同的颜色。实现此目的所需的最小数量的独特颜色χ被称为图形的色数。 例如,以下显示使用最少数量的颜色的有效着色: (在维基百科上找到) 因此,该图的色数为χ= 3。 编写一个程序或函数,给定多个N <16的顶点(从1到N),并给出一个边列表,确定一个图的色数。 只要输入未经过预处理,您就可以接收输入并以任何方便的格式产生输出。也就是说,您可以使用字符串或数组,可以在字符串中添加方便的定界符,也可以使用嵌套数组,但是无论您做什么,扁平化的结构都应包含与以下示例相同的数字(顺序相同)。 您可能不使用内置的图论相关功能(如Mathematica的ChromaticNumber)。 您可能会认为该图没有环(将顶点与其自身连接的边),因为那样会使该图不可着色。 这是代码高尔夫球,最短的答案(以字节为单位)获胜。 例子 您的程序必须至少在合理的时间内解决所有这些问题。(它必须正确解决所有输入,但是较大的输入可能需要更长的时间。) 为了缩短篇幅,在以下示例中,我在一个逗号分隔的列表中显示了边缘。如果愿意,您可以换行或使用一些方便的数组格式输入。 三角形(χ= 3) 3 1 2, 2 3, 1 3 6个顶点的“环”(χ= 2) 6 1 2, 2 3, 3 4, 4 5, 5 6, 6 1 5个顶点的“环”(χ= 3) 5 1 2, 2 3, 3 4, 4 5, …

4
大使和翻译
两名参加联合国会议的大使想互相讲话,但不幸的是,每个大使只说一种语言,而且他们不是同一种语言。幸运的是,他们可以与多位翻译交流,他们每个人都能听和说几种语言。您的任务是确定最短的翻译链(因为您希望尽可能减少翻译中的损失),从而使两位大使能够相互交谈。 编码 输入:两种语言,即2个字母的小写字符串(每个大使的语言)和语言列表(每个可用翻译器一个列表) 您也可以输入整数而不是2个字母的代码。 输出:按索引或值排列的一系列翻译,是允许两个大使进行交流的最短翻译链中的任何一个。如果没有有效的翻译链,则行为未定义。(您可能会崩溃,输出任意值或表明错误) 一个有效的翻译链是第一个翻译说一种大使的语言,第二个和随后的翻译与前一个翻译共享至少一种语言,最后一个翻译说另一种大使的语言。 例子 使用基于零的索引: es, en, [ [es, en] ] ==> [0] en, en, [] ==> [] en, jp, [ [en, zh, ko, de], [jp, ko] ] ==> [0, 1] es, ru, [ [gu, en, py], [po, py, ru], [po, es] ] ==> [2, 1] fr, …

5
一举两得
正如我们在这个问题中看到的那样,可以用广义Minesweeper的简单连接词来表示复杂的逻辑语句。但是,广义扫雷器仍有冗余。 为了避免这些冗余,我们定义了一个名为“ Generalized-1 Minesweeper”的新游戏。 Generalized-1 Minesweeper是在任意图形上播放的Minesweeper版本。该图具有两种类型的顶点,即“指示器”或“值”。值可以是开或关(地雷或哑巴),但玩家不知道其状态。指示器会告诉您,一个相邻的电池正好在(地雷)上。指标本身不算地雷。 例如,下面的通用扫雷板告诉我们,单元格A和B要么都是地雷,要么都不是地雷。 (在图中,指示器以灰色标记,而值则为白色) 与普通的扫雷器不同,在常规的扫雷器中,单击关闭的值即可显示指标,而在通用扫雷器中则没有这种机制。玩家只需确定图表的哪些状态可以满足其指标。 您的目标是制作一辆2Generalized-1扫雷车。您将在Generalized-1 Minesweeper中构建一个结构,以便有8个特定的像元,其所有可能的值配置都恰好有两个像元。这意味着它的行为与2传统扫雷器的行为完全相同。在编写解决方案时,您不应该在意价值单元格的具体价值。(在回答H.PWiz的问题时,允许某些值单元可以从状态中推论得出) 计分 您的答案将由最终图形中的顶点数减去8(对于8个输入)得到评分,得分越低越好。如果此标准中有两个答案,则平局决胜局将为边数。

14
用零填充文件
今天的任务是获取一个现有文件,并将零添加到该文件,直到达到一定大小为止。 您必须编写一个程序或函数,该程序或函数采用当前目录中文件的名称f和字节数b。在保留的原始内容的同时f,您必须在末尾写入零(空字节,而不是ascii 0),以便其新大小为b字节。 您可以假设名称中f仅包含字母数字的ascii,您对此具有完全权限,其初始大小不大于b,但可能与一样大b,并且有无限的可用磁盘空间。 您可能不会假设f它是非空的,或者它不已经包含空字节。 执行结束后,不应修改其他现有文件,也不应该存在新文件。 测试用例 f的内容| b | f的结果内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

3
网格可以弯曲。你多久了?
考虑在W宽x H高的文本网格上绘制一条简单的,开放的二维曲线,其中X该曲线.表示曲线的一部分,表示空白,不使用其他任何字符。 每个网格空间都有8个相邻的网格空间,即Moore邻域。边界之外的网格空间被认为是空的。 网格包含曲线,如果有且只有一个X OR,如果有一个以上的X地方: 正好2个X只有一个相邻X。这些是曲线的端点。 X除端点外,每个端点都恰好相邻2 Xs。这些构成了曲线的主体。 例如,此W = 9而H = 4的网格包含一条曲线: ....X.... .X.X.X.X. X..X..X.X .XX.....X 同样,这些网格(W = 4,H = 3)具有曲线: .... .X.. .... .... .X.X .... X..X ..X. XX.. X.X. ..X. .XX. .X.. .... .... 但是,这些网格不包含曲线: .... .XX. ...X XX.. .... X.X. .... X..X ..XX XX.. .X.X .X.. …

2
解释基普尔!
介绍 Kipple是Rune Berg于2003年3月发明的基于堆栈的深奥编程语言。 Kipple有27个堆栈,4个运算符和一个控制结构。 堆栈 堆栈被命名为a- z并包含32位带符号整数。还有一个特殊的堆栈,@使输出数字更加方便。当将数字压入时@,实际上将压入该数字的ASCII值。(例如,如果您将12推到@,它将推49,然后推50。@) i在执行程序之前,将输入压入输入堆栈。解释器将i在执行之前要求存储值。执行完成后,输出堆栈上的所有内容o都会弹出以ASCII字符形式输出。由于这是Kipple唯一的IO机制,因此无法与Kipple程序进行交互。 经营者 操作数可以是堆栈标识符或带符号的32位整数。 推送:>或< 语法:Operand>StackIndentifier或StackIndentifier<Operand Push运算符将操作数向左移并将其推入指定的堆栈。例如,12>a将值12推入stack a。a>b将从堆栈中弹出最高值a并将其推入堆栈b。弹出空堆栈总是返回0 a<b相当于b>a。a<b>c从弹出最高值,b并同时推入c和a。 加: + 句法: StackIndentifier+Operand Add运算符将堆栈上最顶层项目和操作数之和压入堆栈。如果操作数是堆栈,则从中弹出值。例如,如果堆栈的最高值为a1,a+2则将3压入堆栈。如果a为空,a+2则将2推入。如果堆叠的最值a和b是1和2,然后a+b将从栈中弹出的值2 b和3推入堆栈a。 减去: - 句法: StackIndentifier-Operand 减法运算符的工作方式与加法运算符完全相同,只是它减去而不是加法。 明确: ? 句法: StackIndentifier? 如果最上面的项目为0,则Clear运算符将清空堆栈。 解释器将忽略操作符旁边不存在的所有内容,因此以下程序将起作用:a+2 this will be ignored c<i。但是,添加注释的正确方法是使用#字符。#执行前,a 和行尾字符之间的所有内容都将被删除。ASCII字符#10在Kipple中定义为行尾。 操作数可以由两个运算符共享,例如a>b c>b c?可以写为a>b<c?。 该程序1>a<2 a+a将导致a包含值[1 4](从下到上),而不是[1 3]。对于-操作员也是如此。 控制结构 Kipple中只有一种控制结构:循环。 句法: (StackIndentifier code …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

7
在超立方体的边缘
您的工作将是编写一个函数或程序,该函数或程序将使用整数n>0作为输入并输出n三维超立方体的边缘列表。在图论中,边定义为连接的两个顶点(或顶点,如果愿意)。 例子1 一维超立方体是一条线,具有两个顶点,我们将其称为a和b。 因此,输出将是: [[a, b]] 例子2 4维超立方体(或tesseract)由32条边组成,其图形如下所示 和输出看起来像这样 [[a, b], [a, c], [a, e], [a, i], [b, d], [b, f], [b, j], [c, d], [c, g], [c, k], [d, h], [d, l], [e, f], [e, g], [e, m], [f, h], [f, n], [g, h], [g, o], [h, p], [i, …

4
使用“与非”门构建一个4-vertex Connectedness Tester
阿连接图形是包含任意两个顶点之间的路径的曲线图。 挑战 建立一个[2-input NAND-gate]电路,确定是否连接了4-vertex图。 (一个门的2个输入可以是相同的输入位或另一个门。) 如果已连接图形,则输出True,否则输出False。 输入值 具有4个顶点的简单图的六个可能的边: [ 0 ë 1,0 ë 2,1 ë 2,0 ë 3,1 ë 3,2 ë 3 ] 其中, e b表示顶点a和b之间是否存在边 连接等于以下条件: 如果少于3个输入为True,则输出False。 如果三个以上输入为True,则输出True。 如果恰好3个输入为True,并且它们形成一个三角形,则输出False。 否则,输出True。 使用最少门的答案将获胜。结将被 最低的电路深度(从输入到输出的最长路径的长度)破坏 。

3
锁和钥匙游戏
有n个框,编号为1-n。每个盒子都被锁定,因此只能通过一种相应类型的钥匙(也编号为1-n)打开它。这些密钥随机散布在框中(一个盒子可以具有任意数量的密钥,一个密钥可以具有任意数量的重复项),然后关闭所有盒子。许多盒子中也锁着一个宝物(编号0)。 您已雇了一个锁匠来取回所有宝藏。他为打开的每个盒子收费。打开一个已经有钥匙的盒子是免费的。 输入是每个框的内容。您可以决定输入的格式。 输出获得宝藏所需的最低成本。 笔记 您的算法可能会花费很长时间,但这无关紧要。 最短的代码获胜。 无需担心无效输入。 样本数据 第i行代表框i中显示的键。 输入值 2 0 3 4 0 5 6 0 6 0 输出量 1 输入值 2 0 3 0 4 0 6 5 0 输出量 3 输入值 2 4 0 3 0 1 0 6 5 0 输出量 2 输入值 1 …

1
图中的最短路径
编写程序以绘制图形(从标准输入或文件中选择),并在图形中找到最短路径。 图形使用以下格式指定: A---S F--T | / \ | | / 5 0 |/ \| D----3--E A-Z: nodes in the graph -|/\: edges in the graph 0-9: weights on the edges <space>: all the holes 所有边缘都是无方向的,并沿8个基本方向之一(即无弯曲)放置。边缘可以选择包含0到9的权重。该权重不会在将边缘连接到节点的最后一个符号上(即,边缘必须至少具有3个符号才能包含权重)。未加权边缘的默认权重为1。 您的代码应计算节点之间的最短路径S,T并打印长度和路径,如下所示: 5:SDEFT 最短的正确程序获胜。

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

7
它是线性树吗?(第一版)
背景 未标记的树可能如下所示: o / | \ o o o | / \ o o o 为了线性化这棵树,我们首先用每个o子节点的数量标记每个节点: 3 / | \ 1 0 2 | / \ 0 0 0 然后将数字以呼吸优先的方式写在列表中,即逐行从左到右: [3, 1, 0, 2, 0, 0, 0] 这是上面树的唯一且明确的表示,这意味着没有两个不同的纯树将具有相同的线性化,并且我们可以从列表中重建原始树。 尽管每棵树都对应于一个特定的整数列表,但并非每个整数列表都代表一个有效的线性化树:例如,[2, 0, 0, 0]它并不代表一个有效的树,如果我们尝试对其进行去线性化,则最终得到该树 [2,0,0,0] -> 2 [0,0,0] -> 2 [0,0] -> …

4
DAG是过渡传递吗?
给出此挑战的目标是有限有向无环图(DAG),确定该图是否为传递式约简。 关于什么是DAG和传递减少的简要说明: DAG是具有定向边的图(即,您只能在该边上沿一个方向行进),这样,给定图上的任何起始节点,就不可能返回到起始节点(即,没有循环)。 在给定任何起始节点的情况下,如果可以通过任意正数的边沿移动到图中的另一个终止节点,则将该终止节点定义为可从起始节点到达。在一般的DAG中,可能存在从起始节点到目标结束节点的多条路径。例如,使用以下菱形图: 要进入节点D从A,你可以采取的路径A->B->D或A->C->D。因此,D可从到达A。但是,没有路径可以B从node到达节点C。因此,B无法从node到达节点C。 将图的可达性定义为图中每个起始节点的可达节点列表。因此,对于同一示例菱形图,可达性为: A: [B, C, D] B: [D] C: [D] D: [] 具有与上图相同的可达性的另一个图如下所示: 但是,第二个图比原始图具有更多的边。图的可传递约简是具有最少数量的边且原始图具有相同可达性的图。因此,第一个图是第二个图的传递减少。 对于有限的DAG,可传递折减可确保存在并且是唯一的。 输入值 输入是“列表列表”,其中外部列表​​具有顶点数量的长度,而每个内部列表是离开关联节点的边的数量的长度,并包含目标节点的索引。例如,描述上面第一张图的一种方法是(假设基于零的索引): [[1, 2], [3], [3], []] 您可以在任何任意整数值(例如,基于0或1的索引)处开始第一个节点的索引。 输入可以来自所需的任何输入源(stdio,功能参数等)。只要没有给出其他信息,您就可以自由选择确切的输入格式。例如,如果要从stdio接收输入,则可以使每行都是关联节点的边的列表。例如: 1 2 3 3 '' (blank line) 每个邻接表中的索引不一定要排序,并且可能有多个边连接两个节点(例如:)[[1,1],[]]。您可以假设输入图的连接较弱,并且不包含任何循环(即,它是DAG)。 输出量 如果给定的输入DAG是传递折减,则输出为真,否则为假值。这可以是任何所需的接收器(stdio,返回值,输出参数等) 例子 所有示例均使用基于0的索引。 [[1,2],[3],[3],[]] true [[1,2,3],[3],[3],[]] false [[1,1],[]] false [[1,2,3,4],[5,6,7],[5,8,9],[6,8,10],[7,9,10],[11,12],[11,13],[12,13],[11,14],[12,14],[13,14],[],[],[],[]] true [[5,6,7],[2,3,0,4],[5,8,9],[6,8,10],[7,9,10],[11,12],[11,13],[12,13],[11,14],[12,14],[13,14],[],[],[],[]] true …

1
帮助Jason格式化他的JSON
杰森(Jason)有一个很大的JSON,但它不可读,因此需要美化它。 格式化规格 JSON有4种不同的类型: 数字;只是0-9 弦; 用双引号引起来的"字符串\ 数组;以分隔[],项目以分隔,,项目可以是以下任何类型 对象;以分隔{},格式是key: valuekey是字符串,value是这些类型中的任何一种 间距 数组之间的逗号之间应仅留一个空格 对象应该在键和值之间只有一个空格, : 缩进 每个嵌套级别比上一个缩进2个级别 每个对象键/值对始终在自己的行上。对象缩进 如果数组包含另一个数组或对象,则该数组将缩进多行。否则,数组将保持一行 规则 内置插件,其轻视这个任务都不会允许的。 一如既往,不允许出现标准漏洞 例子 [1,2,3] [1, 2, 3] {"a":1,"b":4} { "a": 1, "b": 4 } "foo" "foo" 56 56 {"a":[{"b":1,"c":"foo"},{"d":[2,3,4,1], "a":["abc","def",{"d":{"f":[3,4]}}]}]} { "a": [ { "b": 1, "c": "foo" }, { "d": [2, …
11 code-golf  string  json  code-golf  number  code-golf  image-processing  code-golf  string  code-golf  number  sequence  arithmetic  number-theory  code-golf  string  code-golf  string  counting  code-golf  ascii-art  code-golf  math  code-golf  tips  code-golf  string  code-golf  grid  graph-theory  code-golf  parsing  interpreter  brainfuck  code-golf  math  arithmetic  number-theory  programming-puzzle  c#  code-golf  dominoes  code-golf  tips  code-golf  string  grid  crossword  code-golf  string  code-golf  kolmogorov-complexity  code-golf  number  sequence  code-golf  string  math  number  number-theory  primes  fastest-code  code-golf  number  code-golf  string  code-golf  ascii-art  number  kolmogorov-complexity  code-golf  string  grid 

2
数树
甲树是一个连接,无向图,没有周期。您的任务是计算给定数量的顶点中有多少棵不同的树。 如果两棵树不是同构的,则认为它们是不同的。如果两个图的各自顶点可以以如下方式配对,则两个图是同构的:当且仅当与另一个图中的那些顶点配对的顶点之间存在边时,一个图中的两个顶点之间才存在边。有关更完整的描述,请参见上面的链接。 要查看大小为1到6的所有不同树的外观,请在此处查看。 您要输出的序列是OEIS上的A000055。 限制:您的解决方案必须在几分钟或更短的时间内才能在输入上运行6。这并不是要消除指数时间算法,而是要消除双指数时间算法,例如对所有边缘集的强行强制。 输入:任何非负整数。 输入可以通过任何标准方式进行,包括STDIN,命令行参数,功能输入等。 输出:顶点数量与输入数量相同的不同树的数量。 输出可以通过任何标准方式进行,包括STDOUT,函数返回等。 示例: 0, 1, 2, 3, 4, 5, 6, 7应返回1, 1, 1, 1, 2, 3, 6, 11。 评分:按字节编码高尔夫。愿最短的代码获胜! 禁止出现标准漏洞。

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.