本帖最后由 LocusAzzurro 于 2021-8-22 13:09 编辑
前言 - 什么是兰顿蚂蚁
下图是运行测试,可以看到成功生成出了“高速公路”。
function实现
生成蚂蚁
复制代码
迭代,RL规则(经典兰顿蚂蚁)
复制代码
实现说明
记得很久之前就有人做过这个算法,最近突然想到有了新版本的各种指令操作,会不会比较简单,事实是是的,刚好熟悉了一下从来没用过的caret notation。
生成部分,不管自定义头颅的一大串的话,主要的部分就是拿align对齐一下坐标,这样刚好在方块中间,以及挂tag用来选择。
迭代的部分,先检测两种方块上的“蚂蚁”盔甲架,并且用tag标记,不这样操作的话后面改方块的时候会连续覆盖,做的时候被这个坑了。
然后是旋转,白色顺时针90度,黑色逆时针九十度,用刚才的tag进行选择,同样的方式进行方块的更改,接着移除颜色的标记,这样下一轮重新标记。(似乎不清也没问题?),最后进行“向前一格”的操作。
这里也是试了下schedule,每次迭代之后直接挂上下次迭代。
后话
另外,兰顿蚂蚁可以扩展成多个颜色,尝试写了一个RLR。
前言 - 什么是兰顿蚂蚁
兰顿蚂蚁(Langton's Ant)是细胞自动机的例子,由黑白格子和一只“蚂蚁”构成,是一个二维图灵机。
规则很简单,若蚂蚁在白格,右转90度,将该格改为黑格,向前移一步;若蚂蚁在黑格,左转90度,将该格改为白格,向前移一步。
-- 维基百科 - 兰顿蚂蚁
下图是运行测试,可以看到成功生成出了“高速公路”。

function实现
生成蚂蚁
- execute as @s align xyz run summon minecraft:armor_stand ~0.5 ~ ~0.5 {Invisible:1b,Tags:["ant"],ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{SkullOwner:{Id:[I;-629171175,-966113690,-1206736499,1812113222],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWI2YWViNDQ0NjRiNGMxNTI4MGRjZDBjMjNjOTI4MTlkNmRkM2Y1ZjA4MjY0NmM0OTZkMDE2ZWU2YzExNDg4MCJ9fX0="}]}}}}]}
迭代,RL规则(经典兰顿蚂蚁)
- execute as @e[type=minecraft:armor_stand,tag=ant] at @s if block ~ ~-1 ~ white_wool run tag @s add white
- execute as @e[type=minecraft:armor_stand,tag=ant] at @s if block ~ ~-1 ~ black_wool run tag @s add black
- execute as @e[type=minecraft:armor_stand,tag=white] at @s run tp @s ~ ~ ~ ~90 ~
- execute as @e[type=minecraft:armor_stand,tag=black] at @s run tp @s ~ ~ ~ ~-90 ~
- execute as @e[type=minecraft:armor_stand,tag=white] at @s run setblock ~ ~-1 ~ black_wool
- execute as @e[type=minecraft:armor_stand,tag=black] at @s run setblock ~ ~-1 ~ white_wool
- tag @e[type=minecraft:armor_stand,tag=ant] remove white
- tag @e[type=minecraft:armor_stand,tag=ant] remove black
- execute as @e[type=minecraft:armor_stand,tag=ant] at @s run tp @s ^ ^ ^1.0
- schedule function langtonant:rl 1
实现说明
记得很久之前就有人做过这个算法,最近突然想到有了新版本的各种指令操作,会不会比较简单,事实是是的,刚好熟悉了一下从来没用过的caret notation。
生成部分,不管自定义头颅的一大串的话,主要的部分就是拿align对齐一下坐标,这样刚好在方块中间,以及挂tag用来选择。
迭代的部分,先检测两种方块上的“蚂蚁”盔甲架,并且用tag标记,不这样操作的话后面改方块的时候会连续覆盖,做的时候被这个坑了。
然后是旋转,白色顺时针90度,黑色逆时针九十度,用刚才的tag进行选择,同样的方式进行方块的更改,接着移除颜色的标记,这样下一轮重新标记。(似乎不清也没问题?),最后进行“向前一格”的操作。
这里也是试了下schedule,每次迭代之后直接挂上下次迭代。
后话
另外,兰顿蚂蚁可以扩展成多个颜色,尝试写了一个RLR。
66666666666收到 感谢
牛蛙牛蛙蛙
MCBBS有你更精彩
我看不懂蓝盾蚂蚁 但是真的好牛的感觉
1111111111111
20w14∞,/warp ant,请。

谢谢楼主的分享
谢谢分享,可以自己用了哈哈哈a
6666666666666
牛蛙牛蛙牛蛙牛蛙
感谢楼主,太有用了
0000000000000000000000
原以为是一个没什么技术含量的东西 看了下面的代码 打扰了。。。
感觉很厉害可以尝试一下
这个东西看你说的挺牛,但是这有啥用?qwq
我怎么没看懂呢
看不懂 但我大受震撼
之前在B站看到有个纯红石的设计,那个作者也是大佬你吗
这个雀氏牛蛙,学到了