powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Тест для мозгов и компьютеров
62 сообщений из 62, показаны все 3 страниц
Тест для мозгов и компьютеров
    #32029324
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут мне прислали такую задачку:

А. Эйнштейн придумал эту загадку в прошлом веке и полагал, что 98% жителей земли будут не в состоянии ее решить.
1. Есть 5 домов каждый разного цвета.
2. В каждом доме живет по одному человеку отличной друг от друга национальности.
3. Каждый жилец пьет только один определенный напиток, курит определенную марку сигарет и держит определенное животное.
4. Никто из 5 человек не пьет одинаковые с другими напитки, не курит одинаковые сигареты и не держит одинаковое животное.
Вопрос: кому принадлежит рыба?
Подсказки:
1. Англичанин живет в красном доме.
2. Швед держит собаку.
3. Датчанин пьет чай.
4. Зеленый дом стоит слева от белого.
5. Жилец зеленого дома пьет кофе.
6. Человек, который курит Pall Mall, держит птицу.
7. Жилец из среднего дома пьет молоко.
8. Жилец из желтого дома курит Dunhill.
9. Норвежец живет в первом доме.
10. Курильщик Marlboro живет около того, кто держит кошку.
11. Человек, который содержит лошадь, живет около того, кто курит Dunhill.
12. Курильщик сигарет Winfield пьет пиво.
13. Норвежец живет около голубого дома.
14. Немец курит Rothmans.
15. Курильщик Marlboro живет по соседству с человеком, который пьет воду.
PS. Предваряя вопросы, скажу, что система условий полна и определяет
единственное возможное решение. Так что отговорки не принимаются.
Удачи!


В принципе немного подумав можно отнести себя к тем 2% жителей Земли. Но я решил отнести себя к еще меньшему проценту . Мне стало интересно как такие задачи можно решить на SQL. Ведь в принципе это перебор вариантов, казалось бы как раз задача для SQL. Но составив 5 таблиц с 5-ю записями я задумался - а что же делать дальше? Задача оказалась не такая тривиальная, как ожидалось. В результате я нашел решение, но запрос (он ниже) оказался уж очень монстрообразным. Может кто-нибудь знает как по теории решаются такие задачи или хотя бы сталкивался с ними?

Ну и заодно можно сравнить процессоры и SQLи. У меня это выполнялось 7 сек.

set nocount on
declare @sig table(sig varchar(10)) -- сигареты
declare @color table(col varchar(10)) -- цвета домов
declare @drink table(dri varchar(10)) -- напитки
declare @anim table(ani varchar(10)) -- животные
declare @nats table(nat varchar(10)) -- национальности
insert @sig
select 'Pall Mall' union select 'Dunhill' union select 'Marlboro' union select 'Winfield' union select 'Rothmans'
insert @color
select 'red' union select 'green' union select 'white' union select 'blue' union select 'yellow'
insert @drink
select 'tea' union select 'beer' union select 'cofe' union select 'milk' union select 'water'
insert @anim
select 'fish' union select 'dog' union select 'cat' union select 'horse' union select 'bird'
insert @nats
select 'eng' union select 'norv' union select 'shved' union select 'dat' union select 'nem'
--собственно сам запрос
select * from @sig s1 ,@color c1 , @drink d1 , @anim a1, @nats n1,
@sig s2 ,@color c2 , @drink d2 , @anim a2, @nats n2,
@sig s3 ,@color c3 , @drink d3 , @anim a3, @nats n3,
@sig s4 ,@color c4 , @drink d4 , @anim a4, @nats n4,
@sig s5 ,@color c5 , @drink d5 , @anim a5, @nats n5
where
s1.sig<>s2.sig and s1.sig<>s3.sig and s1.sig<>s4.sig and s1.sig<>s5.sig
and s2.sig<>s3.sig and s2.sig<>s4.sig and s2.sig<>s5.sig
and s3.sig<>s4.sig and s3.sig<>s5.sig
and s4.sig<>s5.sig
and
c1.col<>c2.col and c1.col<>c3.col and c1.col<>c4.col and c1.col<>c5.col
and c2.col<>c3.col and c2.col<>c4.col and c2.col<>c5.col
and c3.col<>c4.col and c3.col<>c5.col
and c4.col<>c5.col
and
d1.dri<>d2.dri and d1.dri<>d3.dri and d1.dri<>d4.dri and d1.dri<>d5.dri
and d2.dri<>d3.dri and d2.dri<>d4.dri and d2.dri<>d5.dri
and d3.dri<>d4.dri and d3.dri<>d5.dri
and d4.dri<>d5.dri
and
a1.ani<>a2.ani and a1.ani<>a3.ani and a1.ani<>a4.ani and a1.ani<>a5.ani
and a2.ani<>a3.ani and a2.ani<>a4.ani and a2.ani<>a5.ani
and a3.ani<>a4.ani and a3.ani<>a5.ani
and a4.ani<>a5.ani
and
n1.nat<>n2.nat and n1.nat<>n3.nat and n1.nat<>n4.nat and n1.nat<>n5.nat
and n2.nat<>n3.nat and n2.nat<>n4.nat and n2.nat<>n5.nat
and n3.nat<>n4.nat and n3.nat<>n5.nat
and n4.nat<>n5.nat
and
( (n1.nat='eng' and c1.col='red')
or (n2.nat='eng' and c2.col='red')
or (n3.nat='eng' and c3.col='red')
or (n4.nat='eng' and c4.col='red')
or (n5.nat='eng' and c5.col='red') ) -- 1
and ( (n1.nat='shved' and a1.ani='dog')
or (n2.nat='shved' and a2.ani='dog')
or (n3.nat='shved' and a3.ani='dog')
or (n4.nat='shved' and a4.ani='dog')
or (n5.nat='shved' and a5.ani='dog') ) --2
and ( (n1.nat='dat' and d1.dri='tea')
or (n2.nat='dat' and d2.dri='tea')
or (n3.nat='dat' and d3.dri='tea')
or (n4.nat='dat' and d4.dri='tea')
or (n5.nat='dat' and d5.dri='tea') ) -- 3
and ( (c1.col='green' and c2.col='white')
or (c2.col='green' and c3.col='white')
or (c3.col='green' and c4.col='white')
or (c4.col='green' and c5.col='white') ) -- 4
and ( (c1.col='green' and d1.dri='cofe')
or (c2.col='green' and d2.dri='cofe')
or (c3.col='green' and d3.dri='cofe')
or (c4.col='green' and d4.dri='cofe')
or (c5.col='green' and d5.dri='cofe') ) -- 5
and ( (s1.sig='Pall Mall' and a1.ani='bird')
or (s2.sig='Pall Mall' and a2.ani='bird')
or (s3.sig='Pall Mall' and a3.ani='bird')
or (s4.sig='Pall Mall' and a4.ani='bird')
or (s5.sig='Pall Mall' and a5.ani='bird') ) -- 6
and (d3.dri='milk') -- 7
and ( (s1.sig='Dunhill' and c1.col='yellow')
or (s2.sig='Dunhill' and c2.col='yellow')
or (s3.sig='Dunhill' and c3.col='yellow')
or (s4.sig='Dunhill' and c4.col='yellow')
or (s5.sig='Dunhill' and c5.col='yellow') ) -- 8
and (n1.nat='norv') -- 9
and ( (s1.sig='Marlboro' and 'cat'=a2.ani)
or (s2.sig='Marlboro' and 'cat' in (a1.ani, a3.ani))
or (s3.sig='Marlboro' and 'cat' in (a2.ani, a4.ani))
or (s4.sig='Marlboro' and 'cat' in (a3.ani, a5.ani))
or (s5.sig='Marlboro' and 'cat'=a5.ani)) -- 10
and ( (s1.sig='Dunhill' and 'horse'=a2.ani)
or (s2.sig='Dunhill' and 'horse' in (a1.ani, a3.ani))
or (s3.sig='Dunhill' and 'horse' in (a2.ani, a4.ani))
or (s4.sig='Dunhill' and 'horse' in (a3.ani, a5.ani))
or (s5.sig='Dunhill' and 'horse'=a5.ani)) -- 11
and ( (s1.sig='Winfield' and d1.dri='beer')
or (s2.sig='Winfield' and d2.dri='beer')
or (s3.sig='Winfield' and d3.dri='beer')
or (s4.sig='Winfield' and d4.dri='beer')
or (s5.sig='Winfield' and d5.dri='beer') ) -- 12
and ( (n1.nat='norv' and 'blue'=c2.col)
or (n2.nat='norv' and 'blue' in (c1.col, c3.col))
or (n3.nat='norv' and 'blue' in (c2.col, c4.col))
or (n4.nat='norv' and 'blue' in (c3.col, c5.col))
or (n5.nat='norv' and 'blue'=c5.col)) -- 13
and ( (s1.sig='Rothmans' and n1.nat='nem')
or (s2.sig='Rothmans' and n2.nat='nem')
or (s3.sig='Rothmans' and n3.nat='nem')
or (s4.sig='Rothmans' and n4.nat='nem')
or (s5.sig='Rothmans' and n5.nat='nem')) -- 14
and ( (s1.sig='Marlboro' and 'water'=d2.dri)
or (s2.sig='Marlboro' and 'water' in (d1.dri, d3.dri))
or (s3.sig='Marlboro' and 'water' in (d2.dri, d4.dri))
or (s4.sig='Marlboro' and 'water' in (d3.dri, d5.dri))
or (s5.sig='Marlboro' and 'water'=d5.dri)) -- 15
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32029327
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдается мне, такие штучки оччччень элегантно решаются на Прологе, если кто такую штуковину помнит.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32029328
pik_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такие штуки хорошо после пивка идут.
После пятой-шестой...
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32029340
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, переименуем sql.ru в сайт матолимпиад? Я не настолько хорошо владею SQL, как SergSuper, поэтому пришлось думать. (Такое все еще иногда случается). Думал я в Excel, потому звиняйте, коли форматирование поедет.

Из условий 1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14 имеем:

Номер дома 1 2 3 4 5
Цвет ? Голубой Красн. Зеленый Желтый
Нац. Норвежец Англ. Швед Датч. Немец
Напиток ? Молоко Чай Кофе Пиво
Сигареты ? Pall Mall Dunhill Winfield Rothmans
Жив. ? Собака Птица


Предполагаем, что дома не закольцованы
Тогда дом норвежца не зеленый, т.к. Справа от него по условию (13) голубой, а не белый (4)
3-й дом не зеленый, т.к. Зеленый пьет кофе (5)
Зеленый не м.б. 5-й, т.к. Д.б. Дом правее него (4)
Значит, зеленый - 4-й, а белый - 5-й
1-й дом не м.б. Красный, т.к. В нем живет норвежец (9), а в красном - англичанин (1)
Значит, дом норвежца - желтый, а красный с англичанином - 3-й.

Номер дома 1 2 3 4 5
Цвет Желтый Голубой Красн. Зеленый Белый
Нац. Норвежец Англ. Швед Датч. Немец
Напиток Молоко Кофе Чай Пиво
Сигареты Dunhill Pall Mall Winfield Rothmans
Жив. ? Собака Птица

5-й не может курить Marlboro, т.к. Он живет по соседству с человеком, к-й пьет воду (15)
Значит, Marlboro курит 2-й, а 1-й пьет воду
Из (11) 2-й держит лошадь

Номер дома 1 2 3 4 5
Цвет Желтый Голубой Красн. Зеленый Белый
Нац. Норвежец Англ.
Напиток Вода Молоко Кофе
Сигареты Dunhill Marlboro
Жив. ? Лошадь

2 не может быть шведом - тот держит собаку (2) и немцем - тот курит Rothmans (14). Значит, это датчанин
Теперь у нас определены по местам 4 напитка, значит, связка пиво + Winsfield (12) - это 5-й дом.
3 дома у нас расставлены по национальностям. Немец не может жить в 5-м, т.к. Он курит Rothmans (14). Значит, он живет в 4-м
А единственный оставшийся швед, соотв-но, в 5-м

Номер дома 1 2 3 4 5
Цвет Желтый Голубой Красн. Зеленый Белый
Нац. Норвежец Датч. Англ. Немец Швед
Напиток Вода Чай Молоко Кофе Пиво
Сигареты Dunhill Marlboro Rothmans Winfield Pall Mall
Жив. ? Лошадь Собака Птица

Ну и все. 3-й - это Pall Mall + Птица (6)
Оставшаяся по соседству с Marlboro кошка (10) - это 1
Значит, рыба живет в 4-м доме у немца

Номер дома 1 2 3 4 5
Цвет Желтый Голубой Красн. Зеленый Белый
Нац. Норвежец Датч. Англ. Немец Швед
Напиток Вода Чай Молоко Кофе Пиво
Сигареты Dunhill Marlboro Pall Mall Rothmans Winfield
Жив. Кошка Лошадь Птица Рыба Собака
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32029341
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подтверждаю слова GreenSunrise, это примерчик для языка Пролог.....Так что как говориться немного не по адресу...
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32029342
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дед Маздай
Допустим у нас есть два жэпега - на одном кошка, на другом собака. Кто на каком изображен определить можно легко. Заставить компьютер определить это - наверное невозможно, во всяком случае пока. Я что-то подобное имел ввиду.

2 GreenSunrise & Владимир
На 99% уверен что Пролог вы только "проходили", но не работали профессионально на нем.
Сам я тоже только читал про него, как-то баловался, даже ставил TurboProlog от Borland. На мой взгляд это язык чисто теоритический. А такие задачи (конечно не в таком извращенном виде) могут всплыть вполне реально.
Да и зачем Пролог - это на Паскале можно в 30 строчек написать. Вопрос не в этом.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32133138
mumu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Звиняйте! Маненько выпил, зачитался... не туда попал.
Но ситуацию это не меняет...
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32187326
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
класный топик SergSuper, никогда бы не додумался такого типа задачу решать с помощью SQL.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32187330
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще интересные задания для решения на SQL на тему координатной плоскости.

Задание 1.
Имеется карта местности, на которую нанесены объекты (точки, линии, многоугольники).
Задача:
а) Спроектировать базу данных для хранения объектов карты
б) Пользователь смотрит на часть карты через окно (квадрат, заданный координатами левого нижнего и правого верхнего углов). Написать запрос, возвращающий список объектов, попадающих в это окно.

Задание 2.
Имеется координатная плоскость и расположенные на ней прямоугольники, заданные координатами левого нижнего и правого верхнего углов.
а) Спроектировать базу данных для хранения прямоугольников
б) Написать запрос, подсчитывающий общую площадь, покрываемую прямоугольниками
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32187405
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня 3а 2 сек. пролетело.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32187502
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задание 2
б) Написать запрос, подсчитывающий общую площадь, покрываемую прямоугольниками

А это с учетом того что прямоугольники могут перекрывать друг друга?
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188265
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mahoune

Естессно, а ты думал, такие задачи в 3-м классе дают? :))
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188299
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 boogier
а) Спроектировать базу данных для хранения объектов карты
это несложно.
таблица объектов связана с таблицей точек, которые дают полное представление о геометрической фигуре.


б) Пользователь смотрит на часть карты через окно (квадрат, заданный координатами левого нижнего и правого верхнего углов). Написать запрос, возвращающий список объектов, попадающих в это окно.

здесь сложнее ...нужна вышка которую уже порядком забыл ..

в вышке была задачка про нахождение площади пересечения двух фигур заданных как набор координат.

кто помнит?
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188304
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mahoune
Не знаю что Вы нашли интересного, 1-я задача вообще очевидная, вторая не намного сложнее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
set nocount on

declare @t table(id int identity, x1 int, y1 int, x2 int, y2 int)

insert @t select  1 , 1 , 6 , 3 
union 
select  2 , 2 , 3 , 5 
union 
select  4 , 1 , 5 , 2 
 ---------------------
 

declare @x table(x int, xn int null)
declare @y table(y int, yn int null)

insert @x(x) select x1 from @t union select x2 from @t 
insert @y(y) select y1 from @t union select y2 from @t 

update x set x.xn=(select min(x) from @x x1 where x1.x>x.x) from @x x
update y set y.yn=(select min(y) from @y y1 where y1.y>y.y) from @y y



select sum((xn-x)*(yn-y)) from @x x, @y y
where exists(select * from @t t where x>=x1 and xn<=x2 and y>=y1 and yn<=y2)


может если подумать можно как-то пооптимальней написать, но за 15 минут сойдёт и так
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188322
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sergsuper



по моему неправильно посчитает
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188346
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК

табличку @t пожалста заполните данными, чтоб такие прямоугольники рисовать :)

Имеется координатная плоскость и расположенные на ней прямоугольники, заданные координатами левого нижнего и правого верхнего углов .
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188407
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хитрый какой.
не считается - это упрощение задачи.

но все равно при пересекающихся фигурах будет неправильно
будет сумма фигур а не сумма занимаемой площади ))
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188440
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК
Я не хитрый, я внимательный :)
К тому же если задавать 4 угла - не факт что будет прямоугольник.
Можно задавать 3 вершины треугольника, но по моему это уже задачи не для SQL, что-то подобное делается при обработке 3-х мерных изображений

Ну а насчет того что мол если будет пересекающиеся фигуры, то будет неправильно - но это уж Вы меня совсем не уважаете.
Если фигуры не пересекались бы площадь считалась бы совсем просто:
select sum((x2-x1)*(y2-y1)) from @t
И значения заданы у меня для пересекающихся прямоугольников (можете взять клетчатый листок и убедиться).
Прежде чем чего-то написать я стараюсь проверить, чего и Вам желаю.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32188461
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergSuper, а мне и первая задачка не очевидна!!! К примеру как понять когда есть многоугольник внутреннюю часть которого мы видим через окно, но не видим ни одной границы!
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32406562
mzprog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В условии задачи не понятно в каком порядке расположены дома... толи они в ряд: 1 2 3 4 5 и тогда понятно,
толи ...
3 4
1 2
5

тогда бардак... :) (вот скажи, докапался до Эйнштейна :) )
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32407177
dishlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в рассуждениях Деда Маздая
нахождение цветов было логичным, вот сигареты были притянуты
автор5-й не может курить Marlboro, т.к. Он живет по соседству с человеком, к-й пьет воду (15)
Значит, Marlboro курит 2-й, а 1-й пьет воду
Из (11) 2-й держит лошадь

курить мальборо не могли в 5-ом, но могли в 2, 3, 4.

может он не описал ход своих мыслей до конца?
Вот мои рассуждения:

строим таблицу
Код: plaintext
1.
2.
3.
4.
5.
номер дома  1     2     3     4     5 
человек
цвет
животное
напиток
сигар


из правил
9. Норвежец живет в первом доме.
13. Норвежец живет около голубого дома.
7. Жилец из среднего дома пьет молоко.

строим таблицу
Код: plaintext
1.
2.
3.
4.
5.
номер дома               1            2              3             4             5 
человек                 норв
цвет                               голуб
животное
напиток
сигар


из правил
4. Зеленый дом стоит слева от белого.
5. Жилец зеленого дома пьет кофе.
Код: plaintext
1.
2.
3.
4.
5.
номер дома               1            2              3             4             5 
человек                 норв
цвет                               голуб                 зеленый  белый
животное                                      молоко       кофе
напиток
сигар


из правил
1. Англичанин живет в красном доме.
8. Жилец из желтого дома курит Dunhill.
11. Человек, который содержит лошадь, живет около того, кто курит Dunhill.
Код: plaintext
1.
2.
3.
4.
5.
6.
номер дома               1            2              3             4             5 
человек                 норв                 англ
цвет                    желтый  голуб       красный       зеленый     белый
животное                         лошадь 
напиток                                      молоко        кофе
сигар                   dunhill


А вот остальное не так очевидно
из правил
3. Датчанин пьет чай.
12. Курильщик сигарет Winfield пьет пиво.
рассуждаем что датчанин может быть только в 5 или 2 и пиво с Winfield может только в 5 или 2.
Отсюда немцу из
14. Немец курит Rothmans.
остается только в 4
Код: plaintext
1.
2.
3.
4.
5.
6.
номер дома               1            2              3             4             5 
человек                 норв                 англ         немец
цвет                    желтый  голуб       красный       зеленый     белый
животное                         лошадь 
напиток                                      молоко        кофе
сигар                   dunhill                           rothmans


из правил
15. Курильщик Marlboro живет по соседству с человеком, который пьет воду.
Код: plaintext
1.
2.
3.
4.
5.
6.
номер дома               1            2              3             4             5 
человек                 норв                 англ         немец
цвет                    желтый  голуб       красный       зеленый     белый
животное                         лошадь 
напиток                вода                 молоко        кофе
сигар                  dunhill  malboro             rothmans


их правил
12. Курильщик сигарет Winfield пьет пиво.
этой паре только в 5й дом
3. Датчанин пьет чай.
и датчанин с чаем селится во 2 ом
Код: plaintext
1.
2.
3.
4.
5.
6.
номер дома               1            2              3             4             5 
человек                 норв      дат        англ         немец
цвет                    желтый  голуб       красный       зеленый     белый
животное                         лошадь 
напиток                вода      чай        молоко         кофе       пиво
сигар                  dunhill  malboro                   rothmans   winfield


ну дальше дело техники...
мдя, пол дня убил на решение и нормальное оформление :-/
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32407230
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 dishlo

мдя, пол дня убил на решение и нормальное оформление :-/

Сколько этот Эйтштейн времени у народа отнял (с помощью SergSuper) ...
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32407262
dishlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
меня поймали на эту фразу:
98% жителей земли будут не в состоянии ее решить.
хотелось приобщится к тем исключительным 2%
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32408382
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To dishlo
У тебя в 3-м пункте рассуждений ошибка
Зеленый Левее белого -
Это значит, что белый не может быть 1-м, а зеленый 5-м и оба они не могут быть 2 (из п.2)

То есть вполне допустимо, что зеленый 1 а белый 5, например...
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32409855
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я туплю в воскресенье вечером или SergSuper чего то не договаривает
у меня получилось 6 решений и вроде ВСЕ удовлетворяют условиям задачи.
Проверьте кому не лень. Прошу прощения за сокрашения и ошибки в названиях сигарет - лень переделывать :)
Итак мои решения:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
a)
 1 	Зеленый   	Норвежец  	Кофе      	Мальборо  	рыба      	
 2 	Голубой   	Немец     	вода      	Рот       	кошка     	
 3 	Желтый    	Швед      	Молоко    	Дун       	собака    	
 4 	Красный   	Англичанин	пиво      	Винстон   	лошадь    	
 5 	Белый     	Датчанин  	Чай       	Пал Мал   	птица     

b)
 1 	Зеленый   	Норвежец  	Кофе      	Пал Мал   	птица     	
 2 	Голубой   	Немец     	вода      	Рот       	кошка     	
 3 	Белый     	Швед      	Молоко    	Мальборо  	собака    	
 4 	Желтый    	Датчанин  	Чай       	Дун       	рыба      	
 5 	Красный   	Англичанин	пиво      	Винстон   	лошадь    

c)
 1 	Зеленый   	Норвежец  	Кофе      	Пал Мал   	птица     	
 2 	Голубой   	Немец     	вода      	Рот       	рыба      	
 3 	Белый     	Швед      	Молоко    	Мальборо  	собака    	
 4 	Желтый    	Датчанин  	Чай       	Дун       	кошка     	
 5 	Красный   	Англичанин	пиво      	Винстон   	лошадь    

d)
 1 	Зеленый   	Норвежец  	Кофе      	Пал Мал   	птица     	
 2 	Голубой   	Немец     	вода      	Рот       	кошка     	
 3 	Белый     	Швед      	Молоко    	Мальборо  	собака    	
 4 	Красный   	Англичанин	пиво      	Винстон   	лошадь    	
 5 	Желтый    	Датчанин  	Чай       	Дун       	рыба      

e)
 1 	Зеленый   	Норвежец  	Кофе      	Пал Мал   	птица     	
 2 	Голубой   	Немец     	вода      	Рот       	кошка     	
 3 	Красный   	Англичанин	Молоко    	Мальборо  	лошадь    	
 4 	Желтый    	Датчанин  	Чай       	Дун       	рыба      	
 5 	Белый     	Швед      	пиво      	Винстон   	собака    

f)
 1 	Зеленый   	Норвежец  	Кофе      	Пал Мал   	птица     	
 2 	Голубой   	Немец     	вода      	Рот       	рыба      	
 3 	Красный   	Англичанин	Молоко    	Мальборо  	лошадь    	
 4 	Желтый    	Датчанин  	Чай       	Дун       	кошка     	
 5 	Белый     	Швед      	пиво      	Винстон   	собака    


P.S. Если найдете ошибки укажите пожалуйста номер варианта и правила с которыми противоречия.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32409986
dishlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_ll
У тебя в 3-м пункте рассуждений ошибка
Зеленый Левее белого -
Это значит, что белый не может быть 1-м, а зеленый 5-м и оба они не могут быть 2 (из п.2)

То есть вполне допустимо, что зеленый 1 а белый 5, например...

7. Жилец из среднего дома пьет молоко.
5. Жилец зеленого дома пьет кофе.

значит зеленый не может быть средним (третим), остается однозначаня комбинайция четвертый и пятый.
Сорри, в первой табличке не вписал молоко
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32410131
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, меньше всего я ожидал что народ кинется решать эту тупую задачу в лоб :(
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32410141
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати у меня есть большие сомнения что эту задачу действительно придумал Эйнштейн
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32410537
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 dishlo
Код: plaintext
1.
2.
 7 . Жилец из среднего дома пьет молоко. 
 5 . Жилец зеленого дома пьет кофе. 

Пропустил бывает:) Но все равно подключая эти пункты остаются пары 1-4, 1-5, 4-5, 1-3. У меня кстати в 3-х вариантах 1-3, а в 3-х 1-5 вывалилось

2 SergSuper.
Код: plaintext
Блин, меньше всего я ожидал что народ кинется решать эту тупую задачу в лоб :(

Дык с чего ты взял что в лоб. Я, например в QA решал :)
Домой прийду скрипт брошу

2 All Народ где ошибка у меня или SergSuper не все условия выложил?
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #32411093
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие задачки мы решали в школе, не подумайте что я вы""" просто школа такая была, или учитель :)
Энштейн не учел что в 2004 году будет интернет, на решение данной задачи у меня ушло около 1-й минуты(время на выбор ссылки из предложенных яндексом по фразе "Англичанин живет в красном доме") :)
http://imfo.ru/issues/fish-2
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тест для мозгов и компьютеров
    #33677115
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperТут мне прислали такую задачку:А. Эйнштейн придумал эту загадку в прошлом веке и полагал, что 98% жителей земли будут не в состоянии ее решить.1. Есть 5 домов каждый разного цвета.2. В каждом доме живет по одному человеку отличной друг от друга национальности.3. Каждый жилец пьет только один определенный напиток, курит определенную марку сигарет и держит определенное животное.4. Никто из 5 человек не пьет одинаковые с другими напитки, не курит одинаковые сигареты и не держит одинаковое животное.Вопрос: кому принадлежит рыба?Подсказки:1. Англичанин живет в красном доме.2. Швед держит собаку.3. Датчанин пьет чай.4. Зеленый дом стоит слева от белого.5. Жилец зеленого дома пьет кофе.6. Человек, который курит Pall Mall, держит птицу.7. Жилец из среднего дома пьет молоко.8. Жилец из желтого дома курит Dunhill.9. Норвежец живет в первом доме.10. Курильщик Marlboro живет около того, кто держит кошку.11. Человек, который содержит лошадь, живет около того, кто курит Dunhill.12. Курильщик сигарет Winfield пьет пиво.13. Норвежец живет около голубого дома.14. Немец курит Rothmans.15. Курильщик Marlboro живет по соседству с человеком, который пьет воду.PS. Предваряя вопросы, скажу, что система условий полна и определяетединственное возможное решение. Так что отговорки не принимаются.Удачи!В принципе немного подумав можно отнести себя к тем 2% жителей Земли. Но я решил отнести себя к еще меньшему проценту . Мне стало интересно как такие задачи можно решить на SQL. Ведь в принципе это перебор вариантов, казалось бы как раз задача для SQL. Но составив 5 таблиц с 5-ю записями я задумался - а что же делать дальше? Задача оказалась не такая тривиальная, как ожидалось. В результате я нашел решение, но запрос (он ниже) оказался уж очень монстрообразным. Может кто-нибудь знает как по теории решаются такие задачи или хотя бы сталкивался с ними?Ну и заодно можно сравнить процессоры и SQLи. У меня это выполнялось 7 сек.set nocount ondeclare @sig table(sig varchar(10)) -- сигаретыdeclare @color table(col varchar(10)) -- цвета домовdeclare @drink table(dri varchar(10)) -- напиткиdeclare @anim table(ani varchar(10)) -- животныеdeclare @nats table(nat varchar(10)) -- национальностиinsert @sigselect 'Pall Mall' union select 'Dunhill' union select 'Marlboro' union select 'Winfield' union select 'Rothmans'insert @colorselect 'red' union select 'green' union select 'white' union select 'blue' union select 'yellow'insert @drinkselect 'tea' union select 'beer' union select 'cofe' union select 'milk' union select 'water'insert @animselect 'fish' union select 'dog' union select 'cat' union select 'horse' union select 'bird'insert @natsselect 'eng' union select 'norv' union select 'shved' union select 'dat' union select 'nem'--собственно сам запросselect * from @sig s1 ,@color c1 , @drink d1 , @anim a1, @nats n1, @sig s2 ,@color c2 , @drink d2 , @anim a2, @nats n2, @sig s3 ,@color c3 , @drink d3 , @anim a3, @nats n3, @sig s4 ,@color c4 , @drink d4 , @anim a4, @nats n4, @sig s5 ,@color c5 , @drink d5 , @anim a5, @nats n5where s1.sig<>s2.sig and s1.sig<>s3.sig and s1.sig<>s4.sig and s1.sig<>s5.sig and s2.sig<>s3.sig and s2.sig<>s4.sig and s2.sig<>s5.sig and s3.sig<>s4.sig and s3.sig<>s5.sig and s4.sig<>s5.sigand c1.col<>c2.col and c1.col<>c3.col and c1.col<>c4.col and c1.col<>c5.col and c2.col<>c3.col and c2.col<>c4.col and c2.col<>c5.col and c3.col<>c4.col and c3.col<>c5.col and c4.col<>c5.coland d1.dri<>d2.dri and d1.dri<>d3.dri and d1.dri<>d4.dri and d1.dri<>d5.dri and d2.dri<>d3.dri and d2.dri<>d4.dri and d2.dri<>d5.dri and d3.dri<>d4.dri and d3.dri<>d5.dri and d4.dri<>d5.driand a1.ani<>a2.ani and a1.ani<>a3.ani and a1.ani<>a4.ani and a1.ani<>a5.ani and a2.ani<>a3.ani and a2.ani<>a4.ani and a2.ani<>a5.ani and a3.ani<>a4.ani and a3.ani<>a5.ani and a4.ani<>a5.aniand n1.nat<>n2.nat and n1.nat<>n3.nat and n1.nat<>n4.nat and n1.nat<>n5.nat and n2.nat<>n3.nat and n2.nat<>n4.nat and n2.nat<>n5.nat and n3.nat<>n4.nat and n3.nat<>n5.nat and n4.nat<>n5.natand ( (n1.nat='eng' and c1.col='red') or (n2.nat='eng' and c2.col='red') or (n3.nat='eng' and c3.col='red') or (n4.nat='eng' and c4.col='red') or (n5.nat='eng' and c5.col='red') ) -- 1and ( (n1.nat='shved' and a1.ani='dog') or (n2.nat='shved' and a2.ani='dog') or (n3.nat='shved' and a3.ani='dog') or (n4.nat='shved' and a4.ani='dog') or (n5.nat='shved' and a5.ani='dog') ) --2and ( (n1.nat='dat' and d1.dri='tea') or (n2.nat='dat' and d2.dri='tea') or (n3.nat='dat' and d3.dri='tea') or (n4.nat='dat' and d4.dri='tea') or (n5.nat='dat' and d5.dri='tea') ) -- 3and ( (c1.col='green' and c2.col='white') or (c2.col='green' and c3.col='white') or (c3.col='green' and c4.col='white') or (c4.col='green' and c5.col='white') ) -- 4and ( (c1.col='green' and d1.dri='cofe') or (c2.col='green' and d2.dri='cofe') or (c3.col='green' and d3.dri='cofe') or (c4.col='green' and d4.dri='cofe') or (c5.col='green' and d5.dri='cofe') ) -- 5and ( (s1.sig='Pall Mall' and a1.ani='bird') or (s2.sig='Pall Mall' and a2.ani='bird') or (s3.sig='Pall Mall' and a3.ani='bird') or (s4.sig='Pall Mall' and a4.ani='bird') or (s5.sig='Pall Mall' and a5.ani='bird') ) -- 6and (d3.dri='milk') -- 7and ( (s1.sig='Dunhill' and c1.col='yellow') or (s2.sig='Dunhill' and c2.col='yellow') or (s3.sig='Dunhill' and c3.col='yellow') or (s4.sig='Dunhill' and c4.col='yellow') or (s5.sig='Dunhill' and c5.col='yellow') ) -- 8and (n1.nat='norv') -- 9and ( (s1.sig='Marlboro' and 'cat'=a2.ani) or (s2.sig='Marlboro' and 'cat' in (a1.ani, a3.ani)) or (s3.sig='Marlboro' and 'cat' in (a2.ani, a4.ani)) or (s4.sig='Marlboro' and 'cat' in (a3.ani, a5.ani)) or (s5.sig='Marlboro' and 'cat'=a5.ani)) -- 10and ( (s1.sig='Dunhill' and 'horse'=a2.ani) or (s2.sig='Dunhill' and 'horse' in (a1.ani, a3.ani)) or (s3.sig='Dunhill' and 'horse' in (a2.ani, a4.ani)) or (s4.sig='Dunhill' and 'horse' in (a3.ani, a5.ani)) or (s5.sig='Dunhill' and 'horse'=a5.ani)) -- 11and ( (s1.sig='Winfield' and d1.dri='beer') or (s2.sig='Winfield' and d2.dri='beer') or (s3.sig='Winfield' and d3.dri='beer') or (s4.sig='Winfield' and d4.dri='beer') or (s5.sig='Winfield' and d5.dri='beer') ) -- 12and ( (n1.nat='norv' and 'blue'=c2.col) or (n2.nat='norv' and 'blue' in (c1.col, c3.col)) or (n3.nat='norv' and 'blue' in (c2.col, c4.col)) or (n4.nat='norv' and 'blue' in (c3.col, c5.col)) or (n5.nat='norv' and 'blue'=c5.col)) -- 13and ( (s1.sig='Rothmans' and n1.nat='nem') or (s2.sig='Rothmans' and n2.nat='nem') or (s3.sig='Rothmans' and n3.nat='nem') or (s4.sig='Rothmans' and n4.nat='nem') or (s5.sig='Rothmans' and n5.nat='nem')) -- 14and ( (s1.sig='Marlboro' and 'water'=d2.dri) or (s2.sig='Marlboro' and 'water' in (d1.dri, d3.dri)) or (s3.sig='Marlboro' and 'water' in (d2.dri, d4.dri)) or (s4.sig='Marlboro' and 'water' in (d3.dri, d5.dri)) or (s5.sig='Marlboro' and 'water'=d5.dri)) -- 15
на MX (cмесь EXCEL+MUMPS)
решение занимает 5 ячеек на excel-листе
(не считая отображения уже готовой таблицы )
время, к сожалению, почти 2 секунды -
может кто из М-программистов предложит более быстрый
вариант ?
прилагаю 2 листа - программный и результатный
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34039657
WarAn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperМожет кто-нибудь знает как по теории решаются такие задачи или хотя бы сталкивался с ними?
Как по мне, матрицой решать проще всего.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34039917
guest00x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperТут мне прислали такую задачку:А. Эйнштейн придумал эту загадку в прошлом веке и полагал, что 98% жителей земли будут не в состоянии ее решить.
Угу, посля какога класса сто лет назад 98% жителей земли шли в поле с восхода и возвращались после заката дабы хлеб насущный добыть ?
Нынче 98% жителей нашей страны "бездельничают" аж до окончания института, стал быть, в состоянии ее решить :))

P.S. из всех моих многих знакомых, кто не отмахнулся от решения (им, видите ли, некогда на такую хрень время тратить!), 100% решили эту задачку, причем, буквально походя :))
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34642938
это действительно школьная задача по логике (правда не знаю, преподавали ли в обычных школах), и легче решатся не методами программирования, а методами формальной логики
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34946465
XAM_80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или я что то не допонял...., или поправте меня если я не прав...
Итак:
1. Согласно п.4 условий:"Зеленый дом налево от Белого и ..." почему никто не берет во внимание "..."?Из этого условия следует, что зел.дом через один на лево от"..."?! Житель которого,согласно п.5 пьет Кофе.
1ый дом Норвежца, 2ой-синий, следовательо как раз в правой части остаеться 3 дома(Зел.,Белый, и "..."), остаються не распраделенными 2 цвета(жел., и красный), ну 1й дом красным быть не может, т.к. в кр.доме живет Англичанин, а в 1ом Норвежец, соответственно 5й дом-красный, а первый желтый.
Получается: кр.,син.,зел.,бел.,жел. Разве не так???:)
2.Еще один момент, после всех дальнейших выкладок у меня получилось не учтеные "Кот" и "рыба"
И мне кажеться, что не хватает еще одного условия в задаче, позволяющего однозначно определить, кота, и рыбу куда надо..., я по логике кота отправил к Немцу, который у меня живет в 3-ем доме(Зеленом),Пьет молоко,Курит Ротманз.,а рыбу к Норвежцу(1й-дом-Желтый)курит Данхилл И пьет воду.
Я считаю логично Кота отправить к Молоку..., а рыбу к воде....:)
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34946525
немец.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
рыба у меня

зы: 2 часа убил, рыбо моя!
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34946527
немец.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 alex_ll:
ну в задаче же дома последовательно упорядочены - типа 'зеленый слева от белого'. а у тебя что? фигня какая-то .. вобщем из 6-ти вариантов ни одного правильного
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34946528
немец.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторкота отправил к Немцу, который у меня живет в 3-ем доме(Зеленом),Пьет молоко,Курит Ротманз
да-да, живу я в зеленом доме, но, мля, молоко я ненавижу, пью тока кофе, хотя ротманс и правда ничего.. но вот кот ваш нафиг не вперся, всю рыбу ведь сожрет сцуко..
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34947177
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу предложить следующий вариант:


Для наглядности используется функция getPositionByValue. Её вызовы можно заменить соответствующим case.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create function getPositionByValue
(
	@c1 varchar( 10 ),	
	@c2 varchar( 10 ),
	@c3 varchar( 10 ),
	@c4 varchar( 10 ),
	@c5 varchar( 10 ),
    @cValue varchar( 10 )
)
returns int
as
begin

return 
		case @cValue
			when @c1 then  1 
			when @c2 then  2 
			when @c3 then  3 
			when @c4 then  4 
			when @c5 then  5 
		end

end

Собственно код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
set nocount on
declare @sig table(sig varchar( 10 )) -- сигареты
declare @color table(col varchar( 10 )) -- цвета домов
declare @drink table(dri varchar( 10 )) -- напитки
declare @anim table(ani varchar( 10 )) -- животные
declare @nats table(nat varchar( 10 )) -- национальности
declare @nums table(num int) -- numbers

declare @res table( sig varchar( 10 ), col varchar( 10 ), dri varchar( 10 ),ani varchar( 10 ), nat varchar( 10 ), num int)
declare @tmp table( sig varchar( 10 ), col varchar( 10 ), dri varchar( 10 ),ani varchar( 10 ), nat varchar( 10 ), num int)

insert @sig
select 'Pall Mall' union select 'Dunhill' union select 'Marlboro' union select 'Winfield' union select 'Rothmans'
insert @color
select 'red' union select 'green' union select 'white' union select 'blue' union select 'yellow'
insert @drink
select 'tea' union select 'beer' union select 'cofe' union select 'milk' union select 'water'
insert @anim
select 'fish' union select 'dog' union select 'cat' union select 'horse' union select 'bird'
insert @nats
select 'eng' union select 'norv' union select 'shved' union select 'dat' union select 'nem'
insert @nums
select  1  union select  2  union select  3  union select  4  union select  5 

insert @tmp
select sig, col, dri, ani, nat, num
from @sig,@color, @drink, @anim,  @nats, @nums

-- внутренние условия для дома:

insert @res
select sig, col, dri, ani, nat, num
from @tmp
where 
(
	nat = 'eng' and col='red'
	or
	nat != 'eng' and col!='red'
) -- #1 Англичанин живет в красном доме.

and
(
	nat = 'shved' and ani = 'dog'
	or
	nat != 'shved' and ani != 'dog'
) -- #2 Швед держит собаку
and
(
	nat = 'dat' and dri = 'tea'
	or
	nat != 'dat' and dri != 'tea'
) -- #3 Датчанин пьет чай
and
(
	col = 'green' and dri = 'cofe'
	or
	col != 'green' and dri != 'cofe'
) -- #5 Жилец зеленого дома пьет кофе.
and
(
	sig = 'Pall Mall' and ani = 'bird' 
	or
	sig != 'Pall Mall' and ani != 'bird' 
) -- #6 Человек, который курит Pall Mall, держит птицу
and
(
	num =  3  and dri = 'milk'
	or
	num !=  3  and dri != 'milk'
) -- #7 Жилец из среднего дома пьет молоко
and
(
	col = 'yellow' and sig = 'Dunhill'
	or
	col != 'yellow' and sig != 'Dunhill'
) -- #8 Жилец из желтого дома курит Dunhill
and
(
	num =  1  and nat = 'norv'
	or
	num !=  1  and nat != 'norv'
) -- #9 Норвежец живет в первом доме
and 
	not (sig = 'Marlboro' and ani = 'cat' )
-- #10 Курильщик Marlboro живет около того, кто держит кошку
and
	not (sig = 'Dunhill' and ani = 'horse' )
-- #11 Человек, который содержит лошадь, живет около того, кто курит Dunhill

and
(
	dri = 'beer' and sig = 'Winfield'
	or
	dri != 'beer' and sig != 'Winfield'
) -- #12 Курильщик сигарет Winfield пьет пиво.
and
(
	num =  2  and col = 'blue'
	or
	num !=  2  and col != 'blue'
) -- #13 Норвежец живет около голубого дома.
and
(
	nat = 'nem' and sig = 'Rothmans'
	or
	nat != 'nem' and sig != 'Rothmans'
) -- #14 Немец курит Rothmans
and
	not (sig = 'Marlboro' and dri = 'water' )
-- #15 Курильщик Marlboro живет по соседству с человеком, который пьет воду


select 
a.sig, a.col, a.dri, a.ani, a.nat, a.num,
b.sig, b.col, b.dri, b.ani, b.nat, b.num,
c.sig, c.col, c.dri, c.ani, c.nat, c.num,
d.sig, d.col, d.dri, d.ani, d.nat, d.num,
e.sig, e.col, e.dri, e.ani, e.nat, e.num
from
	(select * from @res where num =  1 ) a,
	(select * from @res where num =  2 ) b,
	(select * from @res where num =  3 ) c,
	(select * from @res where num =  4 ) d,
	(select * from @res where num =  5 ) e
where
	 5  = (
			select count(distinct sig) 
				from 
				(
					select a.sig union 
					select b.sig union 
					select c.sig union 
					select d.sig union
					select e.sig
				) b
		)
	and
	 5  = (
			select count(distinct col) 
				from 
				(
					select a.col union 
					select b.col union 
					select c.col union 
					select d.col union
					select e.col
				) b
		)
	and
	 5  = (
			select count(distinct dri) 
				from 
				(
					select a.dri union 
					select b.dri union 
					select c.dri union 
					select d.dri union
					select e.dri
				) b
		)
	and
	 5  = (
			select count(distinct ani) 
				from 
				(
					select a.ani union 
					select b.ani union 
					select c.ani union 
					select d.ani union
					select e.ani
				) b
		)
	and
	 5  = (
			select count(distinct nat) 
				from 
				(
					select a.nat union 
					select b.nat union 
					select c.nat union 
					select d.nat union
					select e.nat
				) b
		)
	and 
		(dbo.getPositionByValue(a.col, b.col, c.col, d.col, e.col, 'green')
		-
		dbo.getPositionByValue(a.col, b.col, c.col, d.col, e.col, 'white')) = - 1 
	-- #4 Зеленый дом стоит слева от белого.

	and 
		abs(
			dbo.getPositionByValue(a.sig, b.sig, c.sig, d.sig, e.sig, 'Marlboro')
			-
			dbo.getPositionByValue(a.ani, b.ani, c.ani, d.ani, e.ani, 'cat')) =  1 
	-- #10 Курильщик Marlboro живет около того, кто держит кошку
	and 
		abs(
			dbo.getPositionByValue(a.sig, b.sig, c.sig, d.sig, e.sig, 'Dunhill')
			-
			dbo.getPositionByValue(a.ani, b.ani, c.ani, d.ani, e.ani, 'horse')) =  1 
	-- #11 Человек, который содержит лошадь, живет около того, кто курит Dunhill
	and 
		abs(
			dbo.getPositionByValue(a.sig, b.sig, c.sig, d.sig, e.sig, 'Marlboro')
			-
			dbo.getPositionByValue(a.dri, b.dri, c.dri, d.dri, e.dri, 'water')) =  1 
	-- #15 Курильщик Marlboro живет по соседству с человеком, который пьет воду




Результат:

Код: plaintext
1.
2.
3.
4.
Dunhill	             yellow	water	cat	norv	1
Marlboro	             blue	tea	horse	dat	2
Pall Mall	             red	milk	bird	eng	3	
Rothmans             green	cofe	fish	nem	4	
Winfield	             white	beer	dog	shved	5
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34947473
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperPS. Предваряя вопросы, скажу, что система условий полна и определяет единственное возможное решение. Так что отговорки не принимаются...
А три разных правильных ответа принимаются?

Датчанин Немец Норвежец Зеленый Зеленый Зеленый Норвежец Норвежец Норвежец Кофе Кофе Кофе Pall Mall Pall Mall Marlboro Птица Птица Рыба Голубой Голубой Голубой Немец Немец Немец Вода Вода Вода Rothmans Rothmans Rothmans Кошка Рыба Кошка Белый Красный Желтый Швед АнгличанинШвед Молоко Молоко Молоко Marlboro Marlboro Dunhill Собака Лошадь Собака Желтый Желтый Красный Датчанин Датчанин АнгличанинЧай Чай Пиво Dunhill Dunhill Winfield Рыба Кошка Лошадь Красный Белый Белый АнгличанинШвед Датчанин Пиво Пиво Чай Winfield Winfield Pall Mall Лошадь Собака Птица

PS SergSuper - это не ты случайно тот Энштейн ?
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34947817
Фотография smoyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, задача беспонт, решил за час (начальник на работе еще отвлекал^_^) использованием логики. СергаСупера на мыло, не мог Эйнштейн про такой ацтой сказать, что его могут решить только 2%.

з.ы. Сомневаюсь кстати, что такую задачу мона решить в паскале за 30 строк. Очень уж лень проверять, башка сильно с похмелья болит, но сомневаюсь.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34949290
Алексей Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Энштейн говорил, что 2 процента могут решить задачу в уме и за короткое время не знаю какое...
На бумаге почти каждый сможет решить. У меня ушло где-то пол часа....
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34953756
arhip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Право и лево понятия относительные
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34954164
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T SergSuperPS. Предваряя вопросы, скажу, что система условий полна и определяет единственное возможное решение. Так что отговорки не принимаются...
А три разных правильных ответа принимаются?

Датчанин Немец Норвежец Зеленый Зеленый Зеленый Норвежец Норвежец Норвежец Кофе Кофе Кофе Pall Mall Pall Mall Marlboro Птица Птица Рыба Голубой Голубой Голубой Немец Немец Немец Вода Вода Вода Rothmans Rothmans Rothmans Кошка Рыба Кошка Белый Красный Желтый Швед АнгличанинШвед Молоко Молоко Молоко Marlboro Marlboro Dunhill Собака Лошадь Собака Желтый Желтый Красный Датчанин Датчанин АнгличанинЧай Чай Пиво Dunhill Dunhill Winfield Рыба Кошка Лошадь Красный Белый Белый АнгличанинШвед Датчанин Пиво Пиво Чай Winfield Winfield Pall Mall Лошадь Собака Птица

PS SergSuper - это не ты случайно тот Энштейн ?


Всё зависит от того, как вы трактуете условие номер 4:)

Если слово "слева" рассматривать как "левее", то мы получим 7 вариантов:)

А если как "ближайший левый", то - один.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #34954244
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, смысл исходного поста был не в том, чтоб все бросились решать задачу:)

Вопрос, как решать подобные задачи на SQL?

Ниже приведён оптимизированный вариант, который выполняется в среднем на моём лаптопе 0.3 секунды. Исходный - 0.9 секунды.

Изменения:

1. Предварительная фильтрация возможных комбинаций по ограничениям совместимости в одном доме
2. Упрощённая процедура проверки вхождения элемента один и только один раз.
3. Предварительное определение с помощью CASE, в каких домах в данном варианте находятся искомые элементы для проверки условия типа 15.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
set nocount on


declare @start datetime

set @start = getdate()

declare @res table( sig varchar( 10 ), col varchar( 10 ), dri varchar( 10 ),ani varchar( 10 ), nat varchar( 10 ), num int)


insert @res

	select sig, col, dri, ani, nat, num
	from 
	(
		select sig, col, dri, ani, nat, num
		from 
		( select 'Pall Mall' as sig union select 'Dunhill' union select 'Marlboro' union select 'Winfield' union select 'Rothmans') sigs,
		( select 'red'  as col union  select 'green' union select 'white' union select 'blue' union select 'yellow') cols,
		( select 'tea'  as dri union  select 'beer' union select 'cofe' union select 'milk' union select 'water') dris,
		( select 'fish'  as ani union  select 'dog' union select 'cat' union select 'horse' union select 'bird') anis,
		( select 'eng'  as nat union  select 'norv' union select 'shved' union select 'dat' union select 'nem') nats,
		( select  1   as num union  select  2  union select  3  union select  4  union select  5 ) nums
	) tmp

	where 
	(
		nat = 'eng' and col='red'
		or
		nat != 'eng' and col!='red'
	) -- #1 Англичанин живет в красном доме.

	and
	(
		nat = 'shved' and ani = 'dog'
		or
		nat != 'shved' and ani != 'dog'
	) -- #2 Швед держит собаку
	and
	(
		nat = 'dat' and dri = 'tea'
		or
		nat != 'dat' and dri != 'tea'
	) -- #3 Датчанин пьет чай
	and
	(
		col = 'green' and dri = 'cofe'
		or
		col != 'green' and dri != 'cofe'
	) -- #5 Жилец зеленого дома пьет кофе.
	and
	(
		sig = 'Pall Mall' and ani = 'bird' 
		or
		sig != 'Pall Mall' and ani != 'bird' 
	) -- #6 Человек, который курит Pall Mall, держит птицу
	and
	(
		num =  3  and dri = 'milk'
		or
		num !=  3  and dri != 'milk'
	) -- #7 Жилец из среднего дома пьет молоко
	and
	(
		col = 'yellow' and sig = 'Dunhill'
		or
		col != 'yellow' and sig != 'Dunhill'
	) -- #8 Жилец из желтого дома курит Dunhill
	and
	(
		num =  1  and nat = 'norv'
		or
		num !=  1  and nat != 'norv'
	) -- #9 Норвежец живет в первом доме
	and 
		not (sig = 'Marlboro' and ani = 'cat' )
	-- #10 Курильщик Marlboro живет около того, кто держит кошку
	and
		not (sig = 'Dunhill' and ani = 'horse' )
	-- #11 Человек, который содержит лошадь, живет около того, кто курит Dunhill

	and
	(
		dri = 'beer' and sig = 'Winfield'
		or
		dri != 'beer' and sig != 'Winfield'
	) -- #12 Курильщик сигарет Winfield пьет пиво.
	and
	(
		num =  2  and col = 'blue'
		or
		num !=  2  and col != 'blue'
	) -- #13 Норвежец живет около голубого дома.
	and
	(
		nat = 'nem' and sig = 'Rothmans'
		or
		nat != 'nem' and sig != 'Rothmans'
	) -- #14 Немец курит Rothmans
	and
		not (sig = 'Marlboro' and dri = 'water' )
	-- #15 Курильщик Marlboro живет по соседству с человеком, который пьет воду




select 
a.sig, a.col, a.dri, a.ani, a.nat, a.num,
b.sig, b.col, b.dri, b.ani, b.nat, b.num,
c.sig, c.col, c.dri, c.ani, c.nat, c.num,
d.sig, d.col, d.dri, d.ani, d.nat, d.num,
e.sig, e.col, e.dri, e.ani, e.nat, e.num
from
	(select * from @res where num =  1 ) a,
	(select * from @res where num =  2 ) b,
	(select * from @res where num =  3 ) c,
	(select * from @res where num =  4 ) d,
	(select * from @res where num =  5 ) e
where
	 25  = (
			select count(distinct sig) 
				from 
				(
					select a.sig union 
					select b.sig union 
					select c.sig union 
					select d.sig union
					select e.sig union
					select a.col union 
					select b.col union 
					select c.col union 
					select d.col union
					select e.col union
					select a.dri union 
					select b.dri union 
					select c.dri union 
					select d.dri union
					select e.dri union
					select a.ani union 
					select b.ani union 
					select c.ani union 
					select d.ani union
					select e.ani union
					select a.nat union 
					select b.nat union 
					select c.nat union 
					select d.nat union
					select e.nat

				) b
		)
	and 
		(
			case 'green'
				when a.col then  1 
				when b.col then  2 
				when c.col then  3 
				when d.col then  4 
				when e.col then  5 
			end
		-
			case 'white'
				when a.col then  1 
				when b.col then  2 
				when c.col then  3 
				when d.col then  4 
				when e.col then  5 
			end		
		) = -  1 
	-- #4 Зеленый дом стоит слева от белого.
	and 
		abs
		(
			case 'Marlboro'
				when a.sig then  1 
				when b.sig then  2 
				when c.sig then  3 
				when d.sig then  4 
				when e.sig then  5 
			end
		-
			case 'cat'
				when a.ani then  1 
				when b.ani then  2 
				when c.ani then  3 
				when d.ani then  4 
				when e.ani then  5 
			end		
		) =  1 
	-- #10 Курильщик Marlboro живет около того, кто держит кошку
	and 
		abs
		(
			case 'Dunhill'
				when a.sig then  1 
				when b.sig then  2 
				when c.sig then  3 
				when d.sig then  4 
				when e.sig then  5 
			end
		-
			case 'horse'
				when a.ani then  1 
				when b.ani then  2 
				when c.ani then  3 
				when d.ani then  4 
				when e.ani then  5 
			end		
		) =  1 
	-- #11 Человек, который содержит лошадь, живет около того, кто курит Dunhill
	and 
		abs
		(
			case 'Marlboro'
				when a.sig then  1 
				when b.sig then  2 
				when c.sig then  3 
				when d.sig then  4 
				when e.sig then  5 
			end
		-
			case 'water'
				when a.dri then  1 
				when b.dri then  2 
				when c.dri then  3 
				when d.dri then  4 
				when e.dri then  5 
			end		
		) =  1 		
	-- #15 Курильщик Marlboro живет по соседству с человеком, который пьет воду



select datediff(ms, @start, getdate())

...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тест для мозгов и компьютеров
    #36844850
WebGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #36845296
alex_ll,
Код: plaintext
Select 'Немец' 
или че-то в этом духе...Задачка статическая... Значит и оптимизировать можно до самого ответа....
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #36845475
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задание: 15 ($erges: 2008-06-21)
Дима и Миша пользуются продуктами от одного и того же производителя.
Тип Таниного принтера не такой, как у Вити, но признак "цветной или нет" - совпадает.
Размер экрана Диминого ноутбука на 3 дюйма больше Олиного.
Мишин ПК в 4 раза дороже Таниного принтера.
Номера моделей Витиного принтера и Олиного ноутбука отличаются только третьим символом.
У Костиного ПК скорость процессора, как у Мишиного ПК; объем жесткого диска, как у Диминого ноутбука; объем памяти, как у Олиного ноутбука, а цена - как у Витиного принтера.
Вывести все возможные номера моделей Костиного ПК.

Это задача с SQL-EX

Чем то тоже напоминает задачу Энштейна
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тест для мозгов и компьютеров
    #38137252
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эйнштейновскую решали на Хабре

http://habrahabr.ru/post/122142/
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38141865
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boogierЕще интересные задания для решения на SQL на тему координатной плоскости.
Задание 2.
Имеется координатная плоскость и расположенные на ней прямоугольники, заданные координатами левого нижнего и правого верхнего углов.
а) Спроектировать базу данных для хранения прямоугольников
б) Написать запрос, подсчитывающий общую площадь, покрываемую прямоугольниками

Не возможно определить прямоугольник 2-я точками, по 2-м точкам только квадрат в одном экземпляре.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38141881
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angel_zarboogierЕще интересные задания для решения на SQL на тему координатной плоскости.
Задание 2.
Имеется координатная плоскость и расположенные на ней прямоугольники, заданные координатами левого нижнего и правого верхнего углов.
а) Спроектировать базу данных для хранения прямоугольников
б) Написать запрос, подсчитывающий общую площадь, покрываемую прямоугольниками

Не возможно определить прямоугольник 2-я точками, по 2-м точкам только квадрат в одном экземпляре.Если стороны параллельны координатным осям, то отчего же?
А иначе непонятно, что такое "левый нижний" и "правый верхний".
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38142026
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В условии про параллельность сторон ни слова, хотя если так, то это упрасчает задачу
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38142088
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angel_zarВ условии про параллельность сторон ни слова, хотя если так, то это упрасчает задачу
А если это не так — то задача не имеет решения.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38142115
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angel_zarВ условии про параллельность сторон ни слова, хотя если так, то это упрасчает задачу
99% они прямоугольники параллельны осям координат. Я встречал много
подобных задач и левый-верхний-правый-нижний углы еще раз подтверждают
это.

Постановка - типична для GIS систем. По сути надо подсчитать площадь от union
по всему множеству прямоугольников.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38142844
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и правда, занятно решать логические задачки в сиквеле:)
например, Задачи на соответствие , или Рыцари и лжецы-5 или подобные. Конечно, задачи не сложные, - но занятно:)
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38142877
iap, angel_zar, Гость333 , mayton

Ребята, в условиях же сказано - прямоугольник!!!
Это значит, что у фигуры противоположенные стороны РАВНЫ и ПАРАЛЛЕЛЬНЫ друг другу. Стало быть, зная координаты любых двух противоположных углов можно вычислить координаты оставшихся двух углов, вне зависимости от позиционирования прямоугольника относительно осей координат... Вычислив же координаты оставшихся двух углов прямоугольника можно легко найти длины его сторон
и площадь. Так-то задача по геометрии за 7 класс среднеобразовательной школы...

З.Ы.
За квадрат - это всего лишь частный случай прямоугольника, у которого помимо всего прочего все стороны равны.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38142950
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхзная координаты любых двух противоположных углов можно вычислить координаты оставшихся двух углов, вне зависимости от позиционирования прямоугольника относительно осей координат
Каким образом?
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38143081
Гость333,

да, пожалуй поторопился, ибо через две точки на плоскости можно провести более одного прямоугольника. думал цепляться за лево-право, верх-низ. Но тогда непонятно, как обрабатывать ситуацию прямоугольником, параллельным координатным осям...
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38143239
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причём, каждая незаданная пара вершин определяет диаметр окружности,
для которой диаметром является и отрезок между заданными вершинами.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38143517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите в поиске. Эта задача в sql.ru уже звучала и ЕМНИП мы ее уже решили.
...
Рейтинг: 0 / 0
Тест для мозгов и компьютеров
    #38313701
несвятой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гость333Добрый Э - Эхзная координаты любых двух противоположных углов можно вычислить координаты оставшихся двух углов, вне зависимости от позиционирования прямоугольника относительно осей координат
Каким образом?
Гость333, в условии же сказано, "прямоугольники, заданные координатами левого нижнего и правого верхнего углов".
У красного прямоугольника нет левого нижнего угла, есть отдельно левый и отдельно нижний, при этом левый не является нижним, а нижний не является левым. То же самое и про правый верхний угол. Так что прямоугольник, у которого стороны параллельны осям - единственный возможный вариант.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тест для мозгов и компьютеров
    #39641057
angel_zarЗадание: 15 ($erges: 2008-06-21)
Дима и Миша пользуются продуктами от одного и того же производителя.
Тип Таниного принтера не такой, как у Вити, но признак "цветной или нет" - совпадает.
Размер экрана Диминого ноутбука на 3 дюйма больше Олиного.
Мишин ПК в 4 раза дороже Таниного принтера.
Номера моделей Витиного принтера и Олиного ноутбука отличаются только третьим символом.
У Костиного ПК скорость процессора, как у Мишиного ПК; объем жесткого диска, как у Диминого ноутбука; объем памяти, как у Олиного ноутбука, а цена - как у Витиного принтера.
Вывести все возможные номера моделей Костиного ПК.

Это задача с SQL-EX


Я вписал все условия в табличку, где столбец - имя (Дима, Миша и т.д.)
Сначала решать построчно, потом попытался по столбцам (сначала решить для Димы, потом для Миши ит.д., но так, видимо, не получится, условия все переплетены между собой, (связь все ко всем) как бесконечная матрешка.
Подскажите, какой алгоритм решения этой задачи?
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Тест для мозгов и компьютеров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]