python爱因斯坦的问题_爱因斯坦的思考题.py
"""愛(ài)因斯坦的思考題
這是一個(gè)很有趣的邏輯推理題,傳說(shuō)是愛(ài)因斯坦提出來(lái)的,他宣稱世界上只有2%的人能解出這個(gè)題目,
傳說(shuō)不一定屬實(shí),但是這個(gè)推理題還是很有意思的。
題目是這樣的,據(jù)說(shuō)有五個(gè)不同顏色的房間排成一排,每個(gè)房間里分別住著一個(gè)不同國(guó)籍的人,
每個(gè)人都喝一種特定品牌的飲料,抽一種特定品牌的煙,養(yǎng)一種寵物,沒(méi)有任意兩個(gè)人抽相同品牌的香煙,
或喝相同品牌的飲料,或養(yǎng)相同的寵物,問(wèn)題是誰(shuí)在養(yǎng)魚(yú)作為寵物?
為了尋找答案,愛(ài)因斯坦給出了十五條線索:
(1)、英國(guó)人住在紅色的房子里;
(2)、瑞典人養(yǎng)狗作為寵物;
(3)、丹麥人喝茶;
(4)、綠房子緊挨著白房子,在白房子的左邊;
(5)、綠房子的主人喝咖啡;
(6)、抽PallMall牌香煙的人養(yǎng)鳥(niǎo);
(7)、黃色房子里的人抽Dunhill牌香煙;
(8)、住在中間那個(gè)房子里的人喝牛奶;
(9)、挪威人住在第一個(gè)房子里面;
(10)、抽Blends牌香煙的人和養(yǎng)貓的人相鄰;
(11)、養(yǎng)馬的人和抽Dunhill牌香煙的人相鄰;
(12)、抽BlueMaster牌香煙的人喝啤酒;
(13)、德國(guó)人抽Prince牌香煙;
(14)、挪威人和住在藍(lán)房子的人相鄰;
(15)、抽Blends牌香煙的人和喝礦泉水的人相鄰。
"""
import itertools
import sys
country = ['英國(guó)人', '瑞典人', '丹麥人', '挪威人', '德國(guó)人']
house = ['紅房子', '白房子', '綠房子', '黃房子', '藍(lán)房子']
drink = ['茶', '咖啡', '牛奶', '啤酒', '礦泉水']
smoke = ['PallMall', 'Dunhill', 'Blends', 'BlueMaster', 'Prince']
pet = ['狗', '鳥(niǎo)', '貓', '馬', '魚(yú)']
country_list = list(itertools.permutations(country))
# (9)、挪威人住在第一個(gè)房子里面;
for x in country_list[:]:
if x.index('挪威人') not in [0, 4]:
country_list.remove(x)
house_list = list(itertools.permutations(house))
#(4)、綠房子緊挨著白房子,在白房子的左邊;
for x in house_list[:]:
if x.index('綠房子') - x.index('白房子') not in [-1, 1]:
house_list.remove(x)
#(8)、住在中間那個(gè)房子里的人喝牛奶;
drink_list = [x for x in list(itertools.permutations(drink)) if x[2]=='牛奶']
smoke_list = list(itertools.permutations(smoke))
pet_list = list(itertools.permutations(pet))
a = []
for c in country_list:
for h in house_list:
if c.index('英國(guó)人')!=h.index('紅房子'):
# (1)、英國(guó)人住在紅色的房子里;
continue
if c.index('挪威人') - h.index('藍(lán)房子') not in [-1, 1]:
#(14)、挪威人和住在藍(lán)房子的人相鄰;
continue
for d in drink_list:
if c.index('丹麥人') != d.index('茶'):
# (3)、丹麥人喝茶;
continue
if h.index('綠房子') != d.index('咖啡'):
# (5)、綠房子的主人喝咖啡;
continue
for s in smoke_list:
if c.index('德國(guó)人') != s.index('Prince'):
# (13)、德國(guó)人抽Prince牌香煙;
continue
if h.index('黃房子') != s.index('Dunhill'):
# (7)、黃色房子里的人抽Dunhill牌香煙;
continue
if d.index('啤酒') != s.index('BlueMaster'):
# (12)、抽BlueMaster牌香煙的人喝啤酒;
continue
if d.index('礦泉水') - s.index('Blends') not in [-1, 1]:
# (15)、抽Blends牌香煙的人和喝礦泉水的人相鄰。
continue
for p in pet_list:
if c.index('瑞典人') != p.index('狗'):
# (2)、瑞典人養(yǎng)狗作為寵物;
continue
if s.index('PallMall') != p.index('鳥(niǎo)'):
# (6)、抽PallMall牌香煙的人養(yǎng)鳥(niǎo);
continue
if s.index('Blends') - p.index('貓') not in [-1, 1]:
# (10)、抽Blends牌香煙的人和養(yǎng)貓的人相鄰;
continue
if s.index('Dunhill') - p.index('馬') not in [-1, 1]:
# (11)、養(yǎng)馬的人和抽Dunhill牌香煙的人相鄰;
continue
plan = [c, h, d, s, p]
print(c[p.index('魚(yú)')])
sys.exit()
一鍵復(fù)制
編輯
Web IDE
原始數(shù)據(jù)
按行查看
歷史
總結(jié)
以上是生活随笔為你收集整理的python爱因斯坦的问题_爱因斯坦的思考题.py的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python矩阵对角化_numpy创建单
- 下一篇: 移动端 H5 分屏页面适配问题--设计稿