异星工厂吧 关注:63,454贴子:411,616

超立方体量子解码详解

只看楼主收藏回复



1楼2024-01-10 00:23回复
    量子编码是超立方体MOD里后期的难题,玩法有点类似与SE的曲虹球。
    每个量子被制造后是初始相位(量子比特壳),可以通过机器调整至6种相位(上下奇粲顶底)。解码成功获得量子研究数据,解码失败返还一个初始相位的量子。
    因为配方是随机变化的,所以我们的目标就是向解码器内投入所有可能的情况挨个试,直到发生碰撞。


    2楼2024-01-10 00:25
    回复
      2025-12-21 14:04:55
      广告
      不感兴趣
      开通SVIP免广告
      我们拥有的是初始量子(量子比特壳),在投入之前每种量子都需要准备几个。
      这里介绍一下箱子混料总线的设计,每个生成机器放在箱子的两边,从箱子抓取原料,产物放回箱子,机械臂信号连接箱子防止产物过多。箱子与箱子之间用图里的运算器连接,常量箱以负数设置需要往后传递的物品。
      箱子混料总线可以让非常多种的材料在箱子之间移动,用了之后完全需要再关心配方需要什么原料,我把所有原料每样都塞箱子里沿总线向后传递就行,在最后的箱子收取我要的产出,可以说是专治各种爱整复杂配方的mod,一直用一直爽。
      局限性是传递的速度有限,大量物品可以增加机械臂的数量,比如SE箱子是6X6的就可以有6个集装机械臂,相当于2条红带多点的速度,再加就要换能接受信号的装卸机比如miniloader


      3楼2024-01-10 00:41
      回复
        经过三个箱子的生产之后,最后一个箱子里就有了6种量子比特,并且每个比特被消耗后都将自动补充。


        4楼2024-01-10 00:42
        回复
          量子解码所有可能的情况就是排列组合里的7选2,7C2 = 21 种,每种里有两个量子比特,合起来这是一个长度42的序列,以1~6来表示6种量子就是这样的:1 1 1 2 1 3 1 4 1 5 1 6 2 2 2 3 2 4 2 5 2 6 3 3 3 4 3 5 3 6 4 4 4 5 4 6 5 5 5 6 6 6,我们按这个序列往解码器里投入量子。
          为什么是7呢?因为自己和自己组合也是一种情况。
          如果中途成功解码了,需要重新从头开始按序列投入吗?不需要,因为这是循环序列,从任意位置开始往后遍历,都可以遍历到整个序列。
          如果投入过程种有一个量子丢了,比如说不小心被我拣了,会导致整个系统会崩溃吗?不会,这本质也是产生了位移,比如111213141516在错位了之后就变成了611121314151,投入解码器的组合没有变化。


          5楼2024-01-10 00:46
          回复
            接下来需要记录序列索引,也就是需要投入序列里的第几个元素(哦,别忘了索引都是从0开始的)。
            这时候就要用到锁存器了,锁存器是把运算器的输出端重新接回输入端,这样它就一直在执行 C*1=C 的计算,相当于把变量C存储了起来。每当机械臂抓取了物品,把它转换为C,就给变量C增加了刚才抓取的数量。当C>42的时候把M改为0,也就是变成 `C*0=0` 的计算,相当于清空了变量C。
            机械臂一直抓取物品,C就会在 0, 1, 2, 3, ..., 40, 41, 0, 1, 2, ... 之间循环,这里的C就是序列索引。


            6楼2024-01-10 00:49
            回复
              然后我们需要从序列里取出索引C对应的元素,最简单的方式就是放42个判断器,如果C=0则输出什么,如果C=1则输出什么,但是这不够酷,这里介绍:位运算储存。
              简单来说就是把42个数字压缩成更少的数字,硬编码到常量箱里,在游戏内根据索引解压出对应的数字,这样就不用放42个判断器了。
              量子比特的需要是1~6,也就是可以用3位的二进制来表示,异星工厂常量箱可设置 int32 也就是32位的二进制,这意味着我们可以将10个元素打包成1个数值。


              7楼2024-01-10 01:00
              回复
                42长度的序列最终将打包出5个数值,编程上管这种不知道哪里来但是改不得的常量叫 魔法数字,手算这些数字还是太麻烦了直接上代码吧,算完了之后还要尝试解包看看对不对。
                解包就是 (魔法数字 >> (C * 3)) % 8


                8楼2024-01-10 01:07
                回复
                  2025-12-21 13:58:55
                  广告
                  不感兴趣
                  开通SVIP免广告
                  然后把5个魔法数字设置到常量箱里,假设现在C=11,那么它属于10~20区间也就是信号1解包后的索引1的数值(别忘了索引从0开始),堆5个判断器即得到了当前区间对应的魔法数字:信号B=信号1=713663665


                  9楼2024-01-10 01:23
                  回复
                    对 信号B=713663665 解包,B=(魔法数字 >> (索引 * 3)) % 8,解出C=11时B=6,也就是对应第六个量子,堆6个判断器输出:六号量子=1的信号,把信号接给机械臂就自动抓取了(哦,别忘了设置抓取上限为1)


                    10楼2024-01-10 01:31
                    回复
                      最后把混料箱子总线,锁存器,位运算解包三个部分缝合起来就是主楼图片的效果了。
                      如果你完全看不懂的话,蓝图在这里:https://factoriobin.com/post/HShBZWyq,输入初始量子(量子比特壳)然后挂机就完事了。


                      11楼2024-01-10 01:35
                      回复
                        就说我怎么不会玩原来要用到信号线,这下本传送带神教惨了


                        IP属地:浙江来自iPhone客户端12楼2024-01-10 03:26
                        回复
                          看不懂,完全看不起😇


                          IP属地:上海来自Android客户端13楼2024-01-10 07:46
                          回复
                            输入是随机的?还是输出随机?曲红球是输入固定,输出随机。
                            如果输入随机,那就是大箱子囤货爪子自己抓。


                            IP属地:广东来自iPhone客户端14楼2024-01-10 11:33
                            收起回复
                              2025-12-21 13:52:55
                              广告
                              不感兴趣
                              开通SVIP免广告
                              告诉你一个好消息,刚刚方块更新了,多了一种「部分匹配」的情况,就是其中一个是正确的。
                              请问该如何修改?坐等大佬蓝图


                              IP属地:上海15楼2024-01-10 11:40
                              收起回复