ネットで見つけた「うそつき問題」をJavaで解いてみた。

 ネットで見つけた「うそつき問題」Javaで解いてみました。(^_^;
 以前、知恵袋の「うそつき問題」で作ったJavaプログラムを雛形にして作りました。(^_^;

『問題5』
ちと面倒な問題。

A〜Jの10人からなる家族の1人が花瓶を割ってしまいました。
誰が割ったのかを各人に尋ねたところ、その返答は以下のようであった

A:私ではありません
B:Aの言ったことは本当です。またCでもありません
C:割ったのはEかHのどちらかです
D:CかHのどちらかです
E:いいえ、Cではありません。また私でもありません
F:いいえ、Eです
G:いいえ、Eではありません。またAでもありません
H:Cでも私でもありません
J:割ったのはAです。私ではありません。

ところが、10人のうち本当のことを言っているのは3人だけです
その人は次のうちどれ

①AとCとE
②AとEとH
③AとDとG
④BとFとH
⑤DとEとG

●Lair02.java

/*
 * Lair02.java
 */

class Lair02 {
    public static void main(String[] args) {
        final String WITNESS="ABCDEFGHIJ "; // 最後の半角スペースは解なし用
        final int N=10;     // 証言者の人数
        final int M= 3;     // 正直者の人数
        
        int[][] witness={
            {0,1,1,1,1,1,1,1,1,1},  // Aの証言
            {0,1,0,1,1,1,1,1,1,1},  // B  〃
            {0,0,0,0,1,0,0,1,0,0},  // C  〃
            {0,0,1,0,0,0,0,1,0,0},  // D  〃
            {1,1,0,1,0,1,1,1,1,1},  // E  〃
            {0,0,0,0,1,0,0,0,0,0},  // F  〃
            {0,1,1,1,0,1,1,1,1,1},  // G  〃
            {1,1,0,1,1,1,1,0,1,1},  // H  〃
            {1,1,0,1,1,1,1,0,1,1},  // I  〃
            {1,0,0,0,0,0,0,0,0,0},  // J  〃
         };//A B C D E F G H I J
        int[] s=new int[N];
        
        long tm=System.nanoTime();      // Timer Start
        int n=N;
        String honest="";
        
        for(int i=0; i< N; i++)
            for(int j=0; j< n; j++)
                s[i]+=witness[j][i];
        for(int i=0; i< N; i++)
            if(s[i]==M){ n=i; break; }
        for(int i=0; i< N; i++)
            if(witness[i][n]==1)
                honest+=","+WITNESS.charAt(i);
        
        System.out.println("犯  人: "+WITNESS.charAt(n));
        System.out.println("正直者: "+honest.substring(1));
        tm=System.nanoTime()-tm;        // Timer Stop
        System.out.printf("Runtime : %.3f [sec]\n",(double)tm/1e9);
    }
}

●実行結果

犯  人: C
正直者: A,D,G
Runtime : 0.001 [sec]

※参考URL
知恵袋の「うそつき問題」をJavaで解いてみた。
ネットで見つけた「うそつき問題」をJavaで解いてみた。
ネットで見つけた「うそつき問題」を自分で解いてみた。

公務員試験 判断推理必殺の解法パターン

公務員試験 判断推理必殺の解法パターン

数的推理 光速の解法テクニック―公務員試験 (公務員基本書シリーズ)

数的推理 光速の解法テクニック―公務員試験 (公務員基本書シリーズ)