2019-2-18 16:50 /
玩了好久终于全部双星了..想把自己弄出来的解法记录下来..

参考链接有贴吧 B站av30622488 av30949124B站av31030058

通关后我才发现github上有各种解法, 比我的好多了
https://github.com/hingston/7-billion-humans-solutions
也许这个攻略已经没有存在的必要了(bgm38)
所以我就随缘更新吧..打算保留注释..并把基本思路写下来..

其余的不想更新, 暂时搁置吧
咕咕咕


目录
#1是个视频 #2 #3 #4 #5 #6 #7 #8是个视频 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26
Tags: 游戏
#1 - 2019-2-18 16:52
(。´-д-)
1楼用于更新
#1-1 - 2019-8-4 19:56
Cedar
开场视频..嗯..
#1-2 - 2019-8-4 19:56
Cedar
-- 7 Billion Humans (2056) --
-- 2: 歡迎新員工 --

step s
pickup c
drop
#1-3 - 2019-8-4 19:56
Cedar
-- 7 Billion Humans (2056) --
-- 3: 運輸小隊 --

step s
pickup c
step s
step s
drop
#1-4 - 2019-8-4 19:57
Cedar
-- 7 Billion Humans (2056) --
-- 4: 長途運輸 --

step e
pickup c
a:
step e
jump a
#1-5 - 2019-8-4 20:00
Cedar
-- 7 Billion Humans (2056) --
-- 5: 重要的抉擇 --

if e == datacube:
        a:
        step e
        jump a
endif
b:
step w
jump b
#1-6 - 2019-8-4 20:08
Cedar
[只需要增加一条指令!]
然后超时..行数太多..
你这什么鬼指示哦..
按要求来:
-- 7 Billion Humans (2056) --
-- 6: 小小驅蟲工 1 --

comment 0
step s
step s
step w
step w
step s
step s
a:
step e
if s != nothing:
        jump a
endif
step s
step s
step s
pickup c


DEFINE COMMENT 0
eJztkt9LE1AUxz8PPvfQHxA9RAzxYS2h0Nhm2MxtzZSp2zCbQusHhUZlRKMOlbGWv7IVKx1agZVIT+FT
xIjRg0T4EEN6EJ8keoieIkKi7y7+GR34cs+995zzPed7bxnZEHssw14GqbcUjRYnaF1ClCjt9Fkbw0KO
MLMc4411UrZ+1uwC62SFHCuMsWxTFOwBea3D3CNko/i5zSHL4rVLeOwinhqd6twhRtE6eGrdQlL+CaYZ
4JYNkLE0adXvUy9RejlKXKvM8qQYJcENISv/Gv02ovgr4hth2q4ya9d5xU2WFLek+AUbZ94mKDrey5zh
lHCSjKsXIWotHLZmgjSr1wM0sV98++gRUi5nirSyU5TUwzxhe0YrLzTbgs5e6u61uBfVTc0imiqi6WIc
FBrooMGO46VbWsbZrVl3Wa/OEtI5KT8p3RPa9+BTjFe6ehRfrzyf8hstTKu14xd80j9sR6REze6KP6/4
MXFM6G6SmDRvkvZBoYuHhCgot6C4R9oXOO/mHdRbDfLL1TjHN87yR2pscVprRqhZJxXxr+rtN4RNzfNT
fWy5u5zO83zVW38X919XM0qVNj5Jx4r5eevO/LyXpivOb+Gzuqmq/6qUWVOtDc2zbiH5AT66uvf5wjir
+gEVe8w7dzapnIJyi4p5IsxQdvVmWNYvXHR+STzPt+NLfLA59TGnnNpdQH5AnDW/jp0upo4fbv+bHdvr
Jv+Nf6x1x9o;


完全重写(双星):
-- 7 Billion Humans (2056) --
-- 6: 小小驅蟲工 1 --

step s
step sw
step sw
step se
step e
step se
step s
step s
pickup c
#1-7 - 2019-8-4 20:12
Cedar
原始想法
-- 7 Billion Humans (2056) --
-- 7: 整理房間 --

a:
if s == datacube:
        pickup s
endif
step s
if s != hole:
        jump a
endif
drop



行数最少
结果小人们就不得不拿起空气..
-- 7 Billion Humans (2056) --
-- 7: 整理房間 --

a:
pickup s
step s
if s != hole:
        jump a
endif
drop



速度最快
第一条删了也可以. 不过删了也没法双星, 还是留下来, 让小人少做一次无用的判断吧
-- 7 Billion Humans (2056) --
-- 7: 整理房間 --

step s
a:
if s == datacube:
        pickup s
        b:
        step s
        if s != hole:
                jump b
        endif
        drop
else:
        step s
        jump a
endif
#1-8 - 2019-8-4 20:16
Cedar
这是个视频..嗯..
#1-9 - 2019-8-4 20:19
Cedar
有两种方法, 思路不同.
一个是判断方块位置, 一个是判断人的位置.

判断方块位置(双星)
-- 7 Billion Humans (2056) --
-- 9: 對角巷 --

pickup s
a:
if nw != datacube:
        step s
        jump a
endif
drop


判断人的位置
速度比双星方法快一秒
但是多了一行.
-- 7 Billion Humans (2056) --
-- 9: 對角巷 --

step s
pickup c
a:
if w != nothing:
        step s
        jump a
endif
drop
#1-10 - 2019-8-4 20:26
Cedar
不愧是"演戏"..你照他指示做就是走最远的路..

照着指示做 (指令达标)
-- 7 Billion Humans (2056) --
-- 10: 疏散演戲 --

a:
if c == 4 or
c == nothing:
        step w
endif
if c == 1:
        step n
endif
if c == 2:
        step e
endif
if c == 3:
        step s
endif
jump a


去你的瞎指挥! (速度达标)
-- 7 Billion Humans (2056) --
-- 10: 疏散演戲 --

step w
step w
step w
step w
a:
if n == hole and
s == hole:
        step w
        step s
        step s
        step s
        step w
        step w
        step w
        step w
        step w
        step n
        step n
        step n
        step n
        step n
        step n
        step w
endif
if w == hole and
sw == wall:
        step n
else:
        if w == hole and
         nw != hole:
                step nw
        else:
                if w == hole and
                 sw != hole:
                        step sw
                else:
                        if w != hole:
                                step w
                        endif
                endif
        endif
endif
jump a
#1-11 - 2019-8-4 20:47
Cedar
追求速度就一次走两步, 追求行数就一次走一步..

速度达标
-- 7 Billion Humans (2056) --
-- 11: 填空站 1 --

pickup s
a:
if w == datacube and
e == datacube and
c == nothing:
        drop
else:
        step s
        step s
        jump a
endif


行数达标
-- 7 Billion Humans (2056) --
-- 11: 填空站 1 --

pickup s
a:
if w == datacube and
e == datacube and
c == nothing:
        drop
endif
step s
jump a
#1-12 - 2019-8-4 20:53
Cedar
自己写的笨方法是所有人一起走, 行数多速度慢..
别人写的双星方案巧妙利用了时间差(并行)..一个人向上走时另一个人恰好在进行判断..
我的方法是
AAAA
    BBBB
        CCCC

别人的方法是
AAAA
  BBBB
    CCCC

当然, 双星方法有个问题, 那就是它是个死循环..
好代码不应该在事情做完后还在那循环

我的方法
-- 7 Billion Humans (2056) --
-- 12: 解開拉鍊 --

pickup c
a:
step n
if w == worker:
        step s
        step s
        if w == worker:
                step n
                jump a
        endif
endif
drop


别人写的双星方案.
-- 7 Billion Humans (2056) --
-- 12: 解開拉鍊 --

pickup c
a:
if nw == worker:
        step s
        drop
endif
if sw == worker or
w == wall:
        step n
        drop
endif
jump a
#1-13 - 2019-8-4 20:56
Cedar
这个循环就有点麻烦了..
基本思路是走弓字形路线并且边走边判断

方法一速度快. 是一次走两步, 然后看看前面有没有空位.
如果走到头了(前方没方块但又不是一个空位)那就向右拐.
然后往回走的时候也要判断.
为了节省时间, 在下面向右拐时走两步, 在上面向右拐时只走一步. 这是试出来的..这么走碰巧能行..

方法二行数少. 代价就是小人只在往下走时会判断有没有空位, 在下方走到头后才会右拐, 向上走时则不会做任何事..最下方那个判断很长, 做的事情只是判断自己周围有没有方块 (没有意味着该向下走了). 这么长的判断居然只算一行, 感觉像钻了空子..如果觉得这个判断太复杂的话, 换成判断上方是不是洞口也可以. 但是耗时就更长了..

方法三双星. 这是邪道! 是利用数据分布的特殊性钻空子的行为! 我看不懂写出这代码的人到底发现了什么规律..(不完全是走斜线..)能同时兼顾向下走和向右走的数量, 代码又短又快..

方法一
-- 7 Billion Humans (2056) --
-- 13: 填空站 2 --

pickup s
step s
step s
a:
b:
if sw == datacube and
se == datacube and
s == nothing:
        step s
        drop
else:
        step s
        step s
        if s != wall:
                jump b
        endif
        step e
        step e
        c:
        if nw == datacube and
         ne == datacube and
         n == nothing:
                step n
                drop
        else:
                step n
                step n
                if nw != nothing or
                 ne != nothing:
                        jump c
                else:
                        step e
                        jump a
                endif
        endif
endif


方法二
-- 7 Billion Humans (2056) --
-- 13: 填空站 2 --

pickup s
a:
if w == datacube and
e == datacube and
c == nothing:
        drop
endif
step s
if s == wall:
        step e
        b:
        step n
        if nw == datacube or
         n == datacube or
         ne == datacube or
         e == datacube or
         se == datacube or
         s == datacube or
         sw == datacube or
         w == datacube:
                jump b
        endif
endif
jump a


方法三
-- 7 Billion Humans (2056) --
-- 13: 填空站 2 --

pickup s
a:
step s
if c == nothing and
w == datacube:
        drop
endif
if n == datacube and
se == nothing or
w == worker:
        step e
endif
jump a
#1-14 - 2019-8-4 21:00
Cedar
这居然没法双星, 绝对是故意的

行数
-- 7 Billion Humans (2056) --
-- 14: 粉碎機入門 --

pickup s
step s
step s
giveto s


速度
-- 7 Billion Humans (2056) --
-- 14: 粉碎機入門 --

if s == datacube:
        pickup s
        step s
        step s
        giveto s
endif
#1-15 - 2019-8-4 21:01
Cedar
简单的判断.
这个所谓的新指令 "End" 一点用都没有..
用了就是浪费行数..我从头到尾都没用过这条指令..

-- 7 Billion Humans (2056) --
-- 15: 粉碎流水線 --

a:
step n
if n == datacube:
        pickup n
        b:
        step s
        if s != shredder:
                jump b
        endif
        giveto s
endif
jump a
#1-16 - 2019-8-4 21:07
Cedar
没啥好说的..
多写几个判断 看准了走 行数就少
少写几个判断 走准步数 速度就快

-- 7 Billion Humans (2056) --
-- 16: 小小驅蟲工 2 --

a:
if s != wall and
s != hole:
        step s
        jump a
endif
pickup c
b:
step e
if s == shredder:
        giveto s
endif
jump b


-- 7 Billion Humans (2056) --
-- 16: 小小驅蟲工 2 --

step s
step s
step s
step s
a:
if s != wall and
s != hole:
        step s
        jump a
endif
pickup c
step e
step e
step e
b:
step e
if s == shredder:
        giveto s
endif
jump b
#1-17 - 2019-8-4 21:09
Cedar
本关用于卖萌

-- 7 Billion Humans (2056) --
-- 17: 數據工廠 --

pickup s
#1-18 - 2019-8-4 21:13
Cedar
类似于#9对角巷

方法一最容易想到
-- 7 Billion Humans (2056) --
-- 18: 一次性粉碎機 --

step w
pickup c
a:
if n == worker:
        step e
        jump a
endif
b:
step s
if s != shredder:
        jump b
endif
giveto s


方法二惨无人道但行数最少
-- 7 Billion Humans (2056) --
-- 18: 一次性粉碎機 --

step w
pickup c
a:
step s
giveto s
step e
jump a


方法三稍微要变通一下, 但也不难想..(我没想到 我以为鱼与熊掌不可兼得..)
-- 7 Billion Humans (2056) --
-- 18: 一次性粉碎機 --

pickup w
step sw
a:
if s == shredder:
        giveto s
        end
endif
step se
jump a
#1-19 - 2019-8-4 21:16
Cedar
一开始忘了 giveto 可以斜着, 一看结果没有双星..差点怀疑自己的智商..
-- 7 Billion Humans (2056) --
-- 19: 數據工廠的小問題 --

a:
takefrom s
giveto se
step w
jump a
#1-20 - 2019-8-4 21:19
Cedar
方法一先右拐再向下, 结果跟别人打架了..方法二极其舒适..
其实还是思路的问题..方法一靠人的位置判断, 方法二靠洞口位置

方法一
-- 7 Billion Humans (2056) --
-- 20: 反轉巷 --

pickup s
a:
if w == worker:
        step w
        jump a
endif
b:
if e == worker:
        step e
        jump b
endif
step s
drop


方法二
-- 7 Billion Humans (2056) --
-- 20: 反轉巷 --

pickup s
a:
if sw != hole:
        step w
        jump a
endif
step s
b:
if e != hole and
e != datacube:
        step e
        jump b
endif
drop
#1-21 - 2019-8-4 21:22
Cedar
这个就..所有人拼命向下走, 最下面的人没拿到符合要求的方块就一直拿, 拿到了就停下来别动..停下的人会自动让位置给别人的.
-- 7 Billion Humans (2056) --
-- 21: 偏心的大數據 --

a:
step s
if s != printer:
        jump a
endif
b:
takefrom s
if myitem < 50:
        giveto sw
        step e
        jump b
endif
#1-22 - 2019-8-4 21:25
Cedar
方法一类似于简单冒泡..向右走 跟右边的人比较, 自己拿的小就跳下去..
方法二利用了 if 判断只占一条指令的优势..一次跟周围8个格子一起比 居然只需要一条指令! 这岂不是官方作弊器嘛!

方法一
-- 7 Billion Humans (2056) --
-- 22: 輪盤戰爭 --

pickup s
a:
if myitem < w or
myitem < e:
        b:
        step s
        jump b
endif
c:
if e != worker and
e != wall:
        step e
        jump c
endif
jump a


-- 7 Billion Humans (2056) --
-- 22: 輪盤戰爭 --

pickup s
step s
a:
if myitem < w or
myitem < sw or
myitem < s or
myitem < se or
myitem < e or
myitem < n:
        step s
endif
step e
jump a
#1-23 - 2019-8-4 21:29
Cedar
简单的冒泡排序..跟周围的人比就是了..
-- 7 Billion Humans (2056) --
-- 23: 排序大廳 --

pickup s
a:
if myitem > e:
        step e
endif
if myitem < w:
        step w
endif
jump a
#1-24 - 2019-8-4 21:36
Cedar
方法一靠 IF 配合死循环来区分不同类型的工人.
而且工人会判断自己手里有没有方块, 速度就快..
-- 7 Billion Humans (2056) --
-- 24: 運輸大隊 1 --

if s == printer:
        a:
        if myitem == nothing:
                takefrom s
        endif
        if myitem != nothing:
                giveto e
        endif
        jump a
endif
if s == shredder:
        b:
        if myitem != nothing:
                giveto s
        endif
        jump b
endif
if s == hole:
        c:
        if myitem != nothing:
                giveto e
        endif
        jump c
endif


方法二完全不进行异常处理..还用一个大循环让工人做很多必定为假的判断, 代码是短了, 但是这群人在工作中就要不断做无用功, 还要不断喊叫 "我没方块!" "我没东西给!", 效率底下, 速度奇慢, 简直累死..要靠忽略异常处理来缩短指令数量, 我觉得并不好. 这也是我对这个游戏不太满意的地方. (不过真实计算机世界好像就是这样的.."反正它速度快")
-- 7 Billion Humans (2056) --
-- 24: 運輸大隊 1 --

a:
if s == printer:
        takefrom s
endif
if s == shredder and
myitem != nothing:
        giveto s
else:
        giveto e
endif
jump a
#1-25 - 2019-8-4 21:53
Cedar
为了让工人活下来必须加判断
不加判断行数达标
加了判断速度达标
偏偏要跟工人的生命过不去..好坏哦

不加判断
-- 7 Billion Humans (2056) --
-- 25: 我的首個粉碎記憶體 --

a:
mem1 = nearest datacube
mem2 = nearest shredder
pickup mem1
giveto mem2
jump a


加判断
-- 7 Billion Humans (2056) --
-- 25: 我的首個粉碎記憶體 --

a:
mem1 = nearest datacube
mem2 = nearest shredder
pickup mem1
if mem1 != nothing:
        giveto mem2
        jump a
endif
#1-26 - 2019-8-4 21:53
Cedar
类似#24..
处理了异常就速度快
不处理异常就行数少
然后工人们天天喊叫

速度快
-- 7 Billion Humans (2056) --
-- 26: 運輸大隊 2 --

if s == printer:
        a:
        takefrom s
        giveto n
        jump a
endif
if w == hole and
e == hole:
        b:
        if myitem == datacube:
                giveto n
        endif
        jump b
endif
if w == worker and
e == worker:
        c:
        if myitem == datacube:
                if myitem < 50:
                        giveto w
                else:
                        giveto e
                endif
        endif
        jump c
endif
if s == shredder:
        d:
        if myitem == datacube:
                giveto s
        endif
        jump d
endif


行数少
-- 7 Billion Humans (2056) --
-- 26: 運輸大隊 2 --

a:
if w == hole and
e == hole or
s == printer or
s == worker:
        takefrom s
endif
if w == worker and
e == worker:
        if myitem < 50:
                giveto w
        else:
                giveto e
        endif
endif
if s == shredder and
myitem == datacube:
        giveto s
endif
jump a
#2 - 2019-8-4 17:52
(整衣正色 往南三拜 焚琴煮鹤 挂印封金 ... ...)
半年了 崔耿
#2-1 - 2019-8-4 18:05
Cedar
哦不! 我的坑被发现了..
但是github上的解法不是比我的好多了嘛
给我一个更新的理由(bgm38)
#2-2 - 2019-8-4 19:29
你好F8
Cedar 说: 哦不! 我的坑被发现了..
但是github上的解法不是比我的好多了嘛
给我一个更新的理由
我喜欢自己尝试 所以没点 现在十七年了
#2-3 - 2019-8-4 21:39
Cedar
你好F8 说: 我喜欢自己尝试 所以没点 现在十七年了
更完了第一阶段
后面的..随缘吧(bgm38)
前面的简单 要敲的字少, 后面写起来就比较麻烦了..
#3 - 2020-10-11 10:17
不好意思问个问题,请问“速度指标”在游戏里是怎么看的?啊我知道肯定运行指令数越少越快,但是有玩家能用来提前知道自己要运行几秒的计算公式吗(虽然实际跑程序时我从来没有计算过)
#3-1 - 2020-10-11 12:10
Cedar
吓我一跳我还以为是催更的 (
在这个游戏里你只要掐表就行了啊 就是用了多少秒..如果你去找攻略 那大概有精确到秒的表给你查, 不过你正常玩游戏也能看出哪些操作比较费时间..
#3-2 - 2020-10-11 14:30
ydc
Cedar 说: 吓我一跳我还以为是催更的 (
在这个游戏里你只要掐表就行了啊 就是用了多少秒..如果你去找攻略 那大概有精确到秒的表给你查, 不过你正常玩游戏也能看出哪些操作比较费时间..
行……掐表感觉好麻烦2333,反正我一直是12x的速度。
嗯嗯多谢啦
#3-3 - 2020-10-11 14:33
Cedar
ydc 说: 行……掐表感觉好麻烦2333,反正我一直是12x的速度。
嗯嗯多谢啦
通关这个游戏不需要那么精确的

关联条目