• 浏览量:32
  • 创建日期:1月前
  • 最后编辑:1月前
  • 编辑次数:1次

历史编辑记录更多
    最近参与编辑

    咒术师的记忆,#3 与 咒术师的记忆,#1 为同类剧情/故事。

    咒术师的记忆,#3 (Hexcaster's Memory #3)

            虽然 托特之策略 极其适合同时对多个目标施放同一法术,但对同一目标施放多次法术就有点麻烦了。它不仅容易导致咒术的停止,运行开始后还无法添加或移除作用目标。
            而绕过这些局限也很简单,换用另一种循环即可。

    While 循环

            While 循环是一种在既定条件达成之前一直运行的循环,比如条件可以是实体的速度达到了给定值。一个仅会复制自身再运行栈顶 iota 的图案列表就是这种循环最简单的实现方式。如果单独运行它,那么咒术会进入无限循环,除非产生事故不然不会停止。

            向其中加入实际功能和一些布尔逻辑,就能创造出有用的 while 循环。前文所提无限循环的代码如下:

    内省
    双子之分解
    赫尔墨斯之策略
    反思
    双子之分解
    赫尔墨斯之策略

            向其中加入根据条件是否运行列表内 赫尔墨斯之策略 的逻辑,达成相应条件后循环便会终止。

    循环展开

            “已展开循环”/“Unrolled loop”是一种更为复杂的循环。和 托特之策略 一样,构建时其迭代次数同样固定,难以增加修改。但如有需要, 卡戎之策略 可以令其提前停止。比较来看,这种循环仅产生一到两层递归深度(循环体运行所致深度不计),是其优势所在。先写定想要重复的图案列表,再多次复制,最后把所有列表合成一体,就实现了循环展开。

            这一目标最简单的达成方式是 双子之分解组合之馏化 ,运行后原列表会重复 2 次。可重复使用此方法以复制原列表 2 的幂次,所得的列表在运行时只会产生一层递归深度。更灵活的做法则是使用 双子之策略 产生 n 个副本,再将 n-1 个 组合之馏化 放入列表并运行,如此便能把所有原列表副本合为一体。

    资料分类:智识界

    短评加载中..