![]() |
爱因斯坦的问题,他说全世界有98%的人做不出来! - 打印版本 +- MyTFLS社区 (https://community.mytfls.com) +-- 论坛: MyTFLS专区 (https://community.mytfls.com/forum-6.html) +--- 论坛: 休闲俱乐部 (https://community.mytfls.com/forum-37.html) +--- 主题: 爱因斯坦的问题,他说全世界有98%的人做不出来! (/thread-8681.html) 页:
1
2
|
爱因斯坦的问题,他说全世界有98%的人做不出来! - cool.44 - 2005-7-28 爱因斯坦在20世纪初出的这个谜语,题目是这样的: 1、在一条街上,有5座房子,喷了5种颜色。 2、每个房里住着不同国籍的人。 3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物。 提示: 1、英国人住红色房子 2、瑞典人养狗 3、丹麦人喝茶 4、绿色房子在白色房子左面 5、绿色房子主人喝咖啡 6、抽Pall Mall香烟的人养鸟 7、黄色房子主人抽Dunhill香烟 8、住在中间房子的人喝牛奶 9、挪威人住第一间房 10、抽Blends香烟的人住在养猫的人隔壁 11、养马的人住在抽Dunhill香烟的人隔壁 12、抽Blue Master的人喝啤酒 13、德国人抽Prince香烟 14、挪威人住蓝色房子隔壁 15、抽Blends香烟的人有一个喝水的邻居 问题是:谁养鱼? - 秋天的落叶 - 2005-7-29 原来看过这个题,可惜忘了答案了 - 叱咤风云№ - 2005-7-29 见好多次了 不过每次想也都挺搁撂的 - 鹤冲天 - 2005-7-29 肯做就能做出来 极简单 就是多次重复简易推理 - yanxiang - 2005-7-29 不會吧,妳們很有耐心? - 大花狗上树 - 2005-7-29 我懒得想,写个程序让电脑自己捉么。 挪威 丹麦 英国 德国 瑞典 黄色 蓝色 红色 绿色 白色 养猫 养马 养鸟 养鱼 养狗 喝水 喝茶 牛奶 咖啡 啤酒 Dunhill Belends Pall Mall Prince Blue Master - 叱咤风云№ - 2005-7-29 啊 用电脑怎么弄了 - 大花狗上树 - 2005-7-29 Dim country() As String = {"挪威", "英国", "瑞典", "德国", "丹麦"} Dim color() As String = {"蓝色", "绿色", "红色", "白色", "黄色"} Dim pet() As String = {"马", "狗", "鸟", "猫", "鱼"} Dim drink() As String = {"牛奶", "咖啡", "茶", "水", "啤酒"} Dim cig() As String = {"Dunhill", "Pall Mall", "Blends", "Blue Master", "Prince"} Function getidx(ByVal one_array() As String, ByVal cont As String) As Integer Dim index, id As Integer For index = 0 To 4 If one_array(index) = cont Then id = index End If Next Return id End Function Function pd(ByVal country() As String, ByVal color() As String, ByVal pet() As String, ByVal drink() As String, ByVal cig() As String) As Integer Dim g As Integer g = 0 '1、英国人住红色房子 If getidx(country, "英国") = getidx(color, "红色") Then g = g + 1 End If '2、瑞典人养狗 If getidx(country, "瑞典") = getidx(pet, "狗") Then g = g + 1 End If '3、丹麦人喝茶 If getidx(country, "丹麦") = getidx(drink, "茶") Then g = g + 1 End If '4、绿色房子在白色房子左面 If getidx(color, "白色") <> 0 Then If getidx(color, "绿色") = getidx(color, "白色") - 1 Then g = g + 1 End If End If '5、绿色房子主人喝咖啡 If getidx(color, "绿色") = getidx(drink, "咖啡") Then g = g + 1 End If '6、抽Pall Mall香烟的人养鸟 If getidx(cig, "Pall Mall") = getidx(pet, "鸟") Then g = g + 1 End If '7、黄色房子主人抽Dunhill香烟 If getidx(color, "黄色") = getidx(cig, "Dunhill") Then g = g + 1 End If '8、住在中间房子的人喝牛奶 If drink(2) = "牛奶" Then g = g + 1 End If '9、挪威人住第一间房 If country(0) = "挪威" Then g = g + 1 End If '10、抽Blends香烟的人住在养猫的人隔壁 If getidx(pet, "猫") <> 4 Then If getidx(cig, "Blends") = getidx(pet, "猫") + 1 Then g = g + 1 End If Else If getidx(pet, "猫") <> 0 Then If getidx(cig, "Blends") = getidx(pet, "猫") - 1 Then g = g + 1 End If End If End If '11、养马的人住在抽Dunhill香烟的人隔壁 If getidx(cig, "Dunhill") <> 4 Then If getidx(pet, "马") = getidx(cig, "Dunhill") + 1 Then g = g + 1 End If Else If getidx(cig, "Dunhill") <> 0 Then If getidx(pet, "马") = getidx(cig, "Dunhill") - 1 Then g = g + 1 End If End If End If '12、抽Blue Master的人喝啤酒 If getidx(cig, "Blue Master") = getidx(drink, "啤酒") Then g = g + 1 End If '13、德国人抽Prince香烟 If getidx(country, "德国") = getidx(cig, "Prince") Then g = g + 1 End If '14、挪威人住蓝色房子隔壁 If color(1) = "蓝色" Then g = g + 1 End If '15、抽Blends香烟的人有一个喝水的邻居 If getidx(drink, "水") <> 4 Then If getidx(cig, "Blends") = getidx(drink, "水") + 1 Then g = g + 1 End If Else If getidx(drink, "水") <> 0 Then If getidx(cig, "Blends") = getidx(drink, "水") - 1 Then g = g + 1 End If End If End If If g = 15 Then Return g Else Return 0 End If End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, b, c, d, f, id As Integer Dim aa(5), bb(5), cc(5), dd(5), ff(5) As String Dim aaa(6, 5) As String Dim bbb(6, 5) As String Dim ccc(24, 5) As String Dim ddd(12, 5) As String Dim fff(24, 5) As String id = 0 a = 1000 b = 2000 c = 3000 d = 4000 f = 5000 For b = 2 To 4 'For c = 1 To 4 For d = 2 To 4 For f = 2 To 4 If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then aaa(id, 0) = country(0) aaa(id, 1) = country(b) aaa(id, 2) = country(1) aaa(id, 3) = country(d) aaa(id, 4) = country(f) id = id + 1 End If Next Next 'Next Next id = 0 a = 1000 b = 2000 c = 3000 d = 4000 f = 5000 For a = 2 To 4 'For b = 0 To 4 For c = 2 To 4 For d = 1 To 4 For f = 2 To 4 If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then bbb(id, 0) = color(a) bbb(id, 1) = color(0) bbb(id, 2) = color© bbb(id, 3) = color(d) bbb(id, 4) = color(f) id = id + 1 End If Next Next Next 'Next Next id = 0 a = 1000 b = 2000 c = 3000 d = 4000 f = 5000 For a = 1 To 4 'For b = 0 To 4 For c = 1 To 4 For d = 1 To 4 For f = 1 To 4 If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then ccc(id, 0) = pet(a) ccc(id, 1) = "马" ccc(id, 2) = pet© ccc(id, 3) = pet(d) ccc(id, 4) = pet(f) id = id + 1 End If Next Next Next 'Next Next id = 0 a = 1000 b = 2000 c = 3000 d = 4000 f = 5000 For a = 1 To 4 For b = 2 To 4 'For c = 0 To 4 For d = 1 To 4 For f = 2 To 4 If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then ddd(id, 0) = drink(a) ddd(id, 1) = drink(b) ddd(id, 2) = drink(0) ddd(id, 3) = drink(d) ddd(id, 4) = drink(f) id = id + 1 End If 'Next Next Next Next Next id = 0 a = 1000 b = 2000 c = 3000 d = 4000 f = 5000 For b = 1 To 4 For c = 1 To 4 For d = 1 To 4 For f = 1 To 4 If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then fff(id, 0) = "Dunhill" fff(id, 1) = cig(b) fff(id, 2) = cig© fff(id, 3) = cig(d) fff(id, 4) = cig(f) id = id + 1 End If Next Next Next Next For a = 0 To 5 'For b = 0 To 5 For c = 0 To 23 For d = 0 To 11 For f = 0 To 23 aa(0) = "挪威" aa(1) = aaa(a, 1) aa(2) = "英国" aa(3) = aaa(a, 3) aa(4) = aaa(a, 4) bb(0) = "黄色" 'bbb(b, 0) bb(1) = "蓝色" 'bbb(b, 1) bb(2) = "红色" 'bbb(b, 2) bb(3) = "绿色" 'bbb(b, 3) bb(4) = "白色" 'bbb(b, 4) cc(0) = ccc(c, 0) cc(1) = ccc(c, 1) cc(2) = ccc(c, 2) cc(3) = ccc(c, 3) cc(4) = ccc(c, 4) dd(0) = ddd(d, 0) dd(1) = ddd(d, 1) dd(2) = ddd(d, 2) dd(3) = ddd(d, 3) dd(4) = ddd(d, 4) ff(0) = fff(f, 0) ff(1) = fff(f, 1) ff(2) = fff(f, 2) ff(3) = fff(f, 3) ff(4) = fff(f, 4) If pd(aa, bb, cc, dd, ff) = 15 Then ListBox1.Items.Add(aa(0) + " " + aa(1) + " " + aa(2) + " " + aa(3) + " " + aa(4)) ListBox1.Items.Add(bb(0) + " " + bb(1) + " " + bb(2) + " " + bb(3) + " " + bb(4)) ListBox1.Items.Add(cc(0) + " " + cc(1) + " " + cc(2) + " " + cc(3) + " " + cc(4)) ListBox1.Items.Add(dd(0) + " " + dd(1) + " " + dd(2) + " " + dd(3) + " " + dd(4)) ListBox1.Items.Add(ff(0) + " " + ff(1) + " " + ff(2) + " " + ff(3) + " " + ff(4)) Exit Sub End If Next Next Next 'Next Next End Sub End Class 这个是个笨办法,用递归速度会更快。 - 因我存在的明天 - 2005-7-29 高手就是高手... - 适度深蓝 - 2005-7-29 强就一个字,强到外婆桥。。。。 |