先说答案(毕竟好猜西普CTF-聪明的打字员-以夕阳落款),基本看一下都能知道答案至多是13(1和6交换,其余每一位用up或者down调到对应数字),然后从13往下试,最多13次就有结果了(其实没这么多次)。

还是说一说代码解决的方法:

#coding=utf-8 
import random
while True:
    #初始化
    a=[1,2,3,4,5,6]
    i=0
    num=0
    #loop
    for num in range(13):
    #1代表和1号位置交换,2代表和6号位置交换,3代表光标位置数字+1,
        #4代表光标位置数字-1,5代表光标左移一个位置,6代表光标右移一个位置
        caozuo=random.randint(1,6)
        if caozuo==1 and i==0:
            break;
        if caozuo==2 and i==5:
            break;
        if caozuo==3 and a[i]>5:
            break;
        if caozuo==4 and a[i]==1:
            break;
        if caozuo==5 and i==0:
            break;
        if caozuo==6 and i==5:
            break;
        if caozuo==1:
            temp=a[i]
            a[i]=a[0]
            a[0]=temp
        elif caozuo==2:
            temp=a[i]
            a[i]=a[5]
            a[5]=temp
        elif caozuo==3:
            a[i]=a[i]+1
        elif caozuo==4:
            a[i]=a[i]-1
        elif caozuo==5:
            i=i-1
        elif caozuo==6:
            i=i+1
        if a[0]==6 and a[1]==5 and a[2]==4 and a[3]==3 and a[4]==2 and a[5]==1:
            break
    #print a
    if a[0]==6 and a[1]==5 and a[2]==4 and a[3]==3 and a[4]==2 and a[5]==1 and num<12:
        print num+1
        break 

这方法有点无脑,就是每次随机操作,在一些时候把明显不符合的尝试终止,多次随机尝试得到答案,运气好的话应该会比从头开始搜索快点~

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: