论无聊的人做什么:模仿游戏

作者: 文十言 | 来源:发表于2015-01-25 23:46 被阅读358次

前几天看到同学在微博分享了一页逻辑题,大概是这样的:

fcfa94eef01f3a290220153a9a25bc315e607c8c.jpg

粗略看了一下,确实费脑筋。年纪大了本不想动脑子,可今天突发奇想,干脆用电脑暴力破解吧!

这种题如果动脑子想,首先是个费时间的活儿,一般这类题是没有特别明显的突破口的,总是或多或少的需要人脑去试错,不但考验逻辑推理,记忆力不行还会崩溃。既然如此,干脆穷举试错,这道题一共4^10=1048576种答案,反正cpu不会缺氧(图灵破解英格玛是个啥感觉!)。

打开eclipse,突然有点小迷茫。本想用数组的方式,先将这1048576种答案列好,然后用4进制的形式表达。先不说之后怎么试错,光转换4进制就难住我了。思索了15分钟,索性直接用了10个for。。。

接下来开始按照题目(a0-a9代表1-10题的答案,0-3代表abcd)编辑各种套娃式的if语句,第一题写出来等于废话,略过;从第2题开始到第6题及其顺畅,非常明显的“或且非”,5分钟搞定,而且没完成一个答案个数都是指数型递减;第7题感觉略显复杂,没关系,不爱动脑就用笨方法,函数式编程,花5分钟做函数,搞定。

此时再一次测试,发现当初那100多万个答案只剩下两个了:

3EC7D422-DBDC-4548-AE7A-559FCFFEAFB8.png

代表BCACACDABA和DCACACBADA(从0开始数数!)。随后发现还没有编进去的8、9、10题中8、10题答案是一样的,外加没有写进去的第1题,发现这套题实际有用条件只有2、3、4、5、6、7、9几个。看看时间不早,还有电视剧要赶,于是取巧只把第9题写了进去,得到最终答案BCACACDABA。

最后附上代码,呵呵。。。

public class Main {
    public static int question7(int a0,int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9)
    {
        int[] a=new int[10];
        a[0]=a0;a[1]=a1;a[2]=a2;a[3]=a3;a[4]=a4;a[5]=a5;a[6]=a6;a[7]=a7;a[8]=a8;a[9]=a9;
        int count0=0;int count1=0;int count2=0;int count3=0;
        for(int i=0;i<10;i++)
        {
            if(a[i]==0)
                count0++;
            if(a[i]==1)
                count1++;
            if(a[i]==2)
                count2++;
            if(a[i]==3)
                count3++;
        }
        if(count0<=count1&&count0<=count2&&count0<=count3)
            return 0;
        if(count1<=count0&&count1<=count2&&count1<=count3)
            return 1;
        if(count2<=count0&&count2<=count1&&count2<=count3)
            return 2;
        if(count3<=count0&&count3<=count1&&count3<=count2)
            return 3;
        return 0;
    }
    
    public static void main(String[] args) {
        int a0;int a1;int a2;int a3;int a4;int a5;int a6;int a7;int a8;int a9;
        for(a0=0;a0<4;a0++)
        {
            for(a1=0;a1<4;a1++)
            {
                for(a2=0;a2<4;a2++)
                {
                    for(a3=0;a3<4;a3++)
                    {
                        for(a4=0;a4<4;a4++)
                        {
                            for(a5=0;a5<4;a5++)
                            {
                                for(a6=0;a6<4;a6++)
                                {
                                    for(a7=0;a7<4;a7++)
                                    {
                                        for(a8=0;a8<4;a8++)
                                        {
                                            for(a9=0;a9<4;a9++)
                                            {
                                                if((a1==0&&a4==2)||(a1==1&&a4==3)||(a1==2&&a4==0)||(a1==3&&a4==1))//2
                                                {
                                                    if((a2==a5&&a5==a1&&a3!=a2&&a2==3)||(a2==a5&&a5!=a1&&a3==a2&&a2==2)||(a2!=a5&&a5==a1&&a3==a1&&a2==0)||(a2!=a5&&a2==a1&&a3==a2&&a2==1))//3
                                                    {
                                                        if((a3==0&&a0==a4)||(a3==1&&a1==a6)||(a3==2&&a0==a8)||(a3==3&&a5==a9))//4
                                                        {
                                                            if((a4==0&&a7==a4)||(a4==1&&a3==a4)||(a4==2&&a4==a8)||(a4==3&&a4==a6))//5
                                                            {
                                                                if((a5==0&&a7==a1&&a7==a3)||(a5==1&&a7==a0&&a7==a5)||(a5==2&&a7==a2&&a7==a9)||(a5==3&&a7==a4&&a7==a8))//6
                                                                {
                                                                    if((a6==0&&question7(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)==2)||(a6==1&&question7(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)==1)||(a6==2&&question7(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)==0)||(a6==3&&question7(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)==3))//7
                                                                    {
                                                                        if((a8==0&&((!(a0==a5))==(a4==a5)))||(a8==1&&((!(a0==a5))==(a4==a9)))||(a8==2&&((!(a0==a5))==(a4==a1)))||(a8==3&&((!(a0==a5))==(a4==a8))))//9
                                                                        System.out.println(a0+""+a1+""+a2+""+a3+""+a4+""+a5+""+a6+""+a7+""+a8+""+a9);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

相关文章

  • 论无聊的人做什么:模仿游戏

    前几天看到同学在微博分享了一页逻辑题,大概是这样的: 粗略看了一下,确实费脑筋。年纪大了本不想动脑子,可今天突发奇...

  • 更无聊的人做什么:检查模仿游戏的答案

    一个月前看到琉璃心仙人先生的《论无聊的人做什么:模仿游戏》,顿觉有趣。对于这种混杂缠绕在一起的问题,我立刻产生一个...

  • 【三知论.模仿游戏……】

    1.《模仿游戏》 电脑的起源,图灵精彩而又坎坷的一生。天才总是孤独的,他们与众不同,为所谓的正常人、世俗社会所不容...

  • 【游戏】萌犬便便便:你的时间就像便便一样被冲走了

    究竟是为了满足无聊的人创造无聊的游戏,还是无聊的游戏造就了无聊的人? 事先声明,我不是来推荐游戏的,也不是来诋毁游...

  • 用什么来化解工作中的那些疲乏?

    【论工作中的游戏力】 工作太无聊,没有打游戏过瘾,领导离开,电脑里的游戏,立刻浮出桌面,领导来了,游戏立刻潜水,这...

  • 3月 | 金币系统:人生游戏指南

    A P P「 番茄习惯 」「我的小目标」 方法论模仿游戏的及时反馈机制,现实生活中不是你努力就会有回报,但游戏是。...

  • 要做到一件事,最好的方法是

    向成功的人模仿 方法论 物理上靠近。 风格上靠近。 内容上靠近。

  • 论模仿

    要想做事情,第一步必须去模仿,去实现一些别人已经实现的东西,在此基础上进行创新,因为要想一下子做出颠覆性的东西,可...

  • 模仿游戏

    影片"模仿游戏",根据事实改编而成。讲了二战时期在英国的曼彻斯特艾伦·图灵博士经过困难重重破解敌方密码机,...

  • 模仿游戏。

    昨天晚上饭后散步,微风习习,好不惬意。 有很多人在遛孩子,也有人在遛狗。哦不,我看到了一只狗在遛主人。 他穿着一件...

网友评论

本文标题:论无聊的人做什么:模仿游戏

本文链接:https://www.haomeiwen.com/subject/ojskxttx.html