/*
Загадка Энштейна.
1. Есть 5 домов каждый разного цвета.
2. В каждом доме живет по одному человеку отличной друг от друга национальности.
3. Каждый жилец пьет только один определенный напиток, курит определенную марку сигарет и держит определенное животное.
4. Никто из 5 человек не пьет одинаковые с другими напитки, не курит одинаковые сигареты и не держит одинаковое животное.
Вопрос: кому принадлежит рыба?
Англичанин живет в красном доме
Швед держит собаку
Датчанин пьет чай
Зеленый дом стоит слева от белого (считайте, что эти дома стоят рядом - иначе в задаче получаются два решения)
Жилец зеленого дома пьет кофе
Человек, который курит Pall Mall, держит птицу
Жилец из среднего дома пьет молоко
Жилец из желтого дома курит Dunhill
Норвежец живет в первом доме
Курильщик Marlboro живет около того, кто держит кошку
Человек, который содержит лошадь, живет около того, кто курит Dunhill
Курильщик сигарет Winfield пьет пиво
Норвежец живет около голубого дома
Немец курит Rothmans
Курильщик Marlboro живет по соседству с человеком, который пьет воду
*/


// Решение Загадки Енштейна.
void main(){
	var starttime=getTime();
	setPrioritetProcess("end");
	//0-цвет дома,1-национальность,2-напиток,3-сигареты,4-животное.
	var m=reserve(5);
	for(int i=0;i<5;++i)m[i]=reserve(5);
	i=rozpad( [0;5).getN() );
	m[1][i]="Англичанин";
	m[0][i]="красный";
	i=rozpad( [0;5).getN() );
	if(m[1][i]!=0)OFF;
	m[1][i]="Швед";
	m[4][i]="собака";
	i=rozpad( [0;5).getN() );
	if(m[1][i]!=0)OFF;
	m[1][i]="Датчанин";
	m[2][i]="чай";
	//Зеленый дом стоит слева от белого ([Зеленый] < [белого])
	i=rozpad( [0;5).getN() );
	j=rozpad( [0;5).getN() );
	if(i==j)OFF;
	if(m[0][i]!=0 || m[0][j]!=0)OFF;
	m[0][i]="зелёный";
	m[0][j]="белый";
	if(j<i)OFF;
	if(j-i>1)OFF;// Дома стоят рядом
	if(m[2][i]!=0)OFF;
	m[2][i]="кофе";
	i=rozpad( [0;5).getN() );
	if(m[4][i]!=0)OFF;
	m[3][i]="Pall Mall";
	m[4][i]="птица";
	i=2;
	if(m[2][i]!=0)OFF;
	m[2][i]="молоко";
	i=rozpad( [0;5).getN() );
	if(m[0][i]!=0 || m[3][i]!=0)OFF;
	m[0][i]="желтый";
	m[3][p=i]="Dunhill";
	if(m[1][0]!=0)OFF;
	m[1][0]="Норвежец";
	//Курильщик Marlboro живет около того, кто держит кошку
	i=rozpad( [0;5).getN() );
	j=rozpad( [0;5).getN() );
	if(!(i-j==1 || j-i==1))OFF;
	if(m[3][i]!=0 || m[4][j]!=0)OFF;
	m[3][s=i]="Marlboro";
	m[4][j]="кошка";
	//Человек, который содержит лошадь, живет около того, кто курит Dunhill
	j=rozpad( [0;5).getN() );
	if(!(p-j==1 || j-p==1))OFF;
	if(m[4][j]!=0)OFF;
	m[4][j]="лошадь";
	i=rozpad( [0;5).getN() );
	if(m[3][i]!=0 || m[2][i]!=0)OFF;
	m[3][i]="Winfield";
	m[2][i]="пиво";
	//Норвежец живет около голубого дома
	if(m[0][1]!=0)OFF;
	m[0][1]="голубой";
	i=rozpad( [0;5).getN() );
	if(m[1][i]!=0 || m[3][i]!=0)OFF;
	m[1][i]="Немец";
	m[3][i]="Rothmans";
	//Курильщик Marlboro живет по соседству с человеком, который пьет воду
	i=rozpad( [0;5).getN() );
	if(!(s-i==1 || i-s==1))OFF;
	if(m[2][i]!=0)OFF;
	m[2][i]="вода";
	//Вопрос: кому принадлежит рыба?
	i=rozpad( [0;5).getN() );
	if(m[4][i]!=0)OFF;
	m[4][i]="рыба";
	//trace(m[3][i]);
	trace(m);
	echo("Рыбка пренадлежыт: "+m[1][i]+"<br/>");
	echo(m);
	echo("<br/><br/>");
	define();
	echo("Времени ушло:"+timeFormat(getTime()-starttime));
}
