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