這是愛因斯坦在20世紀初提的謎題

2021-06-22 14:22:41 字數 3746 閱讀 3679

大學時**的程式,現在看起來真醜啊

/* 這是愛因斯坦在20世紀初提的謎題。在一條街上,有5座房子,噴5種顏色。

每個房子住不同國籍的人,每個人喝不同的飲料,抽不同品牌的香菸,養不同的寵物。

請問誰養魚?

1、英國人住紅房子。

2、瑞典人養狗。

3、丹麥人喝茶。

4、綠色房子在白色房子左面隔壁。

5、綠色房子主人喝咖啡。

6、抽pall mall香菸的人養鳥。

7、黃色房子主人抽dunhill香菸。

8、住在中間房子的人喝牛奶。

9、挪威人住在第一間房子。

10、抽blends香菸的人住在養貓的人的隔壁。

11、養馬的人住抽dunhill香菸的人的隔壁。

12、抽blue master香菸的人喝啤酒。

13、德國人抽prince香菸。

14、挪威人住在藍色房子隔壁。

15、抽blends香菸的人有個喝水的鄰居。

*/#include

#include

enum

;char color_str[5][20]=

;enum

;char country_str[5][20]=

;enum

;char cigarette_str[5][20] =

;enum

;char pets_str[5][20] =

;enum

;char drink_str[5][20] =

;char color[120][5];

char country[120][5];

char pets[120][5];

char cigarette[120][5];

char drink[120][5];

#define copy(x,y) \

(x)[y][0] = i1;\

(x)[y][1] = i2;\

(x)[y][2] = i3;\

(x)[y][3] = i4;\

(x)[y][4] = i5;

#define loop(v,min,max)    \

for(int v=(min);v<(max);v++)

#define neq2(a,b)    \

if(a == b)continue

#define neq3(a,b,c)    \

if(a == b || a == c ) continue

#define neq4(a,b,c,d)    \

if(a == b || a == c || a == d)continue

#define neq5(a,b,c,d,e)    \

if(a == b || a == c || a == d || a == e)continue

#define check(clr,cty,cig,pet,drk)    \

/*1、英國人住紅房子。*/    \

country[(cty)][english] == color[(clr)][red] &&        \

/*2、瑞典人養狗。*/    \

country[(cty)][ruidian] == pets[(pet)][dog] &&        \

/*3、丹麥人喝茶。*/    \

country[(cty)][danmai] == drink[(drk)][tea] &&        \

/*4、綠色房子在白色房子左面隔壁。*/    \

color[(clr)][green] == color[(clr)][white] - 1 &&        \

/*5、綠色房子主人喝咖啡。*/    \

color[(clr)][green] == drink[(drk)][coffee] &&        \

/*6、抽pall mall香菸的人養鳥。*/    \

cigarette[(cig)][pall_mall] == pets[(pet)][bird] &&        \

/*7、黃色房子主人抽dunhill香菸。*/    \

color[(clr)][yellow] == cigarette[(cig)][dunhill]  &&    \

/*8、住在中間房子的人喝牛奶。*/    \

drink[(drk)][milk] == 2    &&            \

/*9、挪威人住在第一間房子。*/    \

country[(cty)][nuowei] == 0 &&        \

/*10、抽blends香菸的人住在養貓的人的隔壁。*/    \

(cigarette[(cig)][blends] == pets[(pet)][cat] - 1 ||        \

cigarette[(cig)][blends] == pets[(pet)][cat] + 1 )&&        \

/*11、養馬的人住抽dunhill香菸的人的隔壁。*/    \

(pets[(pet)][horse] == cigarette[(cig)][dunhill] - 1 ||    \

pets[(pet)][horse] == cigarette[(cig)][dunhill] + 1) &&    \

/*12、抽blue master香菸的人喝啤酒。*/    \

cigarette[(cig)][blue_master] == drink[(drk)][beer] &&    \

/*13、德國人抽prince香菸。*/    \

country[(cty)][deguo] == cigarette[(cig)][prince] &&    \

/*14、挪威人住在藍色房子隔壁。*/    \

(country[(cty)][nuowei] == color[(clr)][blue] - 1 ||        \

country[(cty)][nuowei] == color[(clr)][blue] + 1 )&&        \

/*15、抽blends香菸的人有個喝水的鄰居。*/    \

(cigarette[(cig)][blends] == drink[(drk)][water] - 1 ||    \

cigarette[(cig)][blends] == drink[(drk)][water] + 1 )    

void init()

copy(color,i);

copy(country,i);

copy(pets,i);

copy(cigarette,i);

copy(drink,i);

i++;}}

}}}void test_init()

printf("\n");}}

#define _tt(x,y,v) \

(x)[(y)][0] == (v) ? x ## _str[0] \

: (x)[(y)][1] == (v) ? x ## _str[1] \

: (x)[(y)][2] == (v) ? x ## _str[2] \

: (x)[(y)][3] == (v) ? x ## _str[3] \

: (x)[(y)][4] == (v) ? x ## _str[4] \

: ""

void print_result(int clr,int cty, int cig,int pet,int drk)

void main()

}

21世紀的資訊化與20世紀的自動化

加強資訊系統應用程度與提高工廠儀表投自動化程度是不同層次的一類問題。投自動需要感知單元和動作機構的良好狀態,高素質操作人員,及時的維護保養,新的觀念 深化應用同樣需要軟硬體的高質量,高素質的管理人員,及時的執行維護,新的觀念。機械化 電氣化 自動化都是乙個歷史的程序,資訊化同樣也是這樣,這個程序不僅...

20世紀最好的10個演算法

人類在20世紀產生了10個著名的演算法,是什麼演算法?這裡是一篇文章,介紹了美國科學家評出的10個演算法,感興趣可以看一看。20世紀最好的10個演算法 三鏡先生 一 演算法一詞的 algos是希臘字,意思是 疼 a1gor是拉丁字,意思是 冷卻 這兩個字都不是algorithm 演算法 一詞的詞根,...

20世紀10個最偉大的演算法

由computer in science enigeering和ieee computer society聯合評選出來的20世紀10個最偉大的演算法 1 蒙特卡羅演算法。1946 john von neumann,stan ulam,and nick metropolis 2 單純形方法。1947 ...