赛尔号『修缘试炼·战斗试炼』参考攻略
摸鱼的橙汁
2022年12月16日 17:07
收录于文集
共32篇

赛尔号『修缘试炼·战斗试炼』参考攻略

标记限制:一共5行5列,共计25个格子,被划分为5个区域(划分类型一共20种),在每个区域内只有一处标记,5个标记在不同的行与列,并且不会在对角线上相邻(即每两个标记的行数差与列数差不同时为1)。

一共有20种情况,我把每种情况的标记点一一列出,供大家参考。

 

大家可以根据不同的情况一一对照进行解谜。

当然,为了做这个攻略,我写了一段代码帮助我来摸鱼。

比如下面这种情况:

挑选4个区域输入对应坐标,输入两位数字来表示坐标,十位是行数,个位是列数,输入0结束当前区域录入,最后程序会自动寻找该游戏的解。

由于只是一个练手,就没写注释,随便写了写,也没注意什么格式。

Python代码如下:

代码块
text/x-python
自动换行
复制代码
part=[[],[],[],[],[]]

for i in range(4):
    print('\n第' + str(i+1) + '区域方块:')
    tmp=''
    while tmp!='0':
        tmp=input()
        if tmp!='0':
            part[i].append([int(tmp[0])-1,int(tmp[1])-1])
        else:
            print(part[i])


for i in range(5):
    for j in range(5):
        if [i,j] not in part[0] and [i,j] not in part[1] and [i,j] not in part[2] and [i,j] not in part[3]:
            part[4].append([i,j])
print('\n第5区域方块:')
print(part[4])

print('\n')

def checkRow(r):
    check=0
    for i in r:
        check=check+10**(i[1])
    if check==11111:
        return True
    else:
        return False

def checkPart(r):
    check=[0,0,0,0,0]
    for i in r:
        for j in range(5):
            if i in part[j]:
                check[j]=check[j]+1
                break
    if check==[1,1,1,1,1]:
        return True
    else:
        return False

def checkClose(r):
    for i in range(4):
        for j in range(i+1,5):
            if abs(r[i][0]-r[j][0])==1 and abs(r[i][1]-r[j][1])==1:
                return False
    return True

def check(r):
    return checkRow(r) and checkPart(r) and checkClose(r)

r=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1]]
result=[]
for a in range(5):
    r[0]=[0,a]
    for b in range(5):
        r[1]=[1,b]
        for c in range(5):
            r[2]=[2,c]
            for d in range(5):
                r[3]=[3,d]
                for e in range(5):
                    r[4]=[4,e]
                    if check(r):
                        print(r)
                        for i in range(5):
                            tmp=''
                            for j in range(5):
                                if [i,j] in r:
                                    tmp=tmp+'■'
                                else:
                                    tmp=tmp+'□'
                            print(tmp)
复制成功

part=[[],[],[],[],[]]

for i in range(4):

    print('\n第' + str(i+1) + '区域方块:')

    tmp=''

    while tmp!='0':

        tmp=input()

        if tmp!='0':

            part[i].append([int(tmp[0])-1,int(tmp[1])-1])

        else:

            print(part[i])

for i in range(5):

    for j in range(5):

        if [i,j] not in part[0] and [i,j] not in part[1] and [i,j] not in part[2] and [i,j] not in part[3]:

            part[4].append([i,j])

print('\n第5区域方块:')

print(part[4])

print('\n')

def checkRow(r):

    check=0

    for i in r:

        check=check+10**(i[1])

    if check==11111:

        return True

    else:

        return False

def checkPart(r):

    check=[0,0,0,0,0]

    for i in r:

        for j in range(5):

            if i in part[j]:

                check[j]=check[j]+1

                break

    if check==[1,1,1,1,1]:

        return True

    else:

        return False

def checkClose(r):

    for i in range(4):

        for j in range(i+1,5):

            if abs(r[i][0]-r[j][0])==1 and abs(r[i][1]-r[j][1])==1:

                return False

    return True

def check(r):

    return checkRow(r) and checkPart(r) and checkClose(r)

r=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1]]

result=[]

for a in range(5):

    r[0]=[0,a]

    for b in range(5):

        r[1]=[1,b]

        for c in range(5):

            r[2]=[2,c]

            for d in range(5):

                r[3]=[3,d]

                for e in range(5):

                    r[4]=[4,e]

                    if check(r):

                        print(r)

                        for i in range(5):

                            tmp=''

                            for j in range(5):

                                if [i,j] in r:

                                    tmp=tmp+'■'

                                else:

                                    tmp=tmp+'□'

                            print(tmp)

最后祝大家玩得开心,欢迎点赞、评论、转发,听说关注我的人都变帅了。