邏輯練習《10題解答》

源于《三個變態(tài)的循環(huán)》第三題

原文鏈接http://www.cn-java.com/www1/bbs/viewthread.php?tid=93104&extra=page=1

用程序求解:
請回答下面10個問題:
1粪小、第一個答案是b的問題是哪一個庐冯?;
(a)2嗽上;(b) 3;(c)4臭胜;(d)5;(e)6
2、唯一的連續(xù)兩個具有相同答案的問題是:
(a)2郎嫁,3捡硅;(b)3哮内,4;(c)4壮韭,5北发;(d)5,6泰涂;(e)6鲫竞,7;
3逼蒙、本問題答案和哪一個問題的答案相同从绘?
(a)1;(b)2是牢;(c)4僵井;(d)7;(e)6
4驳棱、答案是a的問題的個數(shù)是:
(a)0批什;(b)1;(c)2社搅;(d)3驻债;(e)4
5乳规、本問題答案和哪一個問題的答案相同?
(a)10合呐;(b)9暮的;(c)8;(d)7淌实;(e)6
6冻辩、答案是a的問題的個數(shù)和答案是什么的問題的個數(shù)相同?
(a)b拆祈;(b)c恨闪;(c)d;(d)e放坏;(e)以上都不是
7咙咽、按照字母順序,本問題的答案和下一個問題的答案相差幾個字母轻姿?
(a)4犁珠;(b)3;(c)2互亮;(d)1犁享;(e)0 (注:a和b相差一個字母)
8、答案是元音字母的問題的個數(shù)是:
(a)2豹休;(b)3炊昆;(c)4;(d)5威根;(e)6 (注:a和e是元音字母)
9凤巨、答案是輔音字母的問題的個數(shù)是:
(a)一個質(zhì)數(shù);(b)一個階乘數(shù)洛搀;(c)一個平方數(shù)敢茁;(d)一個立方數(shù),(e)5的倍數(shù)
10留美、本問題的答案是:
(a)a彰檬;(b)b;(c)c谎砾;(d)d逢倍;(e)e

非常暈的一個題目。第一個想到的就是枚舉出所有可能的情況然后判斷是否滿足上面10個條件景图,先上代碼较雕。

public class Demo {
    public static final char DEFAULT_CHAR = 'a';

    public String[][] QA = null;

    private char[] answer = null;

    public void go() {
        init();
        answer = new char[10];
        for (char i = 'a'; i <= 'e'; i++) {
            answer[0] = i;
            for (char j = 'a'; j <= 'e'; j++) {
                answer[1] = j;
                for (char m = 'a'; m <= 'e'; m++) {
                    answer[2] = m;
                    for (char n = 'a'; n <= 'e'; n++) {
                        answer[3] = n;
                        for (char a = 'a'; a <= 'e'; a++) {
                            answer[4] = a;
                            for (char b = 'a'; b <= 'e'; b++) {
                                answer[5] = b;
                                for (char c = 'a'; c <= 'e'; c++) {
                                    answer[6] = c;
                                    for (char d = 'a'; d <= 'e'; d++) {
                                        answer[7] = d;
                                        for (char e = 'a'; e <= 'e'; e++) {
                                            answer[8] = e;
                                            for (char f = 'a'; f <= 'e'; f++) {
                                                answer[9] = f;
                                                if (matcher()) System.out.println(answer);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    /**
     * 初始化所有問題的答案
     */
    private void init() {
        QA = new String[10][5];
        QA[0] = new String[]{"2", "3", "4", "5", "6"};
        QA[1] = new String[]{"2,3", "3,4", "4,5", "5,6", "6,7"};
        QA[2] = new String[]{"1", "2", "4", "7", "6"};
        QA[3] = new String[]{"0", "1", "2", "3", "4"};
        QA[4] = new String[]{"10", "9", "8", "7", "6"};
        QA[5] = new String[]{"b", "c", "d", "e", "a"};
        QA[6] = new String[]{"4", "3", "2", "1", "0"};
        QA[7] = new String[]{"2", "3", "4", "5", "6"};
        QA[8] = new String[]{"a", "b", "c", "d", "e"};
        QA[9] = new String[]{"a", "b", "c", "d", "e"};
    }

    private boolean matcher() {
        return No1() && No2() && No3() && No4() && No5() && No6() && No7() && No8() && No9();
    }

    /**
     * 1、第一個答案是b的問題是哪一個挚币?
     */
    private boolean No1() {
        int n = indexOf('b');
        return n > -1 && n + 1 == QA[0][getAns(1)].charAt(0) - '0';
    }

    /**
     * 2亮蒋、唯一的連續(xù)兩個具有相同答案的問題是:
     */
    private boolean No2() {
        int cnt = 0, idx = 0;
        while (idx < answer.length - 1) {
            if (answer[idx] == answer[++idx]) {
                cnt++;
            }
        }
        if (cnt != 1) return false;
        String ans = QA[1][getAns(2)];
        return answer[ans.charAt(0) - '0' - 1] == answer[ans.charAt(2) - '0' - 1];
    }

    /**
     * 3扣典、本問題答案和哪一個問題的答案相同?
     */
    private boolean No3() {
        return answer[QA[2][getAns(3)].charAt(0) - '0' - 1] - DEFAULT_CHAR == getAns(3);
    }

    /**
     * 4宛蚓、答案是a的問題的個數(shù)是:
     */
    private boolean No4() {
        return QA[3][getAns(4)].charAt(0) - '0' - 1 == countChar(DEFAULT_CHAR);
    }

    /**
     * 5激捏、本問題答案和哪一個問題的答案相同设塔?
     */
    private boolean No5() {
        return answer[QA[4][getAns(5)].charAt(0) - '0' - 1] - DEFAULT_CHAR == getAns(5);
    }

    /**
     * 6凄吏、答案是a的問題的個數(shù)和答案是什么的問題的個數(shù)相同?
     */
    private boolean No6() {
        return countChar(DEFAULT_CHAR) == countChar(QA[5][getAns(6)].charAt(0));
    }

    /**
     * 7闰蛔、按照字母順序痕钢,本問題的答案和下一個問題的答案相差幾個字母?
     */
    private boolean No7() {
        return Math.abs(answer[6] - answer[7]) == QA[6][getAns(7)].charAt(0) - '0';
    }

    /**
     * 8序六、答案是元音字母的問題的個數(shù)是:
     */
    private boolean No8() {
        int c = countChar(DEFAULT_CHAR) + countChar('e');
        return QA[7][getAns(8)].charAt(0) - '0' == c;
    }

    /**
     * 9任连、答案是輔音字母的問題的個數(shù)是:
     */
    private boolean No9() {
        int c = answer.length - countChar(DEFAULT_CHAR) - countChar('e');
        boolean v;
        switch (getAns(9)) {
            case 0:
                v = (c == 2 || c == 3 || c == 5 || c == 7);
                break;
            case 1:
                v = (c == 0 || c == 2 || c == 6);
                break;
            case 2:
                v = (c == 1 || c == 4 || c == 9);
                break;
            case 3:
                v = (c == 1 || c == 8);
                break;
            case 4:
                v = (c % 5 == 0);
                break;
            default:
                v = false;
        }
        return v;
    }

    /**
     * 計算字符串中有多少個指定字符
     */
    public int countChar(char c) {
        int count = 0;
        for (char cc : answer) {
            if (cc == c) {
                count++;
            }
        }
        return count;
    }

    /**
     * 取得本題答案
     */
    public int getAns(int index) {
        return answer[index - 1] - DEFAULT_CHAR;
    }

    public int indexOf(char c) {
        for (int i = 0; i < answer.length; i++) {
            if (answer[i] == c) {
                return i;
            }
        }
        return -1;
    }


    /**
     * 測試代碼
     */
    public static void main(String[] args) {
        new Demo().go();
    }
}

最后得到兩組滿足條件的組合abddaedcbe,cdebeedcbe

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末例诀,一起剝皮案震驚了整個濱河市随抠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌繁涂,老刑警劉巖拱她,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扔罪,居然都是意外死亡秉沼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門矿酵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唬复,“玉大人,你說我怎么就攤上這事全肮〕ㄟ郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵辜腺,是天一觀的道長休建。 經(jīng)常有香客問我,道長哪自,這世上最難降的妖魔是什么丰包? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮壤巷,結(jié)果婚禮上邑彪,老公的妹妹穿的比我還像新娘。我一直安慰自己胧华,他們只是感情好寄症,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布宙彪。 她就那樣靜靜地躺著,像睡著了一般有巧。 火紅的嫁衣襯著肌膚如雪释漆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天篮迎,我揣著相機與錄音男图,去河邊找鬼。 笑死甜橱,一個胖子當著我的面吹牛逊笆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岂傲,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼难裆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镊掖?” 一聲冷哼從身側(cè)響起乃戈,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亩进,沒想到半個月后症虑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡镐侯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年侦讨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苟翻。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡韵卤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崇猫,到底是詐尸還是另有隱情沈条,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布诅炉,位于F島的核電站蜡歹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涕烧。R本人自食惡果不足惜月而,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望议纯。 院中可真熱鬧父款,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肝集,卻和暖如春瞻坝,著一層夾襖步出監(jiān)牢的瞬間浮入,已是汗流浹背蹈集。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工讥蔽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疏咐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓篙螟,卻偏偏與公主長得像我纪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子树肃,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容