Questions tagged «cellular-automata»

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

3
实施简化字距调整
介绍 字距调整是指调整文本字母之间的间距。例如,考虑Top用以下三个字形写的单词: ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... 我们可以用点填充字形之间的间隙并完成它,但是间隙看起来太宽了。相反,我们将字形滑动到左侧,以便它们几乎可以接触: #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... 看起来好多了!请注意,的条形图T在的左边框上方o。在此挑战中,您的任务是为此类矩形字形实现一个简单的字距调整程序。 字距调整过程 考虑具有.和#形状相同的两个矩形2D字符数组。在简单的字距调整过程中,我们首先将数组并排放置,中间放置一列.s。然后,我们将#右阵列中的每一个向左移动一步,直到#左右阵列中的s正交或对角相邻。字距调整的结果是引入相邻s 之前的步骤#。您的任务是实施此过程。 让我们举个例子: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

8
模拟Wireworld元胞自动机
Wireworld是一种细胞自动机,其设计类似于流过电线的电子。它的简单机制允许构建数字电路。它甚至允许建造整个计算机。 您的任务是使用您选择的语言创建最短的Wireworld实现。 网格中的每个单元都有四个状态之一。四个状态为“空白”,“铜”,“电子头”或“电子尾”。 空白单元格将始终是空白单元格 电子头永远变成电子尾 电子尾巴将永远变成铜 如果一个铜电池中的八个邻居中恰好有一个或两个是电子头,它将变成一个电子头,否则它将保持为铜 这项比赛的风格与“ 最短生命游戏”比赛类似,但有一些变化。 网格必须至少为40 x 40单元 网格的边缘不能环绕(不是圆环)。将场外的细胞视为不断“空白”。 用户必须有可能输入自己的启动配置。 盯着黑屏不好玩。该程序必须在运行时直观地显示模拟。 这是代码高尔夫,最少的字节数获胜。

10
XOROR序列
细胞自动机确实令人着迷。通常谈论的是二进制的,即可以用数字表示的那些。但是,在我看来,这些做法已经死了。三元CA更有趣,但是我们要考虑所有ASCII!那会是多么有趣! 我将为您介绍一个简单的决定规则,而不是为每个角色决定一个规则集。为了决定下一代产品,我们看一下三个“顶部”细胞,就像细胞自动机一样。观察一个例子: QWERTY X Y Z 的“顶部” Y是WER上方,右侧,上方,上方和左侧的单元格。Y将是我要定义的函数的结果,该函数是三字符字符串的函数。的“顶部” X是 QW,或者是不存在/缺少的单元格中填充的空间。 现在,为乐趣功能!由于某种原因,我将此序列称为XOROR序列。让A是左上角单元格则charCode,B是上述细胞则charCode,并且C是右上角的细胞则charCode。然后,将得到的细胞是其charCode为特点(A XOR B) OR C,那就是(A^B)|C。(如果结果值大于126,则将其设置为(CHARCODE % 127) + 32。如果值小于32 ,则不执行任何操作。)这是种子的示例Hello, World!: S: Hello, World! 0: mmmo/c_ z}~)e m = ( )^(H)|(e) = (32^72)|101 = 104|101 = 109 (m) m = (H)^(e)|(l) = (72^101)|108 = 45|108 = 109 (m) etc. 1: …

5
是否有更多的硬物或软物
与假设分析书的开头相切。 输入是一个由空格组成的矩形,如字符串,字符串列表等,其对象由#内部组成: ######## # # ######## ### #### ### #### ### 对象将始终是非相交,非接触的矩形。软对象的定义是#中间没有用填充的对象,而只是边界,而硬对象则是填充的对象。具有宽度或高度的对象<=2被认为是坚硬的。所有对象都是硬的或软的。 如果输入,输出中有更多的硬对象"Hard",如果较软,则输出"Soft",如果相等则输出"Equal"。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 这些情况不是全部输入,而是每个对象应表征的内容。实际输入将类似于问题顶部的ascii艺术。 硬 # #### ## ## ########## ########## ########## 柔软的 ### # # ### ################### # # # # # # ################### #### # # # # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  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 

6
稳定的生活游戏
挑战: 给定0和1的矩阵(或2d数组),输出Conway的生活游戏达到稳定状态所需的步数,如果从未达到1,则输出-1。稳定状态是每个步骤都没有打开或关闭任何单元的状态。游戏必须在给定的矩阵中运行,顶部和底部连接,侧面连接。(即给定的4x3矩阵,它应该在4x3的圆环上运行)输入矩阵的大小不得超过15x15。 注意:如果矩阵以稳定状态开始,则输出应为0。 样品: 输入: [[0,0,0], [0,1,1], [0,1,0]] 输出: 2 流程:(此不需要显示) [[0,0,0], [0,1,1], [0,1,0]] [[1,1,1], [1,1,1], [1,1,1]] [[0,0,0], [0,0,0], [0,0,0]] 输入: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] 输出: 2 处理: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] [[0,0,0,0], [0,1,0,1], [0,0,0,0], [0,1,0,1]] [[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]] 输入: [[0,1,0,0], [0,1,0,0], [0,1,0,0], [0,0,0,0]] 输出: -1 处理: [[0,1,0,0], [0,1,0,0], …

3
蜂箱的奇特生活
研究人员最近发现了一个有趣的蜂群,它生活在无限的蜂窝区域中: 每个牢房可以容纳一只蜜蜂或不能容纳一只蜜蜂。实际上,这些生物的生活似乎有点……混乱。可以计算出一个殖民地总是以以下模式开头: (蜂绘制由 灵光布泰 上维基共享资源。这个蜂窝和蜜蜂图像从而被下发布的 CC-BY-SA。 牢骚) 之后,蜜蜂的生命周期分为几代。每一代老蜜蜂死亡而新的蜜蜂孵化,这主要取决于它们细胞的邻居: 如果一只蜜蜂的邻居少于两个,它会因孤独而死亡。 如果一只蜜蜂有三个以上的邻居,则会因拥挤而死亡。 如果一个小区在相邻小区中有两只,三只或四只活蜂,那么下一代会在那里孵化出一只新蜜蜂。 垂死的蜜蜂直到世代末期才死亡,因此它们仍会影响可能会孵化下一代的周围细胞。 现在我们知道了这样一个殖民地的工作方式,我们可以通过任何数量的世代对其进行模拟。 输入项 输入是标准输入给定的单个数字N,以换行符终止。0≤ Ñ ≤150。这是代模拟的数量。 输出量 输出是单个数字,在标准输出上,并且可以选择跟在一个换行符之后,该换行符表示N 代后的活蜂数量。 标准错误的附加输出将被忽略。 样本输入 0 5 42 100 样本输出 6 44 1029 5296 获奖条件 最短的代码胜出,这是高尔夫界的惯例。如果出现平局,则以较早的解决方案为准。 测试用例 有两个测试脚本,包含相同的测试用例: 重击 电源外壳 在这两种情况下都调用:<test script> <my program> [arguments]例如./test ruby beehive.rb或./test.ps1 ./beehive.exe。 我知道只有22个测试,而不是151个(主要是因为解决方案通常很慢)。请避免嵌入确切的测试用例,而不是解决任务。这些脚本可以方便您测试更改是否仍导致程序正常运行。不是您可以使代码适应特定的测试用例。 另一个注意 该任务是2011-W24期间在我的大学举行的高尔夫比赛的一部分。参赛者的成绩和语言如下: 336 – …

3
找到身份沙堆
这个问题是关于阿贝尔沙堆的。阅读此先前的挑战,并观看此亲密视频以了解更多信息。 大小为n × n的阿贝尔沙堆是一个包含数字0、1、2和3(代表沙粒数量)的网格。添加两个沙堆的工作方式是:先逐个元素地添加元素,然后对高于3的任何元素进行推倒。推倒的顺序无关紧要,最终结果是相同的。当一个单元倾倒时,其数量减少4,而其每个直接相邻单元的数量增加1。这可能导致链反应。如果单元格位于网格的边缘,则在倾倒时掉落到网格上的所有颗粒都会消失。 例如,我要添加两个三乘三的沙堆(产生非常极端的连锁反应): 3 3 3 1 2 1 4 5 4 4 6 4 6 2 6 6 3 6 2 5 2 4 1 4 4 2 4 0 4 0 2 0 2 2 1 2 3 3 3 + 2 1 2 = 5 …

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

1
生活:是创造还是进化?
给定方形的“生命游戏”网格的状态,确定它是否可以从任何先前的状态演变而来,或者只能被创建。即,确定该状态是否为“伊甸园”状态。 输入项 状态的正方形网格,其中1表示“活动”,0表示“死”。如果愿意,可以选择两个可区别的符号,而不是0和1。 网格的边长将不为零,但可以为任何自然数1 <= N <= 20。 输入网格外部的任何或所有单元格可能在此世代中仍处于活动状态,而它们中的任何或全部可能在上一代中已处于活动状态。要考虑的宇宙是无限的,因此没有边界条件。输入的边不是Universe的边。具体来说,网格不环绕。 输入可以采用行分隔字符串或单个字符串的形式。如果需要,可以将边长或网格面积作为附加输入(在网格之前或之后)。 可接受的输入格式: 010,101,010 010101010 010 101 010 3 010101010 输出量 如果没有可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已创建”。 如果存在至少一个可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已演化”。 如果愿意,可以使用任何两个可区分的字符串或数字来代替“ Created”和“ Evolved”。 注意,可能的先前状态不必与输入区分开。如果一个国家拥有自己作为下一代,那么它就应该被认为是进化的。 测试用例 010 101 010 Evolved 0101110100 0010101001 1011100110 0101111101 1001001111 1111001001 1011111010 0110011101 1001010100 0010111010 Created 创建的测试用例取自Achim Flammenkamp的《生命游戏页面》。 注意 感谢trichoplax编写了这个挑战,我从这里接受了它

8
数字元胞自动机
编写一个程序或函数,该程序或函数需要一个奇数正整数N和一串十进制数字(0123456789)。该字符串表示十状态一维元胞自动机。每个数字占用一个单元,并且从一代到下一代的更新规则是,每个单元成为由以该单元为中心的N个单元的总和取模得到的数字。 第一个和最后一个单元像邻居一样环绕,因此单元始终可以将N个单元居中。请注意,N可能大于字符串的长度,这意味着它可能会多次缠绕,因此某些数字将多次相加。 例如,如果N为7且字符串为038,为使单元格可视化,我们可以038在两个方向上无限重复地写 ...038038038038038... 则将0变为的数字是以010 为模的任意7个数字的总和: ...038038038038038... ^_____^ | sum all these 这(0+3+8+0+3+8+0)%10是2。 类似地,数字的3和8变化到由被定义(3+8+0+3+8+0+3)%10= 5和(8+0+3+8+0+3+8)%10= 0分别。 因此,之后的生成038是250当N为7时。 您的程序或函数需要打印或返回下一代输入数字字符串的数字字符串。例如,将更新规则应用于每个单元一次并提供输出。以字节为单位的最短代码获胜。 测试用例 [digit string] -> [N = 1], [N = 3], [N = 5], [N = 7], [N = 9], [N = 43] 0 -> 0, 0, 0, 0, 0, 0 1 -> …

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 

3
最长的非重复生命游戏序列
给定正整数N,请确定N x N网格上的起始模式,该模式在“人生博弈”规则下产生最长的非重复序列,并以固定模式(长度为1的循环)结束,并在圆环上播放。 目标不是最短的程序,而是最快的程序。 由于世界是有限的,您最终将最终陷入循环,从而重复一个已经访问过的状态。如果此循环的周期为1,则起始模式为有效候选者。 输出:起始模式和序列中唯一状态的总数(包括起始模式)。 现在,1x1圆环是特殊的,因为一个细胞可能被认为与自己相邻,但实际上,这没有问题,单个活细胞在两种情况下都只会死(拥挤或孤独)。因此,输入1产生一个长度为2的序列,该序列是一个存在的单元,然后永远死亡。 这个问题的动机是,它类似于忙碌的海狸函数,但由于我们的内存有限,因此它肯定不那么复杂。这也将是包含在OEIS中的一个很好的顺序。 对于N = 3,序列长度为3,左侧的任何图案都将到达完全黑色的3x3正方形,然后消失。(删除属于1周期一部分的所有模式)。

7
振荡平等
我们的对象在两个整数点之间[l, r]以每时间单位一个单位的速度从lon 开始振荡t=0。您可以假设l < r。例如,如果一个对象在上振荡[3, 6],则我们有: t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 等等,但是物体不断振荡,所以我们还有t=0.5 -> 3.5和t=3.7 -> 5.3。 由于两个物体之间振荡[l1, r1],[l2, r2],确定是否存在过一段时间t,使得这两个对象共享相同的位置。您可以采用l1, r1, l2, r2任何方便的格式,并输出任何真实/错误值。 真实的输入: [[3, 6], [3, 6]] [[3, 6], [4, 8]] …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

4
改变生活规则
类似于生命的细胞自动机是类似于Conway的“生命游戏”的细胞自动机,因为它们在(理论上)无限大的正方形网格上运行,其中每个单元正好有8个邻居,并且是2个状态之一,即存活和死亡。 但是,这些类似Like的版本在关键方面有所不同:给定单元存活的规则以及给定单元存活到下一代的规则。 例如,经典的“生命游戏”使用规则B3/S23,这意味着需要3个活细胞才能生出一个新细胞,而2或3个活着的邻居才能存活。对于此挑战,我们将假设邻居不包括自身,因此每个单元恰好具有8个邻居。 给定一个初始配置,一个出生规则,一个生存规则和一个正整数(要运行的世代数),您的任务就是使用这些规则模拟生命似的自动机,以尽可能短的代码给出世代数。您可以选择初始配置为方矩阵/ 2维数组或多行字符串。其他可以以任何合理的格式和方法给出。 例如,如果出生规则是12345678(任何居住的邻居),则生存规则是2357,并且初始配置是 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 接下来的两代人 Generation 1: Generation 2: 0 0 0 0 0 1 1 1 1 1 0 1 1 1 …

7
伪随机细胞自动机
介绍 在这个挑战中,我们将使用非常差的伪随机数来模拟某个概率的细胞自动机。元胞自动机是通过以下本地规则在二进制字符串上定义的。假设一个单元格的左邻居和该单元格本身具有状态a和b。 如果为min(a,b) == 0,则的新状态b为max(a,b)。 如果为min(a,b) == 1,则b从中随机选择的新状态{0,1}。 下图显示了单个的可能的10步演变1。 1 11 101 1111 11001 101011 1111111 10001001 110011011 1010111101 请注意,两个相邻的1s有时如何演变为1,有时演变为,并且0最边界位始终1是s。您的任务是产生这种形式的细胞自动机进化。 输入项 您的输入是一个正整数n(表示要显示的行数),以及一个非空的位列表(L我们将其用作随机性来源)。 输出量 您的输出是一个列表列表或2D位数组,如上图所示,描述了单个对象1在n时间步长上的演变。0如果需要,可以用s 填充输出以获取相等长度的行,但不能以0s开头。 元胞自动机中的随机选择必须从列表中得出,L用尽时会跳回到开头。更明确地讲,如果输出从上到下,从左到右一次遍历一行,那么连续的随机选择将形成L重复所需次数的列表。 例 假设输入是n = 7和L = [0,1,0]。然后,细胞自动机在以下7个步骤中演化如下,其中我们v在每个随机选择上方都放置了一个右键: [1] [1,1] v [1,0,1] [1,1,1,1] v v v [1,1,0,0,1] v [1,1,1,0,1,1] v v v [1,0,0,1,1,1,1] 如果我们读取所有标有a的位,则会v得到01001001,该值L重复2.66次。下一个随机位是0。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。输入和输出的确切格式不重要(在合理范围内)。 …

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.