Questions tagged «cellular-automata»

涉及细胞自动机的难题,例如Conway的《人生游戏》。

6
在Conway的《人生游戏》中制作俄罗斯方块的工作游戏
这是一个理论上的问题-在任何情况下都无法给出简单的答案,即使是琐碎的问题也无法解决。 在Conway的《生命游戏》中,存在诸如metapixel之类的结构,这些结构使“生命游戏”也可以模拟任何其他“生命游戏”规则系统。另外,众所周知,生命游戏是图灵完成的。 您的任务是使用Conway的生活游戏规则构建一个细胞自动机,该规则将允许您玩俄罗斯方块游戏。 您的程序将通过手动更改特定世代的自动机状态来表示中断(例如,向左或向右移动,放下,旋转或随机生成新的片段以放置到网格上),计数来接收输入特定数量的世代作为等待时间,并将结果显示在自动机上的某个位置。显示的结果必须明显类似于真实的俄罗斯方块网格。 您的程序将按以下顺序进行评分(较低的标准充当较高标准的决胜局): 边界框大小-面积最小且完全包含给定解的矩形框将获胜。 对输入的更改较小-需要手动调整的最少单元格(对于自动机中最坏的情况)会获胜。 最快的执行速度-最少的一代可以在模拟中获胜。 初始活细胞计数-较小的计数获胜。 先发布-早先发布。

16
在常规网格之外的任何东西上实施生活游戏
康威的《人生游戏》(几乎)总是在规则的正方形网格上播放,但不一定如此。 编写一个程序,该程序在不是欧式正方形,三角形或六边形的规则平铺的欧几里德平面的二维平铺上实现Conway的《生命游戏》中的标准单元格相邻规则。 具体来说,您选择的平铺... 必须包含至少2个(但数量有限)形状不同的原生动物。 不同的形状可以彼此缩放或旋转。 他们必须能够平铺整个平面而不会留下孔。 它们必须是具有有限周长的简单多边形。(它们可能不是那么简单。) 必须与正方形,三角形和六边形网格同构不同。 不允许将任何细化为规则正方形,三角形或六边形网格的平铺。(您仍然可以在其他拼贴中使用正方形/三角形/六边形。) 任何两个原生动物之间的边界可能包含多个边和顶点,但必须连续。 您的平铺可能是周期性的,也可能是非周期性的,但是当扩展到覆盖整个平面时,每个prototile必须无限次出现。(因此,无需对切片的某些部分进行“硬编码”以帮助实现下面的额外要点。) 您的每个人工繁殖体都代表一个与其他细胞相邻的“生命游戏”细胞: 共享任何边或任何顶点的像元都被视为相邻像元。 共享多个边或顶点的像元仍仅在彼此相邻的邻居处计数一次。 细胞不能与自己相邻。 拼贴灵感链接: http://en.wikipedia.org/wiki/Tiling_by_regular_polygons http://en.wikipedia.org/wiki/List_of_uniform_tilings http://en.wikipedia.org/wiki/Aperiodic_tiling http://en.wikipedia.org/wiki/Penrose_tiling 输出量 您的程序应该输出其中包含正在玩的生命游戏的拼贴形式的图形表示,您当然应该以image / gif / jsfiddle格式发布。 请绘制瓷砖边缘线,对死细胞使用浅色,对活细胞使用深色。 计分 您的投稿分数是增票数减去减票数,以及在平铺中发现常见的“人生游戏”模式的加分: 寻找静物 -从一代到下一代都不会改变的模式。(+2) 查找周期2到29的振荡器。(每找到5个周期,每个周期+3,或者最多+15点) 查找周期为30或更长时间的振荡器。(+7) 找到一艘太空飞船 -它可以任意离开其起始位置而不会留下任何碎片。(它不一定是移动的振荡器。)(+10) 找到另一个以明显不同的方式移动的太空船(而不是第一个太空船的镜像版本),例如,请参见glider和LWSS。(+10) 寻找无限增长的模式。您不必证明增长是无限的,只需向我们显示足够的证据证明这种增长实际上是肯定的。(+25) 找到枪 -可以永久产生飞船的东西(这也算作无限增长)。(+50) 无限的生长模式必须以有限数量的活细胞开始,其他模式必须始终包含有限数量的活细胞(例如,太空船不应随时间而任意增大)。 由于非定期平铺的性质,似乎其中许多模式无法实现。因此,任何可验证的非定期平铺都会自动获得+40分。在非定期平铺中某个位置起作用的模式不必在其他位置起作用。 每个奖金只能应用一次。自然,我们需要查看输出以验证它们。最高分获胜。 笔记 每个答案只能将奖金应用于一个特定的拼贴。(尽管可以包括相关的拼贴图。) 人生游戏规则如下: 任何少于2个或超过3个活邻居的活细胞都将死亡。 任何具有3个活着邻居的死细胞都可以存活。 其他单元格不变。 不管边界条件如何,都可以使用加分点的模式,但否则,您可以选择所需的任何边界条件。 默认情况下,背景应为所有无效磁贴。 …

15
量子醉汉步道
众所周知,一个人在酒精的影响下,在网格上的人有朝任何可用方向前进的机会均等。但是,这种常识性声明并不适用于非常小的酒鬼,他们的行为非常像他们一次采取所有可用路径,并且他们采取的可能路径可能会相互干扰。您的任务是在n步骤之后显示此类量子醉汉的可能位置。 规格 讨论中的酒鬼占据了一个正方形网格,可以被认为是使用冯·诺依曼(加号)邻域的三态细胞自动机,遵循以下简单规则: Empty去Awake,如果它是毗邻只有一个Awake,否则进入Empty Awake 去 Sleeping Sleeping 去 Sleeping 电路板的初始状态是一个Awake由Emptys 的无限字段包围的单个状态。 挑战 给定一个非负整数n,请在n步骤之后创建酒鬼的ASCII表示形式。每个状态应由不同的字符表示,解决方案应说明哪个字符表示哪个状态。如果您将空格用于Empty,则无需在行尾添加一行空格。 这是代码高尔夫球,因此最短的答案会获胜。适用标准漏洞,允许使用前导和尾随空格,允许使用字符串数组/ 2d char数组输出,等等。 例子 这些示例使用for Empty,@for Awake和#for Sleeping。 n=0 @ n = 1 @ @#@ @ n = 2 @ # @###@ # @ n = 3 @ @#@ @ # @ @#####@ @ # @ …

13
建立一个沙堆
一个阿贝尔沙堆,对于我们的目的,是整数坐标无限电网,初始为空沙。每秒之后,将一粒沙粒放在(0,0)。只要网格单元有4个或更多的沙粒,它就会同时向其四个邻居中的每一个洒一个沙粒。(x,y)的邻居是(x-1,y),(x + 1,y),(x,y-1)和(x,y + 1)。 当一个细胞溢出时,可能导致其邻居溢出。一些事实: 此级联最终将停止。 细胞溢出的顺序无关紧要。结果将是相同的。 例 3秒后,网格看起来像 ..... ..... ..3.. ..... ..... 4秒后: ..... ..1.. .1.1. ..1.. ..... 15秒后: ..... ..3.. .333. ..3.. ..... 在16秒后: ..1.. .212. 11.11 .212. ..1.. 挑战 用尽可能少的字节编写一个函数,该函数采用单个正整数t并在t秒后输出沙堆的图片。 输入项 您选择的任何格式的单个正整数t。 输出量 t秒钟后使用字符显示沙堆的图片 . 1 2 3 编辑:使用任何您喜欢的四个不同字符,或绘制图片。如果您未使用“ .123”或“ 0123”,请在答案中指定字符的含义。 与示例不同,您的输出应包含显示沙堆的非零部分所需的最少行和列数。 也就是说,对于输入3,输出应为 3 对于4,输出应为 …

20
挖一条边境战trench
背景:有太多来自布兰迪亚的非法移民越过边界前往阿斯坦。阿斯坦皇帝(Astan)曾命令您挖沟以将其拒之门外,而布兰迪亚(Blandia)必须支付费用。由于所有打字员都已休假直到安排好沟槽,因此您的代码必须尽可能短。* 任务:给定阿斯坦(Astan)和布兰迪亚(Blandia)之间边界的2D地图,让布兰兹(Blands)支付(带有土地)边界战trench。 例如:标记了Astanian单元,标记了ABlandic单元B和标记了Trench单元+(地图框仅是为了清楚起见): ┌──────────┐ ┌──────────┐ │AAAAAAAAAA│ │AAAAAAAAAA│ │ABAAAAAABA│ │A+AAAAAA+A│ │ABBBAABABA│ │A+++AA+A+A│ │ABBBAABABA│ │A+B+AA+A+A│ │ABBBBABABA│→│A+B++A+A+A│ │ABBBBABBBB│ │A+BB+A++++│ │ABBBBABBBB│ │A+BB+A+BBB│ │ABBBBBBBBB│ │A+BB+++BBB│ │BBBBBBBBBB│ │++BBBBBBBB│ └──────────┘ └──────────┘ 详细信息:该地图将至少具有三行三列。最上面的行将完全是Astanian,最下面的行将完全是Blandic。 只要输入和输出保持一致,就可以使用任何三个值来表示阿斯坦领土,布兰迪领土和边界trench沟。 自动机公式:在摩尔邻域中具有至少一个Astanian细胞的Blandic细胞成为边界沟槽细胞。 测试用例 [ "AAAAAAAAAA", "ABAAAAAABA", "ABBBAABABA", "ABBBAABABA", "ABBBBABABA", "ABBBBABBBB", "ABBBBABBBB", "ABBBBBBBBB", "BBBBBBBBBB" ] 变成: [ "AAAAAAAAAA", "A+AAAAAA+A", "A+++AA+A+A", "A+B+AA+A+A", "A+B++A+A+A", "A+BB+A++++", "A+BB+A+BBB", "A+BB+++BBB", "++BBBBBBBB" …

30
最短的人生游戏
康威的《人生游戏》是蜂窝自动化的经典例子。这些单元形成一个正方形网格,每个单元具有两个状态:存活或死亡。在每个回合中,每个小区都会根据其状态及其八个邻居的状态同时进行更新: 如果一个活细胞恰好有两个或三个活的邻居,则它仍然活着 如果一个死细胞正好有三个活着的邻居,它就会活着 您的任务(如果您选择接受)是用您喜欢的语言编写最短的《人生游戏》实现代码。 规则: 网格必须至少为20x20 网格必须环绕(所以网格就像圆环的表面一样) 您的实现必须允许用户输入自己的启动模式 如果您看不到正在发生的事情,GoL会毫无意义,因此必须有自动机运行的视觉输出,每转的结果显示的时间足够长!

15
电子在电线上弹跳
想象一下有n空间的“电线” 。进一步想象一下,该导线中存在“电子”。这些电子仅生存一个时间单位。导线中恰好与一个电子相邻的任何空间都将成为电子。在“生活游戏”术语中,这是B1/S。 例如,这是长度为10且周期为62的导线。 规则 输入,n是一个正整数。 输出必须是一个整数,表示长度为n的导线的周期。 起始状态是导线一端的单个电子。 该时间段不必包括开始状态。有些长度永远不会返回到起始状态,但是它们都是周期性的。 静态导线(即没有电子的导线)的周期为1。 边界条件不是周期性的。也就是说,电线绝不是环形的。 测试用例 特别感谢orlp制作了此列表。(我已经验证到n = 27。) 1 1 2 2 3 1 4 6 5 4 6 14 7 1 8 14 9 12 10 62 11 8 12 126 13 28 14 30 15 1 16 30 17 28 18 1022 …

2
在Wireworld中建立数字时钟
受到“人生游戏”问题的启发。 Wireworld模拟流经“电线”的“电子”,其简单排列会产生典型的逻辑门行为。 我挑战您在Wireworld蜂窝自动机中构建数字时钟。您的时钟必须以通常的方式从00:00向上计数,或者使用AM / PM指示器从11:59向上计数,然后重设。 您的输入应明显分为两部分。A部分应包含所有非显示逻辑,所有涉及数字递增和循环的部分。B部分将是显示器及其驱动逻辑。这两个部分之间的唯一连接应该是代表BCD中时间的四位数字的16根电线(如果信号不连续,则AM / PM指示器的一根可选电线,信号时钟线的一根可选电线)。(编辑:总为零的导线可以省略) 时钟行为的时序应保持一致。对于状态之间的1440个过渡中的每个过渡,模拟应采用相同的滴答数。16条导线上的任何电子都应同时从A部分发出,并开始平行跳闸。 这是一场代码高尔夫比赛。您的分数是围绕零件A的轴对齐边界框的面积。 类似地,如果这是文本语言,则您的得分将是产生四个4位输出的时钟管理功能的大小,该输出包含一个循环和4个计数器的逻辑,而不是解码和打印该输出的功能。 B部分的大小可以根据需要选择。这样做只是为了使提交的输出可以被运行它的人看到,因为没有简单的方法可以简单地“调试” wireworld电路的输出。在线有多个BCD-> 7段电路。随意使用任意一个,如果需要时钟信号线,则可以自己制作,并以类似于数字的比例显示AM / PM指示器。 编辑:B部分现在是可选的。如果您只有A部分的BCD输出,请随时提交。确认时钟正常工作将更加繁琐,但是我可以在暂停的模拟中读取一行位。

30
2的幂和
挑战 给定一个整数输入x其中1 <= x <= 255,返回时总结给出了两种力量的结果x。 例子 给定输入: 86 您的程序应输出: 64 16 4 2 输入: 240 输出: 128 64 32 16 输入: 1 输出: 1 输入: 64 输出: 64 如果总和中没有确定的2的幂,则输出可能包含零。 例如,输入65可以输出0 64 0 0 0 0 0 1。 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

4
元胞自动机的多元投票
细胞自动机中有一个非常重要的问题,称为多数问题: 多数问题或密度分类任务是找到准确执行多数投票的一维元胞自动机规则的问题。 ... 给定一个总状态为i + j的两态细胞自动机的配置,其中i处于零状态,j处于一个状态,对投票问题的正确解决方案必须最终将所有单元设置为零i> j,并且如果i <j,最终必须将所有单元格设置为1。如果i = j,则未指定所需的最终状态。 尽管已经证明,没有任何一种细胞自动机可以在所有情况下解决多数问题,但是有许多规则可以在大多数情况下解决。Gacs-Kurdyumov-Levin自动机在随机初始条件下的准确度约为78%。GKL规则并不复杂: 半径为3,表示该单元格的新状态取决于之前的7个单元格:自身,右侧的3个单元格和左侧的3个单元格。 如果当前是一个单元格O,则其新状态是其自身的大部分状态,该单元格位于其左侧,而单元格3向左移动。 如果当前是一个单元格1,则其新状态是其自身的大部分状态,该单元格位于其右侧,而单元格3则位于其右侧。 这是一个例子: 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 …

8
脆弱的奎因
脆弱的奎因 脆弱的quine是满足通过删除单个字符来组成每个子字符串的属性的quine,在评估时会产生错误。 例如。如果您的程序asdf是木盒,那么它就很脆弱,以下程序必须出错: sdf adf asf asd 您的程序(及其所有子字符串)必须是完全确定性的,并且必须使用相同的语言。就此挑战而言,即使最终未产生错误,陷入无限循环(即无法终止)的程序也被视为“产生错误”。 存在标准漏洞,包括通常的quine限制(例如,无法读取自己的源代码)。 例如,print("foo")不是脆弱的。所有这些子字符串必须出错: rint("foo") pint("foo") prnt("foo") prit("foo") prin("foo") print"foo") print(foo") print("oo") print("fo") print("fo") print("foo) print("foo" 不会出错的是: print("oo") print("fo") print("fo") 因此它并不脆弱。 关于藜的重要说明 通过协商一致,任何可能的奎纳必须满足以下条件: 必须有可能识别程序的一部分,该部分对程序的不同部分进行编码。(“不同”表示两个部分出现在不同的位置。) 此外,木盒不得直接或间接访问其自身的源。 例 由于我认为JavaScript的function#toString是“正在读取其自身的源代码”,因此我不允许这样做。但是,如果我不想禁止它,那么这是JavaScript中的一个脆弱的方法: f=(n=b=`f=${f}`)=>(a=(n)==`f=${f}`,n=0,a)&(n!=b)?b:q 测试仪 这是一个程序,在给定程序源代码的情况下,它会生成所有必须出错的程序。 let f = (s) => [...Array(s.length).keys()].map(i => s.slice(0, i) + s.slice(i + 1)).join("\n"); let …
30 code-golf  quine  code-golf  date  code-golf  sequence  code-golf  sorting  file-system  code-golf  code-golf  ascii-art  hexagonal-grid  code-golf  string  arithmetic  code-golf  code-golf  code-challenge  source-layout  code-golf  ascii-art  cellular-automata  code-golf  string  arithmetic  balanced-string  code-golf  number  primes  code-golf  ascii-art  hexagonal-grid  code-golf  string  code-golf  string  code-golf  sequence  code-golf  ascii-art  code-golf  conversion  hexadecimal  code-challenge  restricted-source  code-golf  math  grid  code-golf  string  ascii-art  code-golf  random  minesweeper  code-golf  ascii-art  kolmogorov-complexity  board-game  scrabble  code-golf  ascii-art  code-golf  math  number-theory  decision-problem  code-golf  string  code-golf  natural-language  code-golf  internet  stack-exchange-api  code-golf  code-golf  conversion  code-golf  string  code-golf  math  arithmetic  code-golf  string  whitespace  code-golf  graphical-output  internet  code-golf  string  code-golf  string  random  permutations  code-golf  string  code-golf  string 

18
旋转对称数
给定一个整数,如果它是相同的上下颠倒(旋转180°),则输出真实值,否则输出虚假值。 0,1并且8具有旋转对称性。6成为9,反之亦然。 产生真实结果的数字序列:OEIS A000787 0, 1, 8, 11, 69, 88, 96, 101, 111, 181, 609, 619, 689, 808, 818, 888, 906, 916, 986, 1001, 1111, 1691, 1881, 1961, 6009, 6119, 6699, 6889, 6969, 8008, 8118, 8698, 8888, 8968, 9006, 9116, 9696, 9886, 9966, 10001, 10101, 10801, 11011, 11111, 11811, 16091, …
27 code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

17
模拟规则110
规则110是具有一些有趣属性的元胞自动机。 您的目标是用最少的字符来模拟规则110。 对于不知道的人,规则110是在网格中逐行模拟的。网格线中的每个正方形都会查看上方,左上方和右上方的正方形,以确定其应为哪个单元格。 current pattern 111 110 101 100 011 010 001 000 new cell 0 1 1 0 1 1 1 0 输入: 0到39之间的数字,代表任何合理格式(逗号分隔的字符串,列表,函数参数)的第n个输入行的第一行。为了容纳1索引的语言,数字也可以1索引,因此范围是1到40。 输入示例: 38,39 输出:一个40 x 40的网格,代表运行的自动机,包括第一行。您应该将0保留为空白,将1保留为任何可见的打印字符。只要可以合理区分实际网格,就可以使用尾随空格。网格的底部可能有换行符,但网格线之间不应有空行。 输出示例: XX XXX XX X XXXXX XX X XXX XX XX X XXX XXXXXXX X XX XXX XXX XX X …

3
简单的红石模拟器
Redstone是Minecraft游戏中的一种材料,可用于许多复杂的装置。对于此程序,您只需模拟三个项目:红石线(用R表示),红石火炬(用T表示)和块(用B表示)。 以下是有关红石原理的基本规则列表: A redstone torch sends power to any adjacent redstone wire. TRRRR ^This redstone wire is powered. Redstone wire can only hold power for 15 blocks. TRRRRRRRRRRRRRRRR ^This last wire is unpowered, because the torch is >15 blocks away. A block is said to be powered if a powered …

20
细菌膨胀
1通过活菌标记的细菌菌落9生活在一段等距的细胞中,空细胞表示为0 0 0 2 0 0 0 1 2 0 0 3 3 0 0 每隔一秒钟,每个菌落就会扩散到相邻的空细胞中。如果两个菌落同时到达一个空细胞,则标记较大的菌落将其带走。 t=0: 0 0 2 0 0 0 1 2 0 0 3 3 0 0 t=1: 0 2 2 2 0 1 1 2 2 3 3 3 3 0 t=2: 2 2 2 …

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.