烟雨江湖吧 关注:230,592贴子:7,619,290
  • 9回复贴,共1

千机阁推旗子方法

取消只看楼主收藏回复

这个推旗子机关太坑了,绞尽脑汁之后,还好我技高一筹
python 代码我粘贴在这里了,改一下 init state 的初始状态,直接跑就可以了
from os import sys
import random
target = 2
step = 4
init_state = [1, 1, 0, 2]
def move(state, index, bias):
state[index] = (state[index] + bias) % step
def pull(state, index):
move(state, index, 1)
(index > 0) and move(state, index-1, -1)
((index + 1) < len(state)) and move(state, index+1, -1)
def check(state):
return all([s == target for s in state])
def apply_record(record):
state = [s for s in init_state]
print("init state: ", state)
for i, r in enumerate(record):
pull(state, r)
print("step:", i, "pull:", r, "=>", state)
def run(state, max_steps = 10, record = []):
global solution
if check(state):
apply_record(record)
return True
if max_steps == 0:
return False
index_list = list(range(len(init_state)))
random.shuffle(index_list)
for i in index_list:
new_state = [s for s in state]
record.append(i)
pull(new_state, i)
if run(new_state, max_steps-1):
return True
record.pop(-1)
for max_step in range(10, 20):
if run(init_state, max_steps=max_step):
break


IP属地:江苏来自Android客户端1楼2022-06-30 21:41回复
    我顶


    IP属地:江苏来自Android客户端2楼2022-06-30 21:43
    回复
      今天的点灯也绞尽脑汁,再次暴力搜索。
      话说又碰到昨天推旗子的关了,重复跑一次脚本,很轻松



      IP属地:江苏来自Android客户端12楼2022-07-01 12:08
      回复
        算了,不知道为什么今天代码粘不上去,老自动删我回复,放弃了


        IP属地:江苏来自Android客户端17楼2022-07-01 12:32
        回复
          想了想,办法总比困难多。总不至于还能分析图片删我回复吧


          IP属地:江苏来自iPhone客户端21楼2022-07-01 13:01
          回复
            楼上,你的解
            init state: [2, 1, 1, 0]
            step: 0 pull: 0 => [3, 0, 1, 0]
            step: 1 pull: 3 => [3, 0, 0, 1]
            step: 2 pull: 0 => [0, 3, 0, 1]
            step: 3 pull: 3 => [0, 3, 3, 2]
            step: 4 pull: 1 => [3, 0, 2, 2]
            step: 5 pull: 2 => [3, 3, 3, 1]
            step: 6 pull: 1 => [2, 0, 2, 1]
            step: 7 pull: 1 => [1, 1, 1, 1]


            IP属地:江苏来自Android客户端30楼2022-07-01 17:25
            收起回复
              看了一下还有个千机塔魔方游戏,也暴力枚举了一下。竟然花我32秒,明天五阶魔方岂不是都很玄,逼我上c++吗



              IP属地:江苏来自Android客户端35楼2022-07-01 17:50
              回复
                接上一条老规矩,发代码图片,这次有点多,做了一些优化,搜索空间太大了



                IP属地:江苏来自Android客户端37楼2022-07-01 18:03
                收起回复
                  今天又是艰难的一天,我发现5*5点灯暴搜竟然都很困难,然后我换了种写法,直接从解状态暴力搜,还是很慢,我都准备上c++了,结果写到一半,python出结果了,美滋滋


                  IP属地:江苏来自iPhone客户端45楼2022-07-02 17:31
                  回复
                    点宫灯的代码v2版本,尽请查收


                    IP属地:江苏来自iPhone客户端46楼2022-07-02 17:41
                    回复