ページ 11

嘘つき族と正直族の問題

Posted: 2020年2月05日(水) 23:14
by あや
受付中
回答 2
投稿 2020/02/05 19:29
評価 -5
クリップ 2
VIEW 151

aya.mon
score 7
ある村に,Aさん,Bさん,Cさん,Dさんの4人がいました.このうち2人は嘘つき族であり,このうち2人は正直族であることが分かっています.嘘つき族は必ずうそをつき,正直族は必ず正直に答えます.彼らは,論理的であり,ミスはありません.
あなたの手元には, 1,2,3,4と書かれた4枚のカードがあります.同じ数字が書かれたカードはありません.そこからランダムに選んで,一人1枚ずつ,彼らに渡しました. 彼らは,以下のように発言しました.
Aさん:私のカードは,偶数です.
Bさん:私のカードは,3か4のどちらかです.
Cさん:Bさんは,正直族です.
Dさん:私のカードは,1です.
彼らに配られた可能性のあるカードの数字と,誰が嘘つき族/正直族かを表示するプログラムを作成します.
以下が現在のコードです.

コード:

#include<iostream>
#include<string>
using namespace std;

int card_a, card_b, card_c, card_d;
int liar_a, liar_b, liar_c, liar_d;

void output() {
    cout << "配られたカード: ";
    cout << card_a << ", " << card_b << ", " << card_c << ", " << card_d << ", ";
    cout << "正直族[1],嘘つき族[0]:";
    cout << liar_a << ", " << liar_b << ", " << liar_c << ", " << liar_d << endl;
}

int check() {

}

int main() {
    for (card_a = 1; card_a < 5; card_a++) {
        for (card_b = 1; card_b < 5; card_b++) {
            if (card_b != card_a) {
                for (card_c = 1; card_c < 5; card_c++) {
                    if (card_c != card_a && card_c != card_b) {
                        for (card_d = 1; card_d < 5; card_d++) {
                            if (card_d != card_a && card_d != card_b && card_d != card_c) {
                                if (check() == true) {
                                    output();
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    cout << "プログラム終了時は何かを入力" << endl;
    int x;    cin >> x;
    return 0;
}
ここまでできたのですが,条件を満たすかどうかを判定する関数checkをどのように書けばいいのかわからないので教えてください.よろしくお願いします.

Re: 嘘つき族と正直族の問題

Posted: 2020年2月06日(木) 03:43
by box
正直なところ、プログラムで解くのはどうなのかな?と思います。
正直族と嘘つき族の組合せは
(A, B)が正直
(A, C)が正直
(A, D)が正直
(B, C)が正直
(B, D)が正直
(C, D)が正直
の6とおりしかないので、trial and errorで攻めていくのがいいような気がするんですけどね。

Re: 嘘つき族と正直族の問題

Posted: 2020年2月06日(木) 07:36
by みけCAT
オフトピック
あや さんが書きました:
6ヶ月前
受付中
回答 2
投稿 2020/02/05 19:29
評価 -5
クリップ 2
VIEW 151

aya.mon
score 7
不自然な記述、マルチポストですって言っているようなものじゃないですか…
相互リンクしなくちゃダメですよ…

C++ - 嘘つき族と正直族の問題|teratail