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

        虽然施放咒术时能直接产生大多数 iota,但总会有不够便捷的情况,甚至于无法产生(例如庞大而精确的数和实体 iota)而不得不另辟蹊径。从核心之类的物品中读取 iota 也不错,但大多数情况下这么做需要第三只手,而我并没有。从外部位置获取 iota 的其他方法也各有各的局限性。

        而在无外部引用手段可用的情况下,所需的 iota 必须直接插入咒术本身。对部分人而言,这么做会有些不合常理。这是因为传统上而言,咒术是一个图案列表,但也应牢记图案也是一种 iota,一种与 赫尔墨斯之策略 (以及同类图案)协同效果很好的 iota。尽管你没法直接把数放到列表里面,然后让它和使用 数字之精思 一样压入栈顶,但有方法能做到。


        最简单(也是最可靠)的方法是 考察 。和手动施法时一样,列表中其后方的任意事物会被转义并直接压入栈顶,而非和平时一样运行,如此就可避免运行非图案导致的事故

        然而,当你位于咒术中超过一层运行深度处(比如循环和嵌套的条件逻辑),转义 iota 所需的考察数量会极速增长。在那些能够由另一咒术运行的事物中,这种方法便不再可靠。


        更为可靠的转义 iota 方法是 内省反思 。运行图案列表时, 内省 后方直到相应 反思 之间( 内省反思 不计)的事物会被转义,并以列表形式压入栈顶,不论 iota 的类型如何。然后就可以用合适方式操作此列表,比如用 群体之拆解 把列表中各项分别压入栈顶。

        如果你的列表的结构与此类似: 

内省
任意 iota(s)
反思
群体之拆解

        运行这些 iota 之后,栈中会压入 内省反思 之间的所有 iota。

资料分类:智识界

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

        推动事物的标准做法是 驱动 。但是,如果想要事物极为迅速地移动,这种方法可能会昂贵到无法使用。这是因为消耗会随向量模长极速增长。对单个目标使用多次模长为 1 的驱动就能减少这种影响,总消耗会从 n^2 降到 2n-1,其中 n 是向量的模长。


        这种方法最简单的实现方式需要 托特之策略 ,传入多个重复的实体 iota 组成的列表即可。当然也有其他(且通常更好的)方法存在。但除去重复绘制图案外,这些方法大多离不开循环这一命题,这就有点超出这篇文档的范畴了。

资料分类:智识界

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

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

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

While 循环

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

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

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

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

循环展开

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

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

资料分类:智识界

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

        我的一些呃,“同事”,在抄录长咒术时遇到了麻烦。

        “这东西好长!”

        “咒术网格都不够用了!”

        我认为这是能力问题。这又不是那些绘制完最后一个 反思 后没法修改咒术的麻烦。只需把未完成的咒术存到核心中即可。(不过你应该注意为存储操作留出空间。)


        完成之后,再用列表操作图案把各部分合起来就行了。

        甚至都不需要用多个核心,写完一部分后把它接到核心中列表的后方,再把所得列表存入核心即可。多核心会让调试咒术更轻松,但据我目前所知,这也是多核心相对单核心唯一的优势。

资料分类:智识界

短评加载中..