Questions tagged «graph-theory»

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

7
3x3x3立方体的表面作为图形
您的任务是生成具有54个顶点的图形,每个顶点对应于Rubik立方体上的一个构面。如果相应的小平面共享一个边,则两个顶点之间会有一条边。 规则 您可以选择输出邻接表,邻接矩阵,边列表或任何合理的格式来表示算法中的图形。(在大多数情况下,人类可读的视觉图通常在算法中不是合理的格式。) 您可以使每个顶点彼此相邻,也可以不使它们彼此相邻。 您可以为每个边沿包括两个方向(对于自循环计数为一或两次),也可以为每个边沿精确地输出一次,但不能混合使用。 您可以根据需要对顶点重新编号,跳过一些数字,甚至对顶点使用非数字标签。如果编号不明显,您还应该发布编号,以便其他人可以更轻松地检查您的答案。 这是代码高尔夫球。以字节为单位的最短代码获胜。 输出示例 这是示例中使用的顶点编号: 0 1 2 3 4 5 6 7 8 9 10 11 18 19 20 27 28 29 36 37 38 12 13 14 21 22 23 30 31 32 39 40 41 15 16 17 24 25 26 33 34 …

7
最长超立方体路径
挑战 系统会为您提供两个相同长度的不同位串。(例如000和111。)您的目标是找到一条到另一条的路径,使得: 在每一步,你只改变一位(你可以从去000到任何的001,010,100)。 您不能访问同一位字符串两次。 在这些约束下,路径应尽可能长。 例如,从000到111,我们可以走这条路 000, 001, 011, 010, 110, 100, 101, 111 它访问长度为3的所有8位字符串,因此它必须尽可能长。 规则 有标准漏洞。 您可以将输入作为两个零和一的字符串,或者作为两个零和一的数组,或者作为两个布尔值的数组。 您可能无法将输入取为带有正确二进制表示形式的两个整数(写000和111as 0和as 7无效)。 如果需要,可以将位串的长度作为输入。 您的程序可以通过以下方式输出路径:打印一次访问的位串,或返回访问的位串的数组(每个都与输入格式相同)。 您的输出应包括路径的起点和终点(即您的输入)。 这是代码高尔夫,以字节为单位的最短代码获胜。 例子 0 1 -> 0, 1 10 01 -> 10, 00, 01 or 10, 11, 01 000 111 -> any of the following: 000, 100, …

28
计算逆模量
任务: 输出for的值x,其中a mod x = b有两个给定值a,b。 假设条件 a并且b将始终为正整数 永远不会有解决方案 x 如果存在多个解决方案,请至少输出其中之一。 如果没有任何解决方案,则不输出任何内容或表明不存在任何解决方案。 允许内置(不像其他数学方法那样有趣) 输出始终是整数 例子 A, B >> POSSIBLE OUTPUTS 5, 2 >> 3 9, 4 >> 5 8, 2 >> 3, 6 6, 6 >> 7, (ANY NUMBER > 6) 8, 7 >> NO SOLUTION 2, 4 >> NO …
18 code-golf  math  number-theory  code-golf  number  integer  code-golf  string  code-golf  music  code-golf  arithmetic  array-manipulation  decision-problem  code-golf  math  rational-numbers  code-golf  code-golf  graphical-output  hardware  code-golf  math  number  code-golf  string  parsing  natural-language  code-golf  tips  brain-flak  code-golf  graph-theory  code-golf  number  polynomials  king-of-the-hill  code-golf  ascii-art  kolmogorov-complexity  animation  king-of-the-hill  code-golf  tips  code-golf  ascii-art  code-golf  string  array-manipulation  data-structures  code-golf  math  number  code-golf  string  base-conversion  binary  code-golf  decision-problem  graph-theory  code-golf  math  polynomials  code-golf  kolmogorov-complexity  physics  code-golf  sequence  number-theory  code-golf  math  integer-partitions  code-golf  array-manipulation  random  permutations  code-golf  string  decision-problem 

7
图中最长的周期
给定有向图,输出最长的周期。 规则 允许使用任何合理的输入格式(例如,边列表,连接矩阵)。 标签并不重要,因此您可以对需要和/或期望的标签施加任何限制,只要它们不包含输入中未提供的其他信息即可(例如,您不能要求循环中的节点为标有整数,其他节点标有字母字符串)。 循环是指所有连接的节点序列,除了作为循环开始和结束的节点([1, 2, 3, 1]是循环,但[1, 2, 3, 2, 1]不是循环节点)以外,没有节点重复。 如果该图是非循环的,则最长周期的长度为0,因此应产生一个空输出(例如,空列表,完全没有输出)。 在循环中的节点列表末尾重复第一个节点是可选的([1, 2, 3, 1]并[1, 2, 3]表示相同的循环)。 如果存在多个相同长度的循环,则可以输出其中一个或全部。 允许使用内置函数,但是如果您的解决方案使用一个内置函数,则建议您包括一个不使用琐碎内置函数的替代解决方案(例如,输出所有周期的内置函数)。但是,替代解决方案完全不会计入您的分数,因此它是完全可选的。 测试用例 在这些测试案例中,输入以边列表的形式给出(其中第一个元素是源节点,第二个元素是目的节点),输出是不重复第一个/最后一个节点的节点列表。 [(0, 0), (0, 1)] -> [0] [(0, 1), (1, 2)] -> [] [(0, 1), (1, 0)] -> [0, 1] [(0, 1), (1, 2), (1, 3), (2, 4), …

2
找到针尖的干草堆
要想在大海捞针中寻找针头,您需要找到最大的连续干草堆,其中仅 包含一根 针头。请注意,您不能连接对角线上的单元格,只能连接左/右/上/下。 输入值 'N'(针)和'#'(干草)字符的数组(或您选择的许多用户输入行)。输入仅包含这两个字符,并且每个字符必须至少包含一个。例如: N#N#N #NN## ###N# N##N# 输出量 有效的最大干草堆的大小。对于我们的示例,我们将输出11(有11根干草和一根针)。 # # ## ###N# ## # 这是代码高尔夫球,因此最短的代码获胜。适用标准漏洞限制。 测试用例 左侧输入,右侧可能有最大干草堆 情况1:4 N## ## NN# # #NN N #N# # 情况2:7 ### ### N#N # NNN N ### ### 情况3:10 N###N ### #N#N# #N# #N#N# # # N###N ### 情况4:10 N#N#N …

2
寻找僵局
寻找僵局 对多线程应用程序进行编程时,必须格外小心,以避免在访问共享资源时死锁各个线程。一个死锁发生时线程试图访问要锁定在另一个线程在同一时间,其他线程试图访问由第一锁定的资源的资源。这是简单的情况,但是如果资源链较长,则可能变得更加复杂。 挑战 您应该编写一个程序或函数,以在每个线程访问的资源列表中检测可能的死锁情况。这是代码高尔夫球,因此最短答案以字节为单位。 每个线程是同时启动的,但是之后它们可以按交错的任意组合运行。如果有2个线程,每个4个动作,它可以作为运行(其中,每个数字是具有该ID采取的线程的动作)1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,1,2,1,2,1,1,2,2,2,2,1,1,或任何其它可能的组合。 输入值 您将通过STDIN,函数参数或最接近的替代方法接收字符串列表。每个字符串将采用格式+a -b。该字符串中的每个字符串都表示线程对资源的locking(+)/ unlocking(-)。每个线程之间将有一个---分隔符。确保线程不会尝试锁定已锁定的资源,并且所有线程将在退出前显式解锁其锁定的所有资源。下面是一个示例来演示: +a # Lock resource a +b # Lock resource b -a # Unlock resource a -b # Unlock resource b --- # Thread separator +b # Lock resource b -b # Unlock resource b 输出量 如果输入不包含任何可能的死锁,则输出为假,如果输入包含可能的死锁情况,则输出为假。例如: true false 1 0 都是有效的输出,但是任何明确定义为“真/假”的内容都可以接受。 …

4
帮助琼斯先生享受他的自行车往返
琼斯先生想骑自行车往返。他想以任意顺序参观几个城市,但是他的路线一定不能越过它,因为他不想在假期里两次到同一个地方。因为他真的很喜欢骑自行车,所以路线的长度完全无关紧要,但是他不喜欢在没有目标的情况下绕着风景行驶。他喜欢的路线是从城市直线延伸到另一条,没有任何弯路。 琼斯先生是一位热情的标准高尔夫球手,他希望您找到一个计划,给他计划一个给定的往返城市的计划。输入具有形式A (B|C)。A是一个城市的名字,B并C为它的坐标。您可以假设坐标为正且小于1000。城市的数据集以行分隔。这是一个示例,示例输入可能如下所示: SomeTown(1 | 10) 交流(3 | 4) 无论在哪里(7 | 7) 家(5 | 1) 琼斯先生不是书呆子,他只是想有一个有用的程序。因此,只要满足以下条件,您就可以自行决定输出的外观: 输出是城市地图,并在城市之间绘制了路线。如果正确,则路线不应重叠,应在起点处结束 坐标类似于常规编程:(1 | 1)在NW角。在地图边框上添加标尺,以方便阅读 必须在地图上写下城市名称,但可以随意使用缩写,这在地图上的其他地方都有说明 该地图可以是ASCII图片或图像 保持输出可读 输出可能如下所示: 1234567 1天 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * …

12
这是序列图吗?
甲图形序列是各自是正整数,表示边缘的数目用于在一个节点的序列简单图。例如,序列2 1 1表示一个具有3个节点的图形,其中一个具有2个边,而两个具有一个连接。 并非所有序列都是图形序列。例如,2 1这不是图形序列,因为无法连接两个节点,以使其中一个具有两个边缘。 任务 您将通过任何合理的方法获取整数序列。这包括但不限于整数数组及其大小,无符号整数的链表和双精度向量。您可以假设输入中不会有零。您还可以假设输入从最小到最大或从最大到最小排序。 您必须输出该序列是否为图形序列。真值,否则为假值。 目标 这是代码高尔夫球,目标是最大程度地减少程序中的字节数 测试用例 从大到小排序 -> True 3 3 3 2 2 2 1 1 1 -> True 3 3 2 2 1 1 -> True 3 3 2 -> False 8 1 1 1 1 1 1 1 1 -> True 1 …

8
建立长字链
挑战在于找到最长的英语单词链,其中下一个单词的前3个字符与最后一个单词的后3个字符匹配。您将使用Linux发行版中可用的通用词典,可以在此处下载: https://www.dropbox.com/s/8tyzf94ps37tzp7/words?dl=0 其中有99171个英语单词。如果本地Linux /usr/share/dict/words是同一文件(具有md5sum == cbbcded3dc3b61ad50c4e36f79c37084),则可以使用该文件。 单词只能在答案中使用一次。 编辑:字母必须完全匹配,包括大写/小写,撇号和重音。 有效答案的一个示例是: idea deadpan panoramic micra craftsman mantra traffic fiche 得分为8。 有效词链最长的答案将是赢家。如果出现平局,最早的答案将获胜。您的答案应列出找到的单词链,以及(当然)您编写的用于执行此操作的程序。

1
正则表达式验证正则表达式[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*。;)) 您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。] 我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

9
选择自己的冒险
选择自己的冒险书籍是一种互动文学形式,读者必须做出影响故事结果的决定。在故事的某些点上,读者可以选择多个选项,每个选项都会将读者发送到书中的不同页面。 例如,在幻想环境中,人们可能必须在第14页上决定是通过“跳至”第22页冒险进入一个神秘的洞穴,还是通过跳至第8页来探索附近的森林。这些“跳转”可以表示为成对的页码,例如: 14 22 14 8 在大多数情况下,故事的结局很多,但好的结局很少。目的是引导故事走向一个好的结局。 任务: 给定给定书的“跳跃”列表,您的任务是确定一条导致特定结局的路线。由于这相当容易,所以真正的挑战是用尽可能少的字符来完成。 这就是代码高尔夫。 样本输入(其中1是开始,而100是目标): 1 10 10 5 10 13 5 12 5 19 13 15 12 20 15 100 样本输出: 1 10 13 15 100 输入样例: 15 2 1 4 2 12 1 9 3 1 1 15 9 3 12 64 …

5
从一个数字到另一个数字的最小操作
让我们定义一种操作单个8位值的简单语言。它定义了三个按位运算(代码说明假定为8位value变量): !取反最低有效位(value ^= 1) <包装左移(value = value << 1 | value >> 7) >包装右移(value = value >> 1 | value << 7) 输入: 两个8位数字a和b。由于它们是8位的,因此您可以选择将它们作为字符。 输出: 通过上面定义的三个操作,从a到b的最短方法。您可以返回一个字符串或字符数组,或者为每个操作定义一个常数,不同的值,然后返回这些数组(是的,您也可以说<mean >和>mean <),但是请在回答中说明您的输出格式。 如果有多种同样长的方法,则可以输出其中的任何一个或全部。 规则: 您可以提交程序或功能 适用标准漏洞 每种语言中字节数最少的提交将获胜(不接受任何答案) 没有暴力破解的解决方案(或者至少不仅是暴力破解)可能会让我大吃一惊。 测试用例: 12, 13 => '!' 1, 2 => '<' 254, 253 => '<' 5, 5 => …

4
生成Portmantout!
背景 三年前,这个家伙汤姆·墨菲(Tom Murphy)想到了将Portmanteau的概念扩展到语言中的所有单词,并称其为portmantout(portmanteau加上tout [French for all ])。他将英语定义为108,709个单词的列表,设法找到了具有以下两个属性的611,820个字母序列: 字符串中包含每个英语单词。 字符串中包含任意两个相邻字母的邻域是一个英语单词。 这是指向该portmantout的页面的链接(以及视频说明)。 搬运工 portmantout的两个属性中的第一个很容易理解。第二个可能需要一些解释。 基本上,单词必须重叠。“ golfcode”将永远不会出现在英语的portmantout中,因为那里没有包含“ fc”的词。但是,您可能会在portmantout中找到“ codegolf”,因为“ ego”弥合了差距(所有其他字母对都在“ code”或“ golf”中)。 你的任务: 编写一个程序或函数,该程序或函数需要一个字符串列表并返回该列表的所有portmantout。 此Python 3代码将验证portmantout。 测试用例 所有列表都是无序的;那是, {"code", "ego", "golf"} -> "codegolf" {"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or... Would a morelmaniac be some sort of mycologist? {"ab", "bc", …

7
二叉树旋转
平衡的二进制搜索树对于保证O(log n)查找(或类似操作)至关重要。在动态环境中,随机地插入和/或删除了许多密钥,树可能会退化为链接列表,这对于查找来说是可怕的。因此,存在多种抵消这种效果的自平衡二叉树(例如AVL树或八叉树)。这些树是基于不同种类的旋转来重新平衡树的。 轮换 在此挑战中,我们将仅关注单个右旋,这样的旋转(左旋将是对称的)如下所示: 5 3 / \ / \ 3 6 => 1 5 / \ / \ 1 4 4 6 如果有任何叶子1,4或者6有左子树或右子树,则旋转只需将它们保留在那里。如果这是较大树的子树,则只需在节点处“将其切除”,5然后将旋转后的树(现在为node 3)“重新连接” 到该节点。 挑战 给定二分搜索树1和关键字,如上所述,该树在该节点上向右旋转。上例中提供的密钥为5。 规则和I / O 您可以使用任何类型的键,只要您选择的键与测试用例的键之间存在双射 您可以选择二叉树的任何表示形式,只要没有歧义(例如,[3,[]]除非另有说明,否则是模棱两可的),这对于您选择的语言是很自然的 由于输入将始终是二叉搜索树,因此没有重复的键 您可以假设密钥包含在树中 您可以假定包含密钥的节点有一个左子节点 您可能无法在提供的键下假设正确的子树 您可能不认为旋转之前树是不平衡的 您可能不认为旋转后树是平衡的 您可以使用任何默认的I / O方法 您提交的内容可能是返回树的功能或打印解决方案的完整程序 测试用例 这些示例表示一棵树,如下所示 如果是一片叶子: [] 如果它是带有键的树x并且两个子树都是叶子:[x] 如果它是带有键x和子树的树left right:[x,left,right] …

15
及物平等
挑战 您的程序应接受3个输入: 一个正整数,它是变量的数量, 一组无序的非负整数对,其中每对代表变量之间的等式,并且 代表起始变量的正整数, 它应该返回一组表示所有变量的非负整数,这些变量可以证明与起始变量(包括起始变量本身)在传递上相等。 换句话说,给定的输入N,E和S返回一个set Q,使得: S ∈ Q。 如果Z ∈ Q和(Y = Z) ∈ E,那么Y ∈ Q。 如果Z ∈ Q和(Z = Y) ∈ E,那么Y ∈ Q。 这也可以表示为图论问题: 给定无向图和图中的顶点,请列出其连接组件中的顶点。 技术指标 您可以选择使用基于0或基于1的索引。 第一个输入计算存在的变量数,其中变量以数字形式给出。或者,您不能采用此输入,在这种情况下,根据您的索引编制方案,该输入等于当前存在的最大变量索引,或者等于此变量的最大变量索引。 您可以假设输入格式正确:不会给您超出第一个输入指定范围之外的变量。例如,3, [1 = 2, 2 = 0], 1是有效输入,而4, [1 = 719, 1 = 2, 3 = …

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.