天国の門、地獄の門

JUGEMテーマ:ゲーム


天国と地獄の問題の答えがわからん

ちょっと気になった、クイズ Yahoo知恵袋

むかし、このクイズをしったとき、
「あなたの後ろの門が天国行きかどうかむこうの門番に聞いたら何と答えるだろう? 」
ときいてその答えの反対に行くのが正解ときいたことがある。

「私があなたに『この門は天国への門ですか』とたずねたら、
あなたは『はい』と答えますか」ときいてそれにしたがうのがシンプルでいいみたいね。



Ruby版
def honest(q)
if q == TRUE then return true ; else return false ; end
end
def liar(q)
if q == TRUE then return false ; else return true ; end
end
gate1="heaven"; q = (gate1 == "heaven")
puts "その門が天国の門である場合"
puts "天国への門ですか?"
print "正直者: ", honest(q).to_s ,"¥n"
print "嘘つき: ", liar(q).to_s,"¥n"
puts "※あなたの後ろの門が天国行きかどうかむこうの門番に聞いたら何と答えるだろう?"
print "正直者: ", honest(liar(q)).to_s,"¥n"
print "嘘つき: ", liar(honest(q)).to_s,"¥n"
puts "※「あなたの後ろの門は天国の門ですか?」と聞かれたら、あなたは「はい」と答えますか?"
print "正直者: ", honest(honest(q)).to_s,"¥n"
print "嘘つき: ", liar(liar(q)).to_s,"¥n"


# 地獄と仮定してみる
gate1="hell"; q = (gate1 == "heaven")
puts "その門が地獄への門である場合"
puts "天国への門ですか?"
print "正直者: ", honest(q).to_s,"¥n"
print "嘘つき: ", liar(q).to_s,"¥n"
puts "※あなたの後ろの門が天国行きかどうかむこうの門番に聞いたら何と答えるだろう?"
print "正直者: ", honest(liar(q)).to_s,"¥n"
print "嘘つき: ", liar(honest(q)).to_s,"¥n"
puts "※「あなたの後ろの門は天国の門ですか?」と聞かれたら、あなたは「はい」と答えますか?"
print "正直者: ", honest(honest(q)).to_s,"¥n"
print "嘘つき: ", liar(liar(q)).to_s,"¥n"



Java版

public class Monban{
public static void main(String[] args){
boolean q = true; //その門が天国の門である。
MonbanPersonal honest = new MonbanPersonal(true);
MonbanPersonal liar = new MonbanPersonal(false);
System.out.println("その門が天国の門である場合");
System.out.println("天国への門ですか?");
System.out.println("正直者: "+Boolean.toString(honest.answer(q)));
System.out.println("嘘つき: "+Boolean.toString(liar.answer(q)));
System.out.println("※あなたの後ろの門が天国行きかどうかむこうの門番に聞いたら何と答えるだろう?");
System.out.println("正直者: "+Boolean.toString(honest.answer(liar.answer(q))));
System.out.println("嘘つき: "+Boolean.toString(liar.answer(honest.answer(q))));
System.out.println("※「あなたの後ろの門は天国の門ですか?」と聞かれたら、あなたは「はい」と答えますか?");
System.out.println("正直者: "+Boolean.toString(honest.answer(honest.answer(q))));
System.out.println("嘘つき: "+Boolean.toString(liar.answer(liar.answer(q))));
q = false; //その門が地獄の門である。
System.out.println("その門が地獄の門である場合");
System.out.println("天国への門ですか?");
System.out.println("正直者: "+Boolean.toString(honest.answer(q)));
System.out.println("嘘つき: "+Boolean.toString(liar.answer(q)));
System.out.println("※※あなたの後ろの門が天国行きかどうかむこうの門番に聞いたら何と答えるだろう?");
System.out.println("正直者: "+Boolean.toString(honest.answer(liar.answer(q))));
System.out.println("嘘つき: "+Boolean.toString(liar.answer(honest.answer(q))));
System.out.println("※あなたの後ろの門は天国への門ですか?」と聞かれたら、あなたは「はい」と答えますか?");
System.out.println("正直者: "+Boolean.toString(honest.answer(honest.answer(q))));
System.out.println("嘘つき: "+Boolean.toString(liar.answer(liar.answer(q))));
}
}
class MonbanPersonal{
boolean personality; // true 正直 , false 嘘つき
public MonbanPersonal(boolean personality){
this.personality = personality;
}
public boolean answer(boolean q){
return (this.personality==q)?true:false;
}
}

※付きの質問はどっちに聞いても二人共同じ答えになる。
結局、問い質した本人に 本人がなんて答えるかを
考えさせるか、向こう側がなんて答えるか考えさせるかの違いということがわかった。
これで天国にいけるかのう?

コメント

このブログの人気の投稿

4.3.0 Temporary Lookup Failureでドツボってた話

tomcat起動時の環境変数でJRE_HOMEを指定するときに

何が得られて何処へ向かうかだけを問うべき