Russian Qt Forum

Разное => Говорилка => Тема начата: Khs от Март 28, 2009, 01:36



Название: Задачки
Отправлено: Khs от Март 28, 2009, 01:36
Может сделать раздел форума, куда выкладывать какие-нить задачки, примеры из программирования? конечно опытным прогерам мож не интересно буит, зато зеленым как я в самый раз :)


Название: Re: Задачки
Отправлено: Khs от Март 30, 2009, 14:38
Итак, сначала пойдут задачки на логику :)

Сразу оговорюсь, данные задачки взяты из интернета, и ПРОСЬБА, тем кому они не интересны, просто не пишите здесь взятые загугленные ответы (надеюсь на честность) и не пишите, что данные задачки для первоклассников и тп. :)

Поначалу пойдут не сложные в принципе, главное подумать. Ответ буду говорить через некоторое время, либо по просьбе нескольких, либо если даны правильные (более одного человека дали правильный ответ).

+ Не забываем писать логику суждений :)


Название: Re: Задачки
Отправлено: Khs от Март 30, 2009, 14:39
№1: Есть три закрытых ящика с фруктами, в одном лежат апельсины, в другом лимоны, а в третьем смесь - апельсины и лимоны. Все надписи на ящиках перепутаны. Какие ящики (и сколько) надо открыть, и сколько фруктов достать, чтобы правильно перевесить таблички с надписями?


Название: Re: Задачки
Отправлено: Rcus от Март 30, 2009, 14:59
Если надписи перепутаны совершенно до исключения правильного расположения хотя-бы одной, то достаточно открыть ящик отмеченный Л+А и достать один фрукт :)


Название: Re: Задачки
Отправлено: Khs от Март 30, 2009, 16:53
Ответ №1: По условию известно, что перепутаны все надписи. Открываем тот ящик, на котором надпись "Апельсины и лимоны", и берем один фрукт, если это лимон, то перевешиваем надпись "Апельсины и лимоны" туда, где надпись "Апельсины", а надпись "Апельсины" перевешиваем туда где написано "Лимоны", а табличку "Лимоны" вешаем на открытый ящик.

Rcus прав :)

№2: У Вас есть наемный рабочий. Есть кусок золота, разделенный на семь соединенных сегментов. Вы должны давать рабочему по одному сегменту золота в день. Как оплатить ему семь рабочих дней, если отломать от куска золота можно только дважды?
Пояснение: Имеется кусок золота, цельный, помеченный на 7 равномерных частей (как шоколадка из 7 долек). Ежедневно должна выплачиваться плата рабочему размером в 1 сегмент. Сломать кусок золота можно дважды, допустим 1, 2, 4 и тп. (тоесть сначала поделили на 3 и 4 сегмента, птом кусок в 3 поделили на 1 и 2 например, больше нельзя)


Название: Re: Задачки
Отправлено: Khs от Март 30, 2009, 21:35
Ответ №2: Делим кусок золота на три части следующим образом:

|=|

|=|=|

|=|=|=|=|

Первый день: Даем рабочему самый маленький кусочек.

Второй день: Даем рабочему кусок чуть больше (на два сегмента) и забираем первый кусок (маленький).

Третий день: Даем рабочему самый маленький кусочек (теперь у него три сегмента есть).

Четвертый день: Отбираем у рабочего все золото, что давали и даем ему самый большой кусок (на четыре сегмента).

Пятый день: Вручаем рабочему маленький кусочек, в дополнение к самому большому.

Шестой день: Отбираем маленький кусок и вручаем двухсегментный. (у него на руках 6 сегментов)

Седьмой день: Отдаем обратно маленький кусочек.

Если нет ограничений на равенство сегментов, и форму куска золота, можно подумать над пересечением кривых (каждая кривая - форма разреза).


Название: Re: Задачки
Отправлено: Karl-Philipp от Март 30, 2009, 21:44
здОрово, давай еще :)


Название: Re: Задачки
Отправлено: m_ax от Март 30, 2009, 21:55
Продолжу тему задачек  :)

Имеется целая куча различных шнурков: все разной длины, ширины, все неоднородны и т.п.
Единственное, что их объединяет - это то что любой из этих шнурков, если его поджечь с какого-либо конца, горит ровно одну минуту.
Вопрос: как отмерить 15 сек?  ???


Название: Re: Задачки
Отправлено: Khs от Март 30, 2009, 22:16
to shapoclak: Посмотрев другие задачки которые задаются в мелкософте и тп, точнее ответы на них, можно дать даже такой абсурдный ответ как "с помощью часов (секундомера)" ;D Хотя блин, все эти задачи неоднозначные, возможно все, надо подумать, мож с помощью допущений можно :)


Название: Re: Задачки
Отправлено: m_ax от Март 30, 2009, 22:23
to shapoclak: Посмотрев другие задачки которые задаются в мелкософте и тп, точнее ответы на них, можно дать даже такой абсурдный ответ как "с помощью часов (секундомера)" ;D Хотя блин, все эти задачи неоднозначные, возможно все, надо подумать, мож с помощью допущений можно :)

Могу Вас заверить, для данной задачи существует вполне однозначный ответ  ;)


Название: Re: Задачки
Отправлено: Karl-Philipp от Март 30, 2009, 22:29
Задача про шнурки:
взять шнурок подлиннее, сложить его вчетверо. Поджечь и смотреть пока четверть не сгорит :)


Название: Re: Задачки
Отправлено: Khs от Март 30, 2009, 22:31
to terlan: это верно если имеется допущение равномерной скорости сгорания :) тут мне кажется в чем то другом подвох :)

to shapoclak: на любом участке шнурка скорость движения сгорания участка одинакова?


Название: Re: Задачки
Отправлено: m_ax от Март 30, 2009, 22:34
Задача про шнурки:
взять шнурок подлиннее, сложить его вчетверо. Поджечь и смотреть пока четверть не сгорит :)

Нет, все шнурки неоднородны: к примеру, 90% шнурка выгорит за 5 сек а оставшееся 5% за 55 сек...

как правильно заметил logIc


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 04:07
Берем 2 шнурка - один поджигаем с 2-х концов, второй с одного. Когда первый догорает поджигаем второй еще с одного конца. Время за которое сгорит остаток второго шнурка - 15 сек.


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 07:50
to Sergeich, разве это правильно?  :)


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 08:12
А что, собственно говоря, не так?


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 08:31
Ну да, щас подумал, точно так оно и есть, я на другом зациклился :)


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 08:33
№3: Имеется круглый стол с симметрично расположенными на нем 4-мя выключателями. Выключатель в состоянии вкл и выкл выглядит совершенно одинаково.
Одна из возможных комбинаций из 4-х включателей зажигает лампочку. Чтоб проверить зажглась ли лампочка или нет нам надо выйти из комнаты. Когда мы выходим - стол крутится в неизвестном направлении.
Надо зажечь лампочку как можно быстрей.


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 12:39
Элементарно )

Всего имеется 16 комбинаций...

Действие №1: Нажимаем на все 4 переключателя и затем идём смотреть на лампочку.
Если лампочка не горит, возвращаемся и
Действие №2: Нажимаем на любые 3 переключателя и идём смотреть на лампочку.
Если лампочка не горит, возвращаемся и
Действие №3: Нажимаем на все 4 переключателя и далее всё повторяется...

Чередуем каждый раз включение 3 и 4 выключателей  ;D


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 15:05
Вспомнилась ещё одна задачка, которую мне задал как то один психотерапефт:

Скалолаз-лузер хочет спуститься вниз со скалы высотой 100 метров. У него имеется верёвка 75 метров. Её (верёвку) можно привязать на отметке 100 метров и на выступе в скале на 50 метров. Ещё у скалолаза имеется ножик. Слепых узлов, поскольку он лузер, вязать не может (эт такие узлы саморозвязывающиеся: если сильно дёрнуть за верёвку)
Как ему спуститься вниз ? ???


Название: Re: Задачки
Отправлено: pastor от Март 31, 2009, 15:33
Отрезать 25 метров веревки. Один конец закрепить на отметке 100 метров, на другом конце сделать петлю. Взять оставшуюся часть веревки (50 метров) и продеть в петлю (получим 25+25 = 50 метров). Спускаемся на уступ, выдергиваем веревку из петли, привязываем к уступу ,спускаемся на землю

Так?


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 18:54
Отрезать 25 метров веревки. Один конец закрепить на отметке 100 метров, на другом конце сделать петлю. Взять оставшуюся часть веревки (50 метров) и продеть в петлю (получим 25+25 = 50 метров). Спускаемся на уступ, выдергиваем веревку из петли, привязываем к уступу ,спускаемся на землю

Так?

Верно, именно так :)


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 19:01
ОК, внесу свой вклад:
Есть два города: жители одного всегда говорят правду, жители другого всегда лгут. Жители этих городов частенько ездят друг к другу в гости. Вы попали в один из этих городов. Необходимо задав один вопрос прохожему, определить в каком городе вы находитесь


Название: Re: Задачки
Отправлено: Пантер от Март 31, 2009, 19:28
Еще задачка.
Из Ростова в Таганрог выехал велосипедист. В то же время из Таганрога в Ростов выехал автобус. Понятно, что скорость велосипедиста намного меньше скорости автобуса. Вопрос: когда они встретятся, кто будет дальше от Ростова?


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 19:40
ОК, внесу свой вклад:
Есть два города: жители одного всегда говорят правду, жители другого всегда лгут. Жители этих городов частенько ездят друг к другу в гости. Вы попали в один из этих городов. Необходимо задав один вопрос прохожему, определить в каком городе вы находитесь

Прикольно  ;D

Нужно спросить у прохожего: Вы гость в городе где все лгут?
Если ответ нет - значит вы в городе где все говорят правду, иначе где все лгут...

Так?


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 19:45
Еще задачка.
Из Ростова в Таганрог выехал велосипедист. В то же время из Таганрога в Ростов выехал автобус. Понятно, что скорость велосипедиста намного меньше скорости автобуса. Вопрос: когда они встретятся, кто будет дальше от Ростова?

причём тут скорость велосипеда? Они оба будут равноудалены от Ростова...


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 21:31
ОК, внесу свой вклад:
Есть два города: жители одного всегда говорят правду, жители другого всегда лгут. Жители этих городов частенько ездят друг к другу в гости. Вы попали в один из этих городов. Необходимо задав один вопрос прохожему, определить в каком городе вы находитесь

Прикольно  ;D

Нужно спросить у прохожего: Вы гость в городе где все лгут?
Если ответ нет - значит вы в городе где все говорят правду, иначе где все лгут...

Так?
Гмм.. давай формализуем задачу. Условно назовем города Правдинск и Лжевск. Тогда твой вопрос будет иметь вид: Вы гость в Лжевске? => Вы из Правдинска?

Если так, то житель Правдиска(Пр.) или Лжевска(Лж.) скажет:
1. Правдинск: Пр.: да Лж.: да
2. Лжевск:      Пр.: да Лж.: да

Или я недопонял. Формализуй :)


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 22:00
№3: Когда мы выходим - стол крутится в неизвестном направлении.

Уточни: стол крутится постоянно в одном и том же направлении? Всегда на 90 градусов? Или вообще произвольно? В последнем случае задача конечно корректна, но не из серии быстрых.


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 22:03
to Sergeich, не знаю, скапипастил условие, такое как есть, уточнить я думаю смогу только тогда когда гляну решение (еще не смотрел)  :)

P.S. подсказка (почти решение, осталалось добавить немного конкретики): переключение каждый раз выбирается таким образом, что гарантируется включение до сих пор не включенных кнопок, НЕЗАВИСИМО от того, как повернется стол между переключениями.


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 22:10
to Sergeich, не знаю, скапипастил условие, такое как есть, уточнить я думаю смогу только тогда когда гляну решение (еще не смотрел)  :)
Ну мля, ну нельзя же так :) Я тут с утра из-за тя курс теорвера вспоминать начал. А тут - скопипастил, ну еп......


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 22:12
ОК, внесу свой вклад:
Есть два города: жители одного всегда говорят правду, жители другого всегда лгут. Жители этих городов частенько ездят друг к другу в гости. Вы попали в один из этих городов. Необходимо задав один вопрос прохожему, определить в каком городе вы находитесь

Прикольно  ;D

Нужно спросить у прохожего: Вы гость в городе где все лгут?
Если ответ нет - значит вы в городе где все говорят правду, иначе где все лгут...

Так?
Гмм.. давай формализуем задачу. Условно назовем города Правдинск и Лжевск. Тогда твой вопрос будет иметь вид: Вы гость в Лжевске? => Вы из Правдинска?

Если так, то житель Правдиска(Пр.) или Лжевска(Лж.) скажет:
1. Правдинск: Пр.: да Лж.: да
2. Лжевск:      Пр.: да Лж.: да

Или я недопонял. Формализуй :)

Поясняю:

Вопрос: "Вы гость в Лжевске?" не тождественен вопросу: "Вы из Правдинска?"

Под первым я понимаю следующее:
Господин или мадам, вы приехали в этот город погостить из Лжевска?

 


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 22:13
to Sergeich: я в самом первом своем сообщении написал, что эти вопросы взяты из интернета, из собеседований крупных компаний и тп.  :-\


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 22:31
Если мы находимся в Лжевске и задаём этот вопрос кореному жителю (вруну) он соврёт и скажет да,
если нам попался приезжий из Правдинска он тож скажет да, поскольку эт правда.

Теперь предположим что мы попали в Правдинск:
пр: нет;
лж: нет;

Логика понятна?


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 22:35
to shapoclak: ты все уловил, сформулируй!


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 22:39
Вопрос: вы приехали (в этот город - можно смело опустить) погостить из Лжевска? Да?


Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 22:41
Вопрос: вы приехали (в этот город - можно смело опустить) погостить из Лжевска? Да?
Да.

Это кому вопрос мне или прохожему? ;D

сейчас сформулирую...


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 22:47
К тебе, конечно. Смотри что дальше:
В Правдинске: Пр. нет, Лж.: нет
В Лжевске: Пр.: нет, Лж.: да (или как ;) )
Вроде бы неопределенность (правда с вероятностью)



Название: Re: Задачки
Отправлено: m_ax от Март 31, 2009, 22:53
К тебе, конечно. Смотри что дальше:
В Правдинске: Пр. нет, Лж.: нет
В Лжевске: Пр.: нет, Лж.: да (или как ;) )
Вроде бы неопределенность (правда с вероятностью)

Да в тут неопределённость получается... Надо подумать...


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 22:58
Ну мну с этом задачей тот же геморрой был:) В принципе знаешь, но не знаешь как сформулировать


Название: Re: Задачки
Отправлено: novak от Март 31, 2009, 23:01
Нам же не нужно определять кто перед нами, лжец или тот, кто говорит правду.
Можно просто спросить "Это ваш родной город?"
И тогда:
В Правдинске: Пр. да, Лж.: да
В Лжевске: Пр.: нет, Лж.: нет


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 23:09
Ответ №3: Решение: переключение каждый раз выбирается таким образом, что гарантируется включение до сих пор не включенных кнопок, НЕЗАВИСИМО от того, как повернется стол между переключениями.

То есть, пусть вначале все выключено (0000). Включаем все четыре (1111). Затем, нажимаем две кнопки по диагонали (это либо 1010, либо 0101). Потом нажимаем все четыре, получим нажатыми две ДРУГИЕ кнопки по диагонали (т.е. либо 0101, либо 1010). И так далее.

Потом переходим к перебору нечетных комбинаций аналогичным образом, чтобы начать нечетный набор, нужно переключить одну кнопку в четном состоянии.


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 23:11
Нам же не нужно определять кто перед нами, лжец или тот, кто говорит правду.
Можно просто спросить "Это ваш родной город?"
И тогда:
В Правдинске: Пр. да, Лж.: да
В Лжевске: Пр.: нет, Лж.: нет

:) Обычно проще - чувак, ты местный? :)


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 23:23
Ответ №3: Решение: переключение каждый раз выбирается таким образом, что гарантируется включение до сих пор не включенных кнопок, НЕЗАВИСИМО от того, как повернется стол между переключениями.

То есть, пусть вначале все выключено (0000). Включаем все четыре (1111). Затем, нажимаем две кнопки по диагонали (это либо 1010, либо 0101). Потом нажимаем все четыре, получим нажатыми две ДРУГИЕ кнопки по диагонали (т.е. либо 0101, либо 1010). И так далее.
- непонятно "так далее" - мы уже после 4-х итераций имеем 4 комбинации - 0000, 1111, 0101, 1010. Над остальным надо думать.  Типа две соседних - все, одну - потом опять все. (+4 комбинации )


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 23:30
О! Еще задачка вспомнилась. Правда не на логику, а скорее на ... хрен его знает на что.  Помнится думал месяца два, сообразил совершенно случайно, но когда сообразил - это был пиздец. Вобщем это из сложных задач имеющих суперпростые решения:
Есть доска 8х8 - из нее с противоположных углов вырезают две клетки. Есть доминушки размером 1х2. Как ими полностью замостить данную доску?


Название: Re: Задачки
Отправлено: Khs от Март 31, 2009, 23:40
Цитировать
Есть доска 8х8
клеток я понимаю 8x8? тобишь 64 (мегапознаниния в математике ;D)

Цитировать

из нее с противоположных углов вырезают две клетки
это означает что пройдемся по каждому углу? и есть ли разница каким образом делается вырез клеток (диагональ и тп)

может оно тут и не в этом дело, но просто сразу решил внести ясность, чтоб дальше подумать вообщем :)


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 23:49
Сначало клеток 8х8=64, потом 2 отпиливают (по диагонали). Разница есть - если отпилить с одной стороны - способ укладки очевиден.


Название: Re: Задачки
Отправлено: Sergeich от Март 31, 2009, 23:52
Отпилили так:
01111111
11111111
11111111
11111111
11111111
11111111
11111111
11111110


Название: Re: Задачки
Отправлено: Пантер от Апрель 01, 2009, 06:16
причём тут скорость велосипеда?
Это чтобы запутать. :)


Название: Re: Задачки
Отправлено: Khs от Апрель 01, 2009, 08:19
Отпилили так:
01111111
.............
11111110

мм..я думаю здесь проще сначала рассмотреть случай 4*4, для 8*8 будет аналогично я думаю :) самая первая мысль, что приходит, это никак, но над подумать :)


Название: Re: Задачки
Отправлено: m_ax от Апрель 03, 2009, 20:00
К вопросу о доске, да та что 8x8...

Общая её первоначальная площадь S=64;
отпиливаем два квадратика, следовательно S=64-2=62.
Площадь одной доминушки w=2, следовательно нам необходимо всего N=62/2 = 31 доминушки.
Теперь, если нам не зря читали теорию симметрии, то картина не должна измениться при повороте системы (доски) вокруг её центра на угол 180 градусов. (расположение замощёных доминушек должно быть инвариантно относительно такого поворота). Но поскольку их число (доминушек) нечётно (N=31) то мы никогда не составим такой комбинации, а следовательно невозможно замостить таким образом нашу многострадальную доску  :)

Других идей пока нет, может месяца через три меня озорит  ;D


Название: Re: Задачки
Отправлено: Khs от Апрель 03, 2009, 20:16
Ждем ответа! Йоу, наш ответ - никак :)))


Название: Re: Задачки
Отправлено: Sergeich от Апрель 03, 2009, 21:43
Да, это действительно невозможно. Т.е. - решение данной данной задачи - доказательство невозможности данного построения. Идеи, приведенные камрадом shapoclak верны, но все-таки формального доказательства не составляют.
P.S. Задача решается без теории групп, чиста на пальцах :)


Название: Re: Задачки
Отправлено: Khs от Апрель 03, 2009, 22:08
№4: Есть пятеро пиратов, упорядоченных от 5 до 1. Главный пират имеет право предложить, как распределить 100 золотых монет между всеми. Но остальные потом голосуют за этот план, и если меньше половины пиратов соглашаются с ним, то его убивают, и следующий по порядку становится главным. Как должен пират распределить золото, чтобы максимально увеличить свою долю, но выжить при этом?


Название: Re: Задачки
Отправлено: Khs от Апрель 03, 2009, 22:50
Цитировать
, упорядоченных от 5 до 1
Это еще зачем?

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


Название: Re: Задачки
Отправлено: Sergeich от Апрель 03, 2009, 22:51
Цитировать
, упорядоченных от 5 до 1
Это еще зачем?

Ну видимо иерархия в банде, типа старшинство :)
Понял, ужо удалил.


Название: Re: Задачки
Отправлено: Sergeich от Апрель 03, 2009, 22:57
Цитировать
если меньше половины пиратов соглашаются с ним
Включая его самого?


Название: Re: Задачки
Отправлено: Sergeich от Апрель 03, 2009, 23:04
Как я понял, это ни фига не задача. Если нельзя передать право распределения другому, то оптимально 40:30:30:0:0


Название: Re: Задачки
Отправлено: novak от Апрель 04, 2009, 11:17
то оптимально 40:30:30:0:0
Нет, не оптимально, потому как при таком раскладе 4-му не имеет смысла голосовать "за".


Название: Re: Задачки
Отправлено: Sergeich от Апрель 05, 2009, 01:43
Про задачу с доской: Представим что доска 8х8 - шахматная :), т.е. клетки раскрашенны черным и белым в известном  порядке. Тогда любая доминушка  1х2 должна занимать одну черную и одну белую клетку. Если мы вырезаем две клетки по диагонали - это либо две белые, либо две черные клетки.


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 04:26
№5. Дана прямая, каждая точка которой имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно случайная. Существует ли всегда на такой прямой отрезок, концы и середину которого составляют точки одного цвета?


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 15:29
Цитировать
№5. Дана прямая, каждая точка которой имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно случайная. Существует ли всегда на такой прямой отрезок, концы и середину которого составляют точки одного цвета?

существует всегда!


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 15:39
Цитировать
существует всегда!
тогда это нужно доказать - на то она и задача  ;)


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 15:50
ответы куда писать?)


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 15:53
ответы куда писать?)
по примерам предыдущих задач - прямо в тред


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 16:04
ну я рассматривал прямую с натуральными числами (т.к. R - счетно, то можно)
Затем смотрим расположение 3х точек - возможно 6 (3!) вариантов. Из них 2 подходят. Из еще 4х строим парные комбинации - 16 вариантов, из них половина симметрична, итого 8. Там 4 подходят сразу, из остальных строим комбинацию из 3х. При этом они начинают сводиться к тому, что уже было... может можно как проще:)


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 16:07
Если принять черный за 0, а белый за Х, то в прямой:
...0x0xx0x0...

все что будет левее или правее жирного приведет к появлению отрезка :) .

ЧТД

можно даже привести сюда и "инверсный" кусок того что я привел, т.е. х0х00х0х


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 16:10
это если оно есть - жирное) что тоже надо доказать


Название: Re: Задачки
Отправлено: ufna от Январь 11, 2010, 16:10
ну вообще, по идее, нет. Какой бы отрезок не существовал, можно взять еще один вероятностный случай, когда посередине него будет другая точка. Тут же бесконечное множество возможных вариантов и для каждого мы можем сопоставить "неверный".


Название: Re: Задачки
Отправлено: ufna от Январь 11, 2010, 16:12
хотя я кажись задание не понял. Середина - это конкретная точка получается, а не весь отрезок (


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 16:12
Цитировать
это если оно есть - жирное) что тоже надо доказать
а я жирным выделил привел самый "длинный" отрезок, в котором еще не выполняются условия.
т.е. при иных комбинациях наш отрезок, удовлетворяющий условию задачи появится еще раньше.
так что ответ - ВСЕГДА! :)


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 16:24
ну я рассматривал прямую с натуральными числами (т.к. R - счетно, то можно)
рассматривается непрерывная, действительная прямая.
Если принять черный за 0, а белый за Х, то в прямой:
...0x0xx0x0...

все что будет левее или правее жирного приведет к появлению отрезка :) .
поскольку прямая непрерывная, между любой из точек (0/x в твоей интерпретации) в примере можно разместить сколько угодно других точек, в любой желаемой комбинации... модель ничего не доказывает

хотя я кажись задание не понял. Середина - это конкретная точка получается, а не весь отрезок (
да, речь идет только о трех точках - на концах отрезка и его середине

Пока ни одного аргументированно правильного ответа  :)


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 16:31
между вещественной прямой и натуральными числами ставится взаимнооднозначное соответстве, пора бы знать


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 16:34
вово, и я о том же... т.е. мы точно знаем координату любой точки, поэтому всё путем ;)
тем более, что если в приведенную мной комбинацию вставить "внутрь" (в жирное) хотя-бы одну точку - то тоже получим искомый отрезок
т.е тут выполнится условие при добавлении еще хотя бы одной точки не говоря уже о бесконечном их количестве
ЧТД


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 16:38
твой пример плох тем, что теоретически его може не быть ведь 0x0x0x0x подходит, но твой пример не содержит


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 16:41
дык мой пример - это максимально длинная комбинация при которой условие еще не соблюдается .
длинее напишеш ? :)


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 16:47
длинная, согласен. Не выполняется тоже. Кто сказал что нет другой, на к-й не выполнено - короче. Как раз поперебирать и надо.


Название: Re: Задачки
Отправлено: Igors от Январь 11, 2010, 16:49
Не пойму в чем задача. Ладно, встали в первую точку отрезка. Возможно ли что там нужный нам цвет? Конечно, с вероятностью 0.5 (надо полагать "абсолютно случайно" - значит "равновероятно"). Стали в середину - возможно ли что там опять нужный нам цвет? Конечно возможно (и к бабке не ходи). Точно так же с концом. А поскольку прямая бесконечна - мы вправе утверждать что да, всегда существует при любом random seed. А если даже заменить прямую на "большой отрезок" - нужная комбинация найдется при каком-то random seed.

Что не так?


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 16:57
Цитировать
Что не так?
а может и не найдется :D 50/50

нет, тут есть математическое решение.. вот только какое? (задачка с подковыркой)
тут нужно и пределы и интегралы и теорию вероятности использовать :)


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 17:05
между вещественной прямой и натуральными числами ставится взаимнооднозначное соответстве, пора бы знать
Неправда ваша. Элементы любого вещественного отрезка пронумеровать невозможно. Любой вещественный отрезок (тем более прямая) имеет мощность континуума. То, что множество вещественных чисел не является счетным доказывается в первом семестре вышки.
дык мой пример - это максимально длинная комбинация при которой условие еще не соблюдается .
длинее напишеш ? :)
твой пример представляет собой дискретную модель, тогда как прямая - объект непрерывный. Поэтому в данном случае она ничего доказать не может: между любыми двумя точками находится бесконечно много других точек, раскраска которых может быть абсолютно любой, следовательно любую комбинация 3х точек, удовлетворяющих условию задачи можно "разбавить" так, что эта комбинация перестанет ей удовлетворять. Конечно, тогда в рамках этой же дискр. модели может появиться другая комбинация 3х точек, но в том то и дело, что она уже будет другая. Ее опять можно будет "разбавить" и так до бесконечности...
длинная, согласен. Не выполняется тоже. Кто сказал что нет другой, на к-й не выполнено - короче. Как раз поперебирать и надо.
Как вы будете перебирать множество, элементы которого нельзя даже посчитать?! :)


Название: Re: Задачки
Отправлено: Igors от Январь 11, 2010, 17:06
Цитировать
Что не так?
а может и не найдется :D 50/50

нет, тут есть математическое решение.. вот только какое? (задачка с подковыркой)
тут нужно и пределы и интегралы и теорию вероятности использовать :)
Да я ж не против подковырок, но пусть мне пояснят где проблемы-то. А пока я вижу вероятность такого отрезка 0.125 - и ничего более  :)


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 17:08
нет, тут есть математическое решение.. вот только какое? (задачка с подковыркой)
тут нужно и пределы и интегралы и теорию вероятности использовать :)
В том то и вся прелесть задачи. Решение есть. Оно дает однозначный доказанный ответ. Его построение не требует никаких специальных знаний. Только смекалка :)

P.S. brute-force, к которому многие привыкли, тут не работает.


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 17:13
Да я ж не против подковырок, но пусть мне пояснят где проблемы-то. А пока я вижу вероятность такого отрезка 0.125 - и ничего более  :)
вероятность подсчитана верно, спору нет. Вот только даже при вероятности 0.999 нельзя утверждать, что этот отрезок существует, поскольку она не равна 1. Вот и у вас получается, что вероятность его существования 0.125. Так существует он ли нет? :)


Название: Re: Задачки
Отправлено: Igors от Январь 11, 2010, 17:36
вероятность подсчитана верно, спору нет. Вот только даже при вероятности 0.999 нельзя утверждать, что этот отрезок существует, поскольку она не равна 1. Вот и у вас получается, что вероятность его существования 0.125. Так существует он ли нет? :)
На бесконечной прямой - конечно существует, просто потому что вероятность его выпадения не ноль. Для конкретных данных - на тестируемом участке напр. из 1000 точек найдется (в среднем/примерно) 125 таких отрезков. Это число будет колебаться в зависимости от random seed. Утверждать что при фиксированном числе выборок "всегда существует" - неверно. По крайней мере теоретически - возможна такая случайная последовательность при которой ни одного такого отрезка не будет, хотя это может произойти раз за миллион лет посвященных перебору  :)

Не пойму где нужно приложить смекалку  :)


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 17:59
Утверждать что при фиксированном числе выборок "всегда существует" - неверно.
Никакие фиксированные выборки не дают ответа на задачу. Нужен ответ для общего случая, а любой конечный набор фиксированных выборок представляет собой лишь частный случай.
По крайней мере теоретически - возможна такая случайная последовательность, при которой ни одного такого отрезка не будет, хотя это может произойти раз за миллион лет посвященных перебору  :)
Предположения... У этой задачи есть однозначный ответ, без всяких предположений и вероятностных моделей.

В общем и целом ответ неверный. Жду других предложений.

Подсказка: не бросайтесь в теорию вероятностей и остальную высшую математику.


Название: Re: Задачки
Отправлено: Igors от Январь 11, 2010, 18:21
Предположения... У этой задачи есть однозначный ответ, без всяких предположений и вероятностных моделей.

В общем и целом ответ неверный. Жду других предложений.

Подсказка: не бросайтесь в теорию вероятностей и остальную высшую математику.
А не слишком ли Вы уверены что ответ (который Вы имеете ввиду) "верен"?  :) Если ли Вы утверждаете что выбор цвета "абсолютно случаен" - то вероятностная модель заложена в самой постановке задаче и избавиться от нее нельзя (да и не нужно). Другое дело что (вероятно  :)) можно показать очевидность существования каким-то остроумным способом. Не спорю, этого я не знаю. Но любой ответ будет использовать теорию вероятности - хотим мы или нет. Поэтому мой ответ останется "столь же верен"  :)


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 18:42
Если ли Вы утверждаете что выбор цвета "абсолютно случаен" - то вероятностная модель заложена в самой постановке задаче и избавиться от нее нельзя (да и не нужно).
Поймите, здесь не идет речи ни о каком вероятностном эксперименте. Следовательно высчитывать вероятность того или иного исхода бессмыслено! Фраза "Раскраска - абсолютно случайная" означает, что требуется дать ответ для общего случая, не ограниченного никакими предположениями. Поэтому "вероятность выпадения не ноль для бесконечной прямой" ничего не дает.



Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 18:47
to Авварон
о том какие множества счетные, а какие - нет:

http://ru.wikipedia.org/wiki/%D0%A1%D1%87%D1%91%D1%82%D0%BD%D0%BE%D0%B5_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE#.D0.9D.D0.B5.D1.81.D1.87.D1.91.D1.82.D0.BD.D1.8B.D0.B5_.D0.BC.D0.BD.D0.BE.D0.B6.D0.B5.D1.81.D1.82.D0.B2.D0.B0 (http://ru.wikipedia.org/wiki/%D0%A1%D1%87%D1%91%D1%82%D0%BD%D0%BE%D0%B5_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE#.D0.9D.D0.B5.D1.81.D1.87.D1.91.D1.82.D0.BD.D1.8B.D0.B5_.D0.BC.D0.BD.D0.BE.D0.B6.D0.B5.D1.81.D1.82.D0.B2.D0.B0)

http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D1%83%D1%83%D0%BC_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2) (http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D1%83%D1%83%D0%BC_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2))


Название: Re: Задачки
Отправлено: Igors от Январь 11, 2010, 18:53
Поймите, здесь не идет речи ни о каком вероятностном эксперименте. Следовательно высчитывать вероятность того или иного исхода бессмыслено! Фраза "Раскраска - абсолютно случайная" означает, что требуется дать ответ для общего случая, не ограниченного никакими предположениями. Поэтому "вероятность выпадения не ноль" для бесконечной прямой ничего не дает.
Мне кажется здесь все ясно. Ладно, наверное мы с Вами думаем по-разному  :)  Не буду Вам больше мешать.


Название: Re: Задачки
Отправлено: Dendy от Январь 11, 2010, 18:56
Igors, вы путаете теорию вероятности с теоремой, решение которой определяется булевым значением - или да или нет.

ilot, в глаза бросается случай, когда прямая разбита на равные чёрно-белые отрезки. Я верно понимаю, что на их стыке существуют одновременно и белая и чёрная точки?


Название: Re: Задачки
Отправлено: Авварон от Январь 11, 2010, 19:03
так, стоп, иррациональные числа тоже считаются? тогда не прав, согласен


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 19:18
ilot, в глаза бросается случай, когда прямая разбита на равные чёрно-белые отрезки. Я верно понимаю, что на их стыке существуют одновременно и белая и чёрная точки?
Не совсем понял, что значит "на стыке"..приведите пример двух смежных отрезков, задав их границы числами (для наглядности), тогда посмотрим, что имеется в виду..

Edit: т.е. пересекаются они у вас в граничной точке или нет? что значит одновременно белая и черная точки на стыке?


Название: Re: Задачки
Отправлено: Dendy от Январь 11, 2010, 19:27
Белый [1..2] и чёрный [2..3]. Какого цвета точка в 2?


Название: Re: Задачки
Отправлено: ilot от Январь 11, 2010, 19:31
Белый [1..2] и чёрный [2..3]. Какого цвета точка в 2?
такая ситуация не возможна. Построение противоречиво само по себе. Как это относится к ответу на задачу?

только так: белый [1..2) и чёрный [2..3], либо: белый [1..2] и чёрный (2..3]

Не может же объект обладать свойством и не обладать этим же свойством одновременно.


Название: Re: Задачки
Отправлено: kuzulis от Январь 11, 2010, 22:11
по моему тут нужно "курить" в сторону центральной симметрии или нахождения среднего значения? не? ведь не зря упоминается именно ЦЕНТР отрезка!


Название: Re: Задачки
Отправлено: ilot от Январь 15, 2010, 09:20
Эта задача была дана на олимпиаде по математике среди седьмых классов общеобразовательной школы.  :) У одной из наших сотрудниц сын учится в 7 классе, вот она и принесла нам один из вариантов. В итоге люди с высшим образованием решить задачу не смогли... Мой коллега, математик по образованию, выдал заключение, что для корректного решения данной задачи необходимо обладать знаниями как минимум 2-го курсы матфака (пределы, интегралы, котинуум и т.п.), но поскольку мы уже подзабыли "что к чему", то и дергаться не стоит.
Когда я на следующий день пришел на работу, мне тоже рассказали задачку. Я на пару со своим коллегой математиком повспоминал те предметы, за изучение которых получил диплом, но ничего толкового у нас не получилось... Тем не менее задачка меня зацепила и я решил попробовать изменить ход своих мыслей:
1. задача была дана семикласснику, следовательно для ее решения должно хватить знаний обычного ребенка из 7-го класса;
2. какими знаниями по математике/геометрии обладает среднестатистический семиклассник? да собственно никакими. Единственные понятия, которые пришли мне на ум это: прямая, точка, отрезок, число, пропорция... Решив ограничится только математическими понятиями ученика седьмого класса и логикой, мне удалось решить задачу минут за 15 :)

В общем, все выше изложенное можно считать подсказкой и действовать соответственно.. ;)

P.S. задача наглядно демонстрирует, как люди, которые много чего изучали в жизни, склонны усложнять очень простые вещи, поскольку привыкли видеть мир через призму своих знаний.


Название: Re: Задачки
Отправлено: Marat(Qt) от Январь 20, 2010, 02:51
Я смотрю ответа к задаче с пиратами так и нет.
1) Пирату номер 1 всегда выгодно голосовать против,т.к. он ничем не рискует, а в итоге имеет шанс на 100 золотых.
2) Если живы 1 и 2, то 2 будет убит, ибо нафик он нужен?
3) Если живы 1, 2, 3, то 2 по-любому за, т.к. после смерти 3 см. п.2, значит 3 получает 100 золотых.
4) Живы 1,2,3,4. 4 нужно два положительных голоса, 1 как правило против, так что речь о 3 и 2 => 4 труп в силу п.3 (3-му выгодна его смерть).
5) Живы все пятеро, 4 рискует на 100% в п.4 так что он за при любых обстоятельствах, второму плевать, т.к. он с тем же успехом может быть за и в п.3. 1 и 3, вероятно, против, в силу пп. 3 и 1. Двух положительных голосов достаточно (голосуют остальные, т.е. 5-1=4, убивают если меньше половины, т.е. меньше двух). Вывод: подкупить 2, остальное взять себе. У 2 это единственный шанс заработать хоть сколько нибудь => 1 золотого будет достаточно.
Ответ: 99:0:0:1:0

p.s. Можно пересмотреть пункт 3: 1 знает что 2 будет за с 0 золотых и может устроить заговор. Но пираты редко держат обещания и 2 наверняка знает об этом, так что это мало вероятно.


Название: Re: Задачки
Отправлено: Marat(Qt) от Январь 20, 2010, 03:37
№5. По поводу Brute force:
перебором всех возможных вариантов удалось получить лишь четыре восьмиточечных отрезка, не удовлетворяющих условию задачи:
00хх00хх
хх00хх00
0х0хх0х0
х0х00х0х
Ни один из них не удлиняется. Т.е. если прямая содержит более восьми точек, то она содержит отрезок, удовлетворяющий условию задачи. Т.к. прямая содержит бесконечное количество точек, то она всегда содержит такой отрезок.


Название: Re: Задачки
Отправлено: Kolobok от Февраль 03, 2010, 19:44
N 6: Даны переменные a и b. Нужно поменять их значения, не используя третью переменную.


Название: Re: Задачки
Отправлено: BRE от Февраль 03, 2010, 19:53
N 6: Даны переменные a и b. Нужно поменять их значения, не используя третью переменную.
Тип переменных значения не имеет? Это могут быть, например, два std::map?  ;)
Если переменные целочисленные, то можно XOR-ами.  :)


Название: Re: Задачки
Отправлено: Kolobok от Февраль 03, 2010, 21:45
Тип переменных значения не имеет? Это могут быть, например, два std::map?  ;)
Если переменные целочисленные, то можно XOR-ами.  :)

Хе-хе. Задачу должны решить даже те, кто не знает, что такое XOR.
В оригинале были целочисленные, но с реальными должно тоже работать.


Название: Re: Задачки
Отправлено: BRE от Февраль 03, 2010, 22:46
Хе-хе. Задачу должны решить даже те, кто не знает, что такое XOR.
В оригинале были целочисленные, но с реальными должно тоже работать.
С этим вариантом возможны ошибки из-за переполнение...  :)


Название: Re: Задачки
Отправлено: QCasper от Февраль 03, 2010, 23:36
N 6: Даны переменные a и b. Нужно поменять их значения, не используя третью переменную.

a = a + b
b = a - b
a = a - b


Название: Re: Задачки
Отправлено: g10k от Июль 11, 2010, 10:48
Во время выполнения спецзадания разведгруппа проходит через минное заграждение противника. Группа состоит из 4 человек. Всвязи с требованием скрытности проведения операции мины в заграждении решено не снимать, а так как миноискатель у группы один, то перемещаться необходимо следующим образом - в сторону противника переходят парой, затем один человек возвращается, чобы принести оставшейся группе миноискатель. Каждый человек переходит минные заграждения со своей скоростью; скорость пары определяется скоростью более медленного ее члена. Определить минимальное время, за которое группа преодолеет препятствие, если время прохождения у каждого члена таковы: 1, 2, 5 и 10 минут


Название: Re: Задачки
Отправлено: m_ax от Июль 11, 2010, 14:57
50 мин.
Ыыы?


Название: Re: Задачки
Отправлено: ufna от Июль 11, 2010, 15:05
у меня 19 мин. получилось


Название: Re: Задачки
Отправлено: m_ax от Июль 11, 2010, 15:28
50 мин - это максимальное) Попутал условие))


Название: Re: Задачки
Отправлено: m_ax от Июль 11, 2010, 15:33
А минимальное 19 мин, похоже)


Название: Re: Задачки
Отправлено: g10k от Июль 11, 2010, 21:10
Ответ 17. Думайте лучше


Название: Re: Задачки
Отправлено: Igors от Июль 12, 2010, 12:04
Лодочник плыл против течения реки. Проплывая под мостом он потерял багор. Через час он заметил пропажу, развернулся и догнал багор в 4 км от моста (вниз по течению). Какая скорость течения реки? 


Название: Re: Задачки
Отправлено: serg_hd от Июль 12, 2010, 12:20
Лодочник плыл против течения реки. Проплывая под мостом он потерял багор. Через час он заметил пропажу, развернулся и догнал багор в 4 км от моста (вниз по течению). Какая скорость течения реки?  
Неизвестно время, в течение которого он догонял багор, чтобы прибавить его к часу. А если его игнорировать, то получается 4 км/час. Наверно неправильно, слишком просто как-то.


Название: Re: Задачки
Отправлено: MoPDoBoPoT от Июль 12, 2010, 13:15
2 км/ч?


Название: Re: Задачки
Отправлено: Igors от Июль 12, 2010, 16:33
Неизвестно время, в течение которого он догонял багор, чтобы прибавить его к часу.
Известно  :) Относительно багра скорость лодочника постоянна (это его скорость в стоячей воде). Поэтому если он удалялся 1 час, то приближался тоже 1 час (хотя относительно берега проплыл разные расстояния). За 2 часа река отнесла багор на 4 км, значит скорость течения 4 / 2 = 2 км/час. Заметим что скорость лодочника мы определить не можем


Название: Re: Задачки
Отправлено: serg_hd от Июль 12, 2010, 16:56
ага, назад он же тоже час возвращался. Как-то не подумалось сразу, что скорость его возврата такая же.


Название: Re: Задачки
Отправлено: g10k от Июль 14, 2010, 22:49
Цитата: g10k
Во время выполнения спецзадания разведгруппа проходит через минное заграждение противника. Группа состоит из 4 человек. Всвязи с требованием скрытности проведения операции мины в заграждении решено не снимать, а так как миноискатель у группы один, то перемещаться необходимо следующим образом - в сторону противника переходят парой, затем один человек возвращается, чобы принести оставшейся группе миноискатель. Каждый человек переходит минные заграждения со своей скоростью; скорость пары определяется скоростью более медленного ее члена. Определить минимальное время, за которое группа преодолеет препятствие, если время прохождения у каждого члена таковы: 1, 2, 5 и 10 минут

Подсказка к задаче, после которой и думать нечего: возвращаться обратно с миноискателем не обязательно должен человек из прибывшей пары.


Название: Re: Задачки
Отправлено: ufna от Июль 15, 2010, 00:52
все равно не понимаю. Минимальное количество переходов - три раза, минимум два раза кто-то вернется. Самый быстрый участник для пути назад - первый. Скорость определяется по более медленному. Если нет условия "а этот дорогу уже знает",то решения найти не могу.


Название: Re: Задачки
Отправлено: g10k от Июль 18, 2010, 11:09
1,2
1
5,10
2 (ведь он остался на той стороне после первого перехода)))))))))))
1,2
Итого 17


Название: Re: Задачки
Отправлено: Igors от Июль 21, 2010, 16:31
Геометрия

Есть точка P (x. y, z) лежащая на некоторой поверхности. Нормаль (перпендикуляр) к поверхности задана вектором N (x, y, z) длина этого вектора = 1. Есть лампочка в точке L (x. y, z)

Используя правило "угол падения = углу отражения" найти вектор R (x. y, z) - направление в котором точка P отразит свет


Название: Re: Задачки
Отправлено: m_ax от Июль 21, 2010, 17:39
Цитировать
еометрия

Есть точка P (x. y, z) лежащая на некоторой поверхности. Нормаль (перпендикуляр) к поверхности задана вектором N (x, y, z) длина этого вектора = 1. Есть лампочка в точке L (x. y, z)

Используя правило "угол падения = углу отражения" найти вектор R (x. y, z) - направление в котором точка P отразит свет

Ответ:
n1 = 2n(n,eA)-eA,
где
n1 - единичный вектор, указывающий направление отражения,
eA = (P-L)/|P-L|,
n - нормаль к поверхности

решается в несколько строчек)


Название: Re: Задачки
Отправлено: Igors от Июль 21, 2010, 18:19
Ответ:
n1 = 2n(n,eA)-eA,
где
n1 - единичный вектор, указывающий направление отражения,
eA = (P-L)/|P-L|,
n - нормаль к поверхности

решается в несколько строчек)
1) Ответ неправильный
2) 2n(n,eA) - поясните что это за ф-ция/оператор и логику рассуждений
3) Найти единичный вектор не просили, т.е. устроит и ненормированный
4) Решается в 1 строку


Название: Re: Задачки
Отправлено: m_ax от Июль 21, 2010, 18:23
1) Да ладно)
2) 2 умножить на вектор n умножить на скалярное произведение вектора n и eA минус единичный вектор eA

Жирным шрифтом обозначаются вектора.

Как решается напишу позже, когда погуляю с собачкой)


Название: Re: Задачки
Отправлено: Igors от Июль 21, 2010, 18:34
Как решается напишу позже, когда погуляю с собачкой)
Ну, помощь консультантов не запрещена  :)


Название: Re: Задачки
Отправлено: SimpleSunny от Июль 21, 2010, 21:19
Геометрия

Есть точка P (x. y, z) лежащая на некоторой поверхности. Нормаль (перпендикуляр) к поверхности задана вектором N (x, y, z) длина этого вектора = 1. Есть лампочка в точке L (x. y, z)

Используя правило "угол падения = углу отражения" найти вектор R (x. y, z) - направление в котором точка P отразит свет

Нам даны координаты точек L, P и координаты вектора N?


Название: Re: Задачки
Отправлено: Igors от Июль 21, 2010, 21:48
Нам даны координаты точек L, P и координаты вектора N?
Да, и вектор N нормирован (его длина = 1)


Название: Re: Задачки
Отправлено: SimpleSunny от Июль 21, 2010, 22:21
Странно, что неправильно, у меня получилась такая же формула :)

R = L + 2*k*N
L = (xp-xl; yp - yl; zp - zl)
k = N*(-L) (скалярное произведение)


Название: Re: Задачки
Отправлено: m_ax от Июль 21, 2010, 22:24
Я вернулся)
Цитировать
Ну, помощь консультантов не запрещена

Океюшки)

И так:
1) все вектора обозначаются жирным шрифтом; абсолютная величина вектора-обычным шрифтом.
2) для удобства введём вектор A=L-P и соответствующий ему единичный вектор eA=(L-P)/|L-P|
3) векторное произведение будем обозначать как: [a,b] (a и b какие-либо два вектора)
4) скалярное произведение будем обозначать как: (a,b)
5) напомню правило "бац минус цаб" для двойного векторного произведения:
[a[b,c]]=b*(a,c)-c*(a,b)
6) nr - единичный вектор указывающий направление отражённого света

Далее буду расписывать всё оч подробно, поэтому получится оч длинно)

1) |[n,A]| = A*sin(phi), где phi - угол между вектором A и вектором n
2) [n,A] - вектор коллинеарен вектору [nr,A], в силу закона отражения) (на самом деле, угол отражения, вовсе не равен углу падения - эт приближение геометрической оптики, ну да фиг с этим)

3) |[nr,A]| = A*sin(2*phi) = 2*A*sin(phi)*cos(phi)  (в силу закона отражения)

4) следовательно должно выполняться:
[n,A]*2*cos(phi) = [nr, A];
5) заметим, что cos(phi) = (n,eA)
6) умножим векторно левую и правую части ур. 4. на вектор n:
[n[n,A]]*2*cos(phi) = [n[nr,A]]
7) воспользуемся правилом "бац минус цаб":
{n*(n,A)-A*(n,n)}*2*cos(phi) = nr*(n,A)-A*(n,nr)
8) очевидно что: (n,n) = 1;  (n, nr) = cos(phi)
9) следовательно получаем:
n*(n,A)*2*cos(phi) - 2*A*cos(phi) = nr*(n,A)-A*cos(phi)
10) поскольку (n,A) = A*cos(phi); cos(phi) = (n,A)/A
11) подставим выражение для cos (10) в (9):
nr = 2*n*(n,A)/A - A/A
12) вспоминая, что такое eA получаем окончательный ответ:
nr = 2*n*(n,eA) - eA

Вы ещё не согласны? /*тогда мы идём к Вам))*/

 


Название: Re: Задачки
Отправлено: Igors от Июль 22, 2010, 02:28
Странно, что неправильно, у меня получилась такая же формула :)

R = L + 2*k*N
L = (xp-xl; yp - yl; zp - zl)
k = N*(-L) (скалярное произведение)
У Вас правильно получилось. Смотрим чертеж (attachment). Оба вектора: P - L (свет, красный) и R (отраженный, синий) можно представить как сумму 2 векторов: вертикальный (проекция на нормаль N) и горизонтальный. Видно что горизонтальная компонента одна и та же, а вертикальные противоположны. Поэтому

R = (P - L) - vert * 2;

Направление вертикальной компоненты известно (это N) а длина ее = скалярному произведению, значит vert = N * dotProduct(P - L, N), итого имеем

R = (P - L) - N * dotProduct(P - L, N) * 2

Обычно все вектора исходят из точки P (которая шейдится). Если нарисовать вектор из P в L. то получилась бы наоборот: вертикальные компоненты равны, а горизонтальные противоположны. Тогда бы вышло

R = N * dotProduct(L - P, N) * 2 - (L - P)

Это то же самое что привел m_ax, но он поначалу ошибся в направлении вектора. После (плодотворной) прогулки с собачкой ошибка была исправлена, хотя 12 пунктов совсем не нужны там где можно обойтись теоремой Пифагора  :)


Название: Re: Задачки
Отправлено: m_ax от Июль 22, 2010, 12:16
Цитировать
После (плодотворной) прогулки с собачкой ошибка была исправлена, хотя 12 пунктов совсем не нужны там где можно обойтись теоремой Пифагора 

)) Однако, как показывает опыт, далеко не все задачки можно решить с помощью "теоремы Пифагора")

Кстати, вот вспомнилась одна задачка, которую можно решить двумя способами: по "теореме Пифагора" и чуть более сложным образом)

Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.

Вопрос: Через какое время t они встретятся?

   


Название: Re: Задачки
Отправлено: Ubuntu_linux от Август 20, 2010, 22:29
 :-*
Тест Бенета вновь выходит на арену в обновленном виде, теперь чтобы пройти тест нужно лишь скачать архив с программой (5,17 МБ) для виндовс и после распаковки можно сразу же запускать тест и проходить его.

Наслаждайтесь!

Скачать! (http://madeinlinux.ru.gg/Test-Beneta.htm)

(http://s50.radikal.ru/i128/1008/f6/12b72caa77fa.jpg) (http://madeinlinux.ru.gg/Test-Beneta.htm)


Программа бесплатная и с открытым кодом, то есть каждый может пересмотреть как написана программа!

(http://s54.radikal.ru/i145/1008/dc/e4de4bfd6f1b.jpg) (http://madeinlinux.ru.gg/Test-Beneta.htm)


Название: Re: Задачки
Отправлено: m_ax от Октябрь 03, 2010, 00:40
Как то у нас проходила неделя французского кино и меня вытащили на один из фильмов, названия не помню, но запомнилась одна игра)
Суть игры следующая:
Играют двое.
Имеется 4 ряда (пусть будет спичек, хотя не важно чего, но в фильме это были спички), причём в первом ряду одна спичка, во втором 3 спички, в третьем 5 спичек и в четвёртом 7 спичек (типа пирамидка).
Каждый игрок за один ход может взять любое число спичек, но только с одного ряда. Затем ходит второй и тож может взять любое число спичек но только с одного какого-либо ряда. Проигрывает тот, кто забирает последнюю спичку.

Хочу написать маленькую програмку, и пока в основной проге проходят расчёты (считает долго) позабавить тем самым пользователя))

Подскажите как енто лучше сделать))       


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 03, 2010, 17:17
№5. Дана прямая, каждая точка которой имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно случайная. Существует ли всегда на такой прямой отрезок, концы и середину которого составляют точки одного цвета?

Более обобщенное решение.
Данное решение действительно для любого отрезка, точки которого раскрашены в два цвета любым способом.
Дан отрезок, каждая точка которого имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно любая. Всегда существует на таком отрезке подотрезок, концы и середину которого составляют точки одного цвета?

1) Лемма. Если имеем две пары точек одного цвета и расстояния между точками в обоих парах равны, то точка находящаяся посередине между двумя крайними принадлежащими данным парам имеет тот же цвет.
то на отрезке образуемом двумя крайними принадлежащими данным парам точками, существует  подотрезок, концы и середину которого составляют точки одного цвета.

Док-во.
Кодировка: "0" черная, "1" белая, "." неизвестная, "-" отрезок длины L1, "*" отрезок длины L2
На примере двух черных пар имеем по условию:
0-.-0*.*0-.-0
Если поставим 0 вместо хотя бы одной ".", то получим искомый отрезок.
В обратном случае если ставим везде "1"
0-1-0*1*0-1-0
тоже получим искомый отрезок.
Лемма доказана.

2) Основное док-во. Возьмем любой отрезок принадлежащий исходному и разобьем его на 14 равных частей. Закодируем последовательность полученных разбиением точек "0" черная, "1" белая. Разделим нашу последовательность на 3-ки. Получим всего 5 троек.
Всего существует 8 различных возможных троек.

  a) Если встретилась одна из  "000" "111", случай тривиален.

  b) Для остальных. Достаточно 5 троек чтобы был верен один из следующих пунктов:
- Если встретилась "001" или "100" более 1 раза, поскольку имеем две пары белых точек удовлетворяющих лемме, то теорема доказана.
- Если встретилась "110" или "011" более 1 раза, поскольку имеем две пары черных точек удовлетворяющих лемме, то теорема доказана.
- Если встретилась "010" более 1 раза, поскольку имеем две пары белых точек удовлетворяющих лемме, то теорема доказана.
- Если встретилась "101" более 1 раза, поскольку имеем две пары черных точек удовлетворяющих лемме, то теорема доказана.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 03, 2010, 17:51
Модефицированная задача №5
Дан отрезок, каждая точка которого имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно любая.
Верно ли, что на данном отрезке всегда существует последовательность из N различных точек одного цвета, при этом расстояния между последовательными точками равны?


Название: Re: Задачки
Отправлено: Igors от Октябрь 04, 2010, 16:43
Ну блин и задачки пошли заумные  :) На мой взгляд доказательство чего-то "на бесконечной прямой" имеет мало смысла для инженера-практика. Вот широко известная - но весьма полезная задачка:

В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?


Название: Re: Задачки
Отправлено: SimpleSunny от Октябрь 04, 2010, 17:07
Эта уж слишком известная (=


Название: Re: Задачки
Отправлено: Igors от Октябрь 04, 2010, 17:56
Эта уж слишком известная (=
Зато полезная  :) Пример: нужно "самплить" текстуру чтобы получить гладкий результат. Всего есть (предположим) 19x19 точек. Осреднить все 19 * 19 = 361 накладно. Сколько точек надо выбрать (случайно) чтобы получить приемлемый результат? Вряд ли кто-то ответит - дело свалится в предметную область - и в конце концов заглохнет. А ведь задача та же самая (и даже числа те же). Ну и вообще:

Цитировать
- у меня проездной..
- предъявляем!
Обоснованный ответ и расчеты please  :)


Название: Re: Задачки
Отправлено: ecspertiza от Октябрь 05, 2010, 08:23
В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?

У меня получилось 0,0024 не знаю правильно ли посчитал, год считал не високосным.


Название: Re: Задачки
Отправлено: Igors от Октябрь 05, 2010, 10:02
В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?

У меня получилось 0,0024 не знаю правильно ли посчитал, год считал не високосным.
Ой, это очень далеко от правильного  :)


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 05, 2010, 12:22
Ну блин и задачки пошли заумные  :) На мой взгляд доказательство чего-то "на бесконечной прямой" имеет мало смысла для инженера-практика. Вот широко известная - но весьма полезная задачка:

В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?

~0.7


Название: Re: Задачки
Отправлено: m_ax от Октябрь 05, 2010, 15:49
Если быть точным:

p=1-N!/((N-n)!Nn),

где N - число дней в году, n - число человек в группе.

Если N велико, можно использовать формулу Стирлинга, ну а далее  дело техническое)  

приближённо получается:

p≈1-(N/(N-n))N-n+1/2exp(-n)


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 07, 2010, 00:58
Вы все забыли, что когда стоит слово хотя бы, то это два и более. Поэтому тут нужно рассмотреть обратное событие.

Вероятность того, что все родились в разные дни  = 30!/30^30. Обратное событие, т.е. в один день родилось два и более это 1- 30!/30^30  :)


Теперь предлагаю задачу, определить вероятность, что n человек из N  родилось в один день! (без хотя бы)!



Название: Re: Задачки
Отправлено: spectre71 от Октябрь 07, 2010, 10:28
Вероятность того, что все родились в разные дни  = 30!/30^30. Обратное событие, т.е. в один день родилось два и более это 1- 30!/30^30  :)

Не правильно! Правильно у m_ax


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 07, 2010, 11:09
Вероятность того, что все родились в разные дни  = 30!/30^30. Обратное событие, т.е. в один день родилось два и более это 1- 30!/30^30  :)

Не правильно! Правильно у m_ax


1) Все из 30-ти людей могут родится в один день, могут родится в разные дни. Каждый день из тридцати дней может себе выбрать одного человека, или двух  или всех. Используя принцип умножения комбинаторики имеем всего 30^30 степени вариантов рождения, что составляет полную группу событий.

2) То, что все родились в разные дни есть количество всех возможных перестановок без повторений из 30 дней. Количество перестановок - 30!, что составляет подмножество полной группы.

3) Вероятность, что все родились в разные дни, при условии равновероятных исходов это геометрическая вероятность = 30!/30^30

4) Если все не родились в разные дни, то есть люди которые родились в один день - искомое обратное событие с вероятностью 1- 30!/30^30.

Что не правильно? Могу смоделировать в маткаде! Когда говорите, что неправильно, вы должны обосновать. Я свой ответ обосновал.

Вероятно m_ax имел ввиду не  p=1-N!/((N-n)!Nn), а  p=1-N!/((N-n)!N^n), тогда подставляя переменные  p=1-30!/((30-30)!30^30) = 1-30!/0!30^30 = 1-30!/30^30


Название: Re: Задачки
Отправлено: ufna от Октябрь 07, 2010, 11:48
я не понял почему вдруг привязались к 30 дням? у нас дней условно 365. И в каждый день - от 0 до 30 родившихся, при этом сумма всех родившихся - равна 30ти, поэтому тут даже если рассматривать 30 дней 30^30 - не полное множество событий.


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 07, 2010, 12:28
Затупил, искренне верил, что в году 30 дней, а это 30 дней в месяце  ::). Но смысл то же. Каждый день из 365 дней может выбрать себе 30 людей, т.е для каждого из 365 дней 30 вариантов выбора. Всего исходя из принципа умножения в комбинаторике это 30^365 варинтов... Родились все в разные дни  - это количество перестановок без повторений по 30 из множества 365. Тогда, p = 1 - 365!/(365-30)!30^365


Название: Re: Задачки
Отправлено: ufna от Октябрь 07, 2010, 13:33
Затупил, искренне верил, что в году 30 дней, а это 30 дней в месяце  ::). Но смысл то же. Каждый день из 365 дней может выбрать себе 30 людей, т.е для каждого из 365 дней 30 вариантов выбора. Всего исходя из принципа умножения в комбинаторике это 30^365 варинтов... Родились все в разные дни  - это количество перестановок без повторений по 30 из множества 365. Тогда, p = 1 - 365!/(365-30)!30^365

Бывает :) это и есть вариант, предложенный m_ax - и со степенью там все впорядке, там N^n :)


Название: Re: Задачки
Отправлено: Igors от Октябрь 07, 2010, 18:11
Ну вариант m_ax конечно безупречен, но есть одно "но" - никакой мотивировки не дано. А почему так получается? Откуда? Может быть научный работник просто это запомнил? (они часто обладают чудесной памятью). А что он будет делать если решение неизвестно? Поэтому подход Alex_cs_gsp (дойти до всего самому, пусть часто ошибаясь) мне нравится больше.  А Spectre в данном случае вообще "уклонился от боя" - ну это его право  :)


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 07, 2010, 18:20
А Spectre в данном случае вообще "уклонился от боя" - ну это его право  :)

Я не уклонялся :)
Просто вопрос был какова вероятность, а не как посчитать. Вот я и посчитал ~0.7.


Название: Re: Задачки
Отправлено: m_ax от Октябрь 07, 2010, 18:27
Igors, по моему вы преувеличиваете)
На мой взгляд, эта задача не того уровня, чтобы ещё нуждалась в разжёвывании её решения)

Кстати, могу рассказать, как решается задачка с букашками, если кому интересно)


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 07, 2010, 19:01
Igors, по моему вы преувеличиваете)
На мой взгляд, эта задача не того уровня, чтобы ещё нуждалась в разжёвывании её решения)

Кстати, могу рассказать, как решается задачка с букашками, если кому интересно)

Какая задача с букашками? В предыдущих постах не увидел, там только про собачку, если можно ссылку дайте.  

Точное решение можно выразить дробью
Код:
351455631309707073043744972686848750723160961064086762010703171213048105662255026906510798556887447542539649887090144875337413942575351613402255671122731351820024386342763900756835937499999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999945889892706944717492165003482995118563395561735184198827
/
351455631309707073043744972686848750723160961064086762010703171213048105662255026906510798556887447542539649887090144875337413942575351613402255671122731351820024386342763900756835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

 ;D

    P.S. Кстати, не всегда такие задачи элементарные как кажутся, если использовать комбинаторику, и геом. определение вероятности.  В свое время увлекся и перерешал около полусотни задач только на эту тему, так вот в каждой 8 задачи в ответах задачника была ошибка, чаще всего из-за того, что автор тупил и вместо перестановок использовал сочетания или наоборот. Если у меня вызывали сомнения ответы, то решение достаточно легко проверить смоделировав задачу, используя генератор равномерных с.в.
   И еще один +, когда используешь комбинаторику - для каждой задачи нужно сообразить, из чего состоит множество благоприятных исходов, а это очень хорошо тренирует мозги (и сон, если сообразить не получается).


Название: Re: Задачки
Отправлено: Igors от Октябрь 07, 2010, 19:46
Спасибо всем за ответы

Я не уклонялся :)
Просто вопрос был какова вероятность, а не как посчитать. Вот я и посчитал ~0.7.
Да знаю что Вы знаете  :) Просто (полагаю) техника расчета может быть интересна для других

Igors, по моему вы преувеличиваете)
На мой взгляд, эта задача не того уровня, чтобы ещё нуждалась в разжёвывании её решения)
Хмм... поверьте я никого не хочу обидеть, и я вижу что у Вас образование не чета моему (лампы и транзисторы). Но все же если бы Вы популярно пояснили - было бы только лучше  :)
 
Кстати, могу рассказать, как решается задачка с букашками, если кому интересно)
Я делал эту задачу раза 3 (а может и больше), но никогда не задумывался "отчего и почему". По-нашему это эффект "twirl" (типа "водоворот", "закручивание"). Часто используется как в 2D так и в 3D. Ну запрягаю рекурсивно - и все дела. А как оно получается - ну наверное какой-то интеграл есть - не знаю  :)

Вообще мне кажется "задачки" заслуживает отдельного раздела (а не просто нитки). А то темы наползают друг на друга - нехорошо. Уважаемые модераторы, можно ли решить этот вопрос?


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 07, 2010, 21:08
Вот так и пишут книги и учебники, мол это и так ясно объяснять не нужно. А потом такие предметы хороши для топки в зимний период. Вы объясните, а потом каждый сам для себя решит, нужно ему это объяснение или нет. А ответ 0.7 с такой точностью, полагаю можно, получить не решая аналитически задачу вовсе.


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 00:13
Цитировать
Вот так и пишут книги и учебники, мол это и так ясно объяснять не нужно. А потом такие предметы хороши для топки в зимний период. Вы объясните, а потом каждый сам для себя решит, нужно ему это объяснение или нет. А ответ 0.7 с такой точностью, полагаю можно, получить не решая аналитически задачу вовсе.
Чудненько) А теперь скажите пожалуйста, сколько Вам надо сделать на своём маткаде численных экспериментов, чтобы получить ответ с точностью плюс-минус 10% ?
А если в задаче есть туева хуча параметров, что Вы для каждой конфигурации оных будете всё это каждый раз моделировать?
И на последок, скажите сколько в группе должно быть человек, чтобы вероятность того, чтобы хотя бы у двоих день рождения совпал в один день равнялась 0.5 с точностью плюс-минус 5 человек? (Используя Ваш маткад)

Да, Alex_cs_gsp вот условие задачки о букашках:

Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.

Вопрос: Через какое время t они встретятся?

Задача решается в одну строчку без всяких интегралов и т.д. Это олимпиадная задачка для школьников.
Хотя когда я в первый раз её решил (совсем не школьным методом) мне стало стыдно, что до простого до безобразия решения, я не догнал))


Цитировать
Хмм... поверьте я никого не хочу обидеть, и я вижу что у Вас образование не чета моему (лампы и транзисторы). Но все же если бы Вы популярно пояснили - было бы только лучше  
Да не, я на самом деле всецело солидарен с Вами в том плане, что гораздо ценнее получить ответ самому, пусть даже не самым красивым образом.. В конце-концов все красивые теории - это есть законченный, отточенный результат, на самом деле не всегда таковых изначально. Это уже нам преподносят как нечто красивое и гармоничное, хотя если посмотреть исторически то: мама не горюй))

  


  


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 07:33
Чудненько) А теперь скажите пожалуйста, сколько Вам надо сделать на своём маткаде численных экспериментов, чтобы получить ответ с точностью плюс-минус 10% ?

    Несколько миллиардов экспериментов абсолютно не проблема. Благо генераторы р.с.в очень быстрые, а определение исхода благоприятный или нет - всего-лишь проверка булевого условия - "подходит или нет".
    Во-вторых я бы с вами согласился, если бы в данном примере вероятность была не 0,7 , а 0,001, и не выражалась бы простым образом через обратное событие, тогда действительно нужно много экспериментов. А так, грубо говоря, каждый второй эксперимент будет благоприятным элементарным исходом для такой большой вероятности.
    В-третьих любую такую задачу практически всегда можно привести к эквивалентной меньшей размерности, например, вер. того, что 7 человек родились в один день недели, и т.п., для проверки решения это вполне подходит. Кстати, можете в интернете посмотреть решения задачи Бюффона, там у экспериментаторов количество экспериментов всего несколько тысяч.
    Если вам интересно могу потратить время сделать эксперимент., но это завтра, у меня сейчас много работы.


Название: Re: Задачки
Отправлено: Sancho_s_rancho от Октябрь 08, 2010, 08:47
Как то у нас проходила неделя французского кино и меня вытащили на один из фильмов, названия не помню, но запомнилась одна игра)
Суть игры следующая:
Играют двое.
Имеется 4 ряда (пусть будет спичек, хотя не важно чего, но в фильме это были спички), причём в первом ряду одна спичка, во втором 3 спички, в третьем 5 спичек и в четвёртом 7 спичек (типа пирамидка).
Каждый игрок за один ход может взять любое число спичек, но только с одного ряда. Затем ходит второй и тож может взять любое число спичек но только с одного какого-либо ряда. Проигрывает тот, кто забирает последнюю спичку.

Хочу написать маленькую програмку, и пока в основной проге проходят расчёты (считает долго) позабавить тем самым пользователя))

Подскажите как енто лучше сделать))      
Это Разновидность игры Nim. Мат. решение найдено где-то 70 лет назад.
Напишу код - покажу.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 11:20
Да, Alex_cs_gsp вот условие задачки о букашках:

Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.

Вопрос: Через какое время t они встретятся?

t=(2*a)/(3*v)
====

Вот совсем простейшая задачка:
В классе тридцать пять человек. Каждый из них дружит ровно с одиннадцатью одноклассниками. Возможно ли это? И почему?


Название: Re: Задачки
Отправлено: Sancho_s_rancho от Октябрь 08, 2010, 11:46


t=(2*a)/(3*v)
====

Вот совсем простейшая задачка:
В классе тридцать пять человек. Каждый из них дружит ровно с одиннадцатью одноклассниками. Возможно ли это? И почему?
Конечно возможно. Нормальный человек может вступать в отношения со всеми остальными, т.е. каждый может дружить с кол-вом людей от 0 до 34 включительно. Ненормальный может еще это делать сам с собой, т.е. от 0 до 35 включительно. Может вы какие-то условия забыли добавить?
пи.си. надо понимать, что если я дружу с ним, то это еще не значит что он дружит со мной. С этим утверждением согласен язык С++ и ключевое слово friend


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 12:22
Конечно возможно. Нормальный человек может вступать в отношения со всеми остальными, т.е. каждый может дружить с кол-вом людей от 0 до 34 включительно. Ненормальный может еще это делать сам с собой, т.е. от 0 до 35 включительно. Может вы какие-то условия забыли добавить?
пи.си. надо понимать, что если я дружу с ним, то это еще не значит что он дружит со мной. С этим утверждением согласен язык С++ и ключевое слово friend

Это олимпиадная задача для пятого класса, очень низкой сложности. Все условия четко определены.
P.S. Странная у вас дружба. Вы дружите с человеком, а он свами нет. :)


Название: Re: Задачки
Отправлено: Igors от Октябрь 08, 2010, 13:16
Да, Alex_cs_gsp вот условие задачки о букашках:

Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.

Вопрос: Через какое время t они встретятся?

t=(2*a)/(3*v)
Не думаю что это правильно. Соображения: каждая букашка описывает дугу которые все встретятся в центре треугольника. С большей скоростью дуги получаются короче, поэтому зависимость от скорости должна быть нелинейной.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 13:30
Да, Alex_cs_gsp вот условие задачки о букашках:

Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.

Вопрос: Через какое время t они встретятся?

t=(2*a)/(3*v)
Не думаю что это правильно. Соображения: каждая букашка описывает дугу которые все встретятся в центре треугольника. С большей скоростью дуги получаются короче, поэтому зависимость от скорости должна быть нелинейной.

Линейной. И дуги(траектории) не зависят от скорости, от скорости зависит только время.

- Все встречаются в центре треугольника
- Скорость движения букашки к центру треугольника постоянна


Название: Re: Задачки
Отправлено: Igors от Октябрь 08, 2010, 13:45
Вот совсем простейшая задачка:
В классе тридцать пять человек. Каждый из них дружит ровно с одиннадцатью одноклассниками. Возможно ли это? И почему?
Нет, невозможно. Общее число друзей 11 * 35 = 385, а должно быть четным, т.к в него входят оба (A дружит с Б)(Б дружит с А)


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 13:55
Вот совсем простейшая задачка:
В классе тридцать пять человек. Каждый из них дружит ровно с одиннадцатью одноклассниками. Возможно ли это? И почему?
Нет, невозможно. Общее число друзей 11 * 35 = 385, а должно быть четным, т.к в него входят оба (A дружит с Б)(Б дружит с А)

Правильно.
Только небольшое уточннение в формулировке - не общее число друзей, а общее число пар друзей.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 15:17
Еще задачка. Немного посложнее.

Имеется 8 монет, 7 из которых – настоящие, которые весят одинаково, и одна фальшивая, отличающаяся по весу от остальных. Чашечные весы без гирь таковы, что если положить на их чашки равные грузы, то любая из чашек может перевесить, если же грузы различны по массе, то обязательно перетягивает чашка с более тяжелым грузом. Как за четыре взвешивания наверняка определить фальшивую монету и установить, легче она или тяжелее остальных?


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 15:22
Цитировать
t=(2*a)/(3*v)
Это правильно) Дело в том, что из симметрии задачи ясно, что все они встретятся в центре. Причём если посмотреть на всю эту картину через какое либо время, то мы тож увидим треугольник, в вершинах которого нах. букашки, только он теперь меньше будет. Скорости букашек всегда при этом будут направлены вдоль сторон треугольника, а поскольку модуль скорости постоянен, то будет сохранятся проекция скорости на прямую от вершины к центру треугольника. Поэтому всё сводится к нахождению проекции скорости на направление от вершины к центру и первоначальной длины от вершины до центра равностороннего треугольника.


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 15:28
Еще задачка. Немного посложнее.

Имеется 8 монет, 7 из которых – настоящие, которые весят одинаково, и одна фальшивая, отличающаяся по весу от остальных. Чашечные весы без гирь таковы, что если положить на их чашки равные грузы, то любая из чашек может перевесить, если же грузы различны по массе, то обязательно перетягивает чашка с более тяжелым грузом. Как за четыре взвешивания наверняка определить фальшивую монету и установить, легче она или тяжелее остальных?

Эта задача решается за три взвешивания))


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 15:29
Как то у нас проходила неделя французского кино и меня вытащили на один из фильмов, названия не помню, но запомнилась одна игра)
Суть игры следующая:
Играют двое.
Имеется 4 ряда (пусть будет спичек, хотя не важно чего, но в фильме это были спички), причём в первом ряду одна спичка, во втором 3 спички, в третьем 5 спичек и в четвёртом 7 спичек (типа пирамидка).
Каждый игрок за один ход может взять любое число спичек, но только с одного ряда. Затем ходит второй и тож может взять любое число спичек но только с одного какого-либо ряда. Проигрывает тот, кто забирает последнюю спичку.

Хочу написать маленькую програмку, и пока в основной проге проходят расчёты (считает долго) позабавить тем самым пользователя))

Подскажите как енто лучше сделать))      
Это Разновидность игры Nim. Мат. решение найдено где-то 70 лет назад.
Напишу код - покажу.

Спасибо)


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 15:34
Чудненько) А теперь скажите пожалуйста, сколько Вам надо сделать на своём маткаде численных экспериментов, чтобы получить ответ с точностью плюс-минус 10% ?

    Несколько миллиардов экспериментов абсолютно не проблема. Благо генераторы р.с.в очень быстрые, а определение исхода благоприятный или нет - всего-лишь проверка булевого условия - "подходит или нет".
    Во-вторых я бы с вами согласился, если бы в данном примере вероятность была не 0,7 , а 0,001, и не выражалась бы простым образом через обратное событие, тогда действительно нужно много экспериментов. А так, грубо говоря, каждый второй эксперимент будет благоприятным элементарным исходом для такой большой вероятности.
    В-третьих любую такую задачу практически всегда можно привести к эквивалентной меньшей размерности, например, вер. того, что 7 человек родились в один день недели, и т.п., для проверки решения это вполне подходит. Кстати, можете в интернете посмотреть решения задачи Бюффона, там у экспериментаторов количество экспериментов всего несколько тысяч.
    Если вам интересно могу потратить время сделать эксперимент., но это завтра, у меня сейчас много работы.

То что Вы в состоянии сделать этот эксперимент у меня сомнений не вызывает)
Я хотел сказать, что там где можно получить решение аналитически, то проделывать тоже самое числено это абсурдно мягко говоря. При численом решениии Вы имеете только число, точность которого нужно ещё установить (особенно если речь идёт о Монте-Карло методах). 


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 15:36
Еще задачка. Немного посложнее.

Имеется 8 монет, 7 из которых – настоящие, которые весят одинаково, и одна фальшивая, отличающаяся по весу от остальных. Чашечные весы без гирь таковы, что если положить на их чашки равные грузы, то любая из чашек может перевесить, если же грузы различны по массе, то обязательно перетягивает чашка с более тяжелым грузом. Как за четыре взвешивания наверняка определить фальшивую монету и установить, легче она или тяжелее остальных?

Эта задача решается за три взвешивания))

Очень внимательно прочитай условие задачи.
И если ты все еще уверен что сможешь это сделать за 3 взвешивания, то напиши решение! :)



Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 15:52
Еще задачка. Немного посложнее.

Имеется 8 монет, 7 из которых – настоящие, которые весят одинаково, и одна фальшивая, отличающаяся по весу от остальных. Чашечные весы без гирь таковы, что если положить на их чашки равные грузы, то любая из чашек может перевесить, если же грузы различны по массе, то обязательно перетягивает чашка с более тяжелым грузом. Как за четыре взвешивания наверняка определить фальшивую монету и установить, легче она или тяжелее остальных?

Эта задача решается за три взвешивания))

Очень внимательно прочитай условие задачи.
И если ты все еще уверен что сможешь это сделать за 3 взвешивания, то напиши решение! :)


Ещё раз очень внимательно прочитал условие задачи)

Короче решение:

1 шаг: Вначале делим все 8 монет на три (3) кучки: в первой 2 монеты, в остальных двух по 3 монеты.
2 шаг: откладываем в сторону кучку с двумя монетами и взвешиваем 1-ое взвешивание две кучки в каждой из которых по три монеты.
Предположим они не уравновесились (иначе всё слишком просто) Следовательно те две монетки - оригиналы.
3 шаг: (Самый интересный)  Из той кучки которая перевесила (вообще значения не имеет, но ради определённости пускай будет так) меняем одну монету(пускай будет нижняя) на оригинал и далее меняем местами монету верхнюю с верхней монетой из кучки что оказалась легче. Т.е. переставляем местами верхние монеты со взвешиваемых кучек.
Взвешиваем 2-ое взвешивание. Если всё осталось также, то либо фальшивая монета тяжелее всех остальных и она нах. в той кучке что перевесила между самой нижней и самой верхней монетой, либо фальшивая монета легче всех остальных и она нах. в другой кучке - либо самая нижняя либо по-серединке.

Дальше объяснять надо?   


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 15:58
Цитировать
t=(2*a)/(3*v)
Это правильно) Дело в том, что из симметрии задачи ясно, что все они встретятся в центре. Причём если посмотреть на всю эту картину через какое либо время, то мы тож увидим треугольник, в вершинах которого нах. букашки, только он теперь меньше будет. Скорости букашек всегда при этом будут направлены вдоль сторон треугольника, а поскольку модуль скорости постоянен, то будет сохранятся проекция скорости на прямую от вершины к центру треугольника. Поэтому всё сводится к нахождению проекции скорости на направление от вершины к центру и первоначальной длины от вершины до центра равностороннего треугольника.

И самое интересное, что дуги(траектории) идентичны при любой скорости(зависят только от расстояния). Это тоже легко доказывается.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 16:10
2 шаг: откладываем в сторону кучку с двумя монетами и взвешиваем 1-ое взвешивание две кучки в каждой из которых по три монеты.
Предположим они не уравновесились (иначе всё слишком просто) Следовательно те две монетки - оригиналы.

Плохо прочитал условие.
Из условия весы "кривые" никогда не уравновешиваются! Но что точно известно они всегда показывают правильный балланс если массы разные!

Так что не верно.


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 17:41
1) На первом взвешивинии на каждой тарелке по 4-ре монеты, и местами меняем четыре монеты (две с одной тар. на другую и две со второй на первую). Тогда задача сведется к поиску из 4-х монет за три взвешивания, т.к. если фальшивая монета участвовала в миграции, то чаши изменят положение, если не участвовала, то сразу вытащим 4 правильных монеты.
2) На второе взвешивание поступает по две монеты на чашу, меняем местами по одной и либо извлекаем фальшивую и настоящую либо фальшивая и настоящая остаются.
3) На третьем взвешивании остается одна фальшива и одна настоящая монета и известных шесть годных монет. Теперь на одну чашу кладем 4-ре годных монеты, а на вторую две годные монеты и две, которые мы пытаемся классифицировать. Теперь перекладываем одну неизвестную монету на вторую чашу, а оттуда одну годную монету на первую чашу. Если нех. не поменялось, значит искомая монета, которая не участвовала в миграции, иначе значит, которая участвовала. Смотрим на чашу и говорим, кто кого тяжелее.

Вместо монет удобно использовать яблоки и груши. Яблоки - годные монеты, груши негодные. Когда неизвестно какая монета - фрукт завернут в бумагу. И за задачи не попал на тренировку, ........( :o модерируемое мнение).


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 19:05
1) На первом взвешивинии на каждой тарелке по 4-ре монеты, и местами меняем четыре монеты (две с одной тар. на другую и две со второй на первую). Тогда задача сведется к поиску из 4-х монет за три взвешивания, т.к. если фальшивая монета участвовала в миграции, то чаши изменят положение, если не участвовала, то сразу вытащим 4 правильных монеты.
2) На второе взвешивание поступает по две монеты на чашу, меняем местами по одной и либо извлекаем фальшивую или настоящую либо фальшивая и настоящая остаются.
3) На третьем взвешивании остается одна фальшива и одна настоящая монета и известных шесть годных монет. Теперь на одну чашу кладем 4-ре годных монеты, а на вторую две годные монеты и две, которые мы пытаемся классифицировать. Теперь перекладываем одну неизвестную монету на вторую чашу, а оттуда одну годную монету на первую чашу. Если нех. не поменялось, значит искомая монета, которая не участвовала в миграции, иначе значит, которая участвовала. Смотрим на чашу и говорим, кто кого тяжелее.

Вместо монет удобно использовать яблоки и груши. Яблоки - годные монеты, груши негодные. Когда неизвестно какая монета - фрукт завернут в бумагу. И за задачи не попал на тренировку, ........( :o модерируемое мнение).

Ошибка. В пункте (1) два взвешивания. Если б ты знал на сколько ты близок...  :)


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 19:07
Ошибка. В пункте (1) два взвешивания. Если б ты знал на сколько ты близок...  :)

 :o Почему? На первом шаге исключаем четыре монеты сразу за одно взвешивание?


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 19:16
Чудненько) А теперь скажите пожалуйста, сколько Вам надо сделать на своём маткаде численных экспериментов, чтобы получить ответ с точностью плюс-минус 10% ?

    Несколько миллиардов экспериментов абсолютно не проблема. Благо генераторы р.с.в очень быстрые, а определение исхода благоприятный или нет - всего-лишь проверка булевого условия - "подходит или нет".
    Во-вторых я бы с вами согласился, если бы в данном примере вероятность была не 0,7 , а 0,001, и не выражалась бы простым образом через обратное событие, тогда действительно нужно много экспериментов. А так, грубо говоря, каждый второй эксперимент будет благоприятным элементарным исходом для такой большой вероятности.
    В-третьих любую такую задачу практически всегда можно привести к эквивалентной меньшей размерности, например, вер. того, что 7 человек родились в один день недели, и т.п., для проверки решения это вполне подходит. Кстати, можете в интернете посмотреть решения задачи Бюффона, там у экспериментаторов количество экспериментов всего несколько тысяч.
    Если вам интересно могу потратить время сделать эксперимент., но это завтра, у меня сейчас много работы.

То что Вы в состоянии сделать этот эксперимент у меня сомнений не вызывает)
Я хотел сказать, что там где можно получить решение аналитически, то проделывать тоже самое числено это абсурдно мягко говоря. При численом решениии Вы имеете только число, точность которого нужно ещё установить (особенно если речь идёт о Монте-Карло методах). 

Так что мне делать или нет, мне просто реально время жалко, а тут еще эти монеты вечер подпортили?


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 19:28
Ошибка. В пункте (1) два взвешивания. Если б ты знал на сколько ты близок...  :)

 :o Почему? На первом шаге исключаем четыре монеты сразу за одно взвешивание?

Смотрим:

1) На первом взвешивинии на каждой тарелке по 4-ре монеты, И местами меняем четыре монеты (две с одной тар. на другую и две со второй на первую).

Как на одном взвешивании может быть "И":
Взвешали + поменяли местами!



Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 19:37
Цитировать
Так что мне делать или нет, мне просто реально время жалко, а тут еще эти монеты вечер подпортили?
Если со временем туго, то не стоит.
Просто было бы интересно то, сколько Вам нужно сделать таких численных экспериментов, чтобы получить ответ с заданной точностью. И как эта точность будет зависеть от числа экспериментов. Т.е. нужно построить распределение и его ширина фактически даст Вам меру ошибки. Если оно имеет узкий пик то метод оправдан, если достаточно размыто то чёрт его знает))
Короче если Вам интересно и будет свободное время лучше постройте график, как результаты будут распределены (отклонение от среднего). Это будет гораздо информативнее)    


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 19:38
Ошибка. В пункте (1) два взвешивания. Если б ты знал на сколько ты близок...  :)

 :o Почему? На первом шаге исключаем четыре монеты сразу за одно взвешивание?

Смотрим:

1) На первом взвешивинии на каждой тарелке по 4-ре монеты, И местами меняем четыре монеты (две с одной тар. на другую и две со второй на первую).

Как на одном взвешивании может быть "И":
Взвешали + поменяли местами!




    Снимаешь две монеты с одной тарелки и две с другой (одновременно) - левой рукой берешь две монеты с левой тарельки и, а правой рукой с правой. Потом монеты из правой руки кладешь в левую тарелку, а с левой в правую, также одновременно. Взвешивание, это когда результат фиксируется., результат тут - произошло изменение или нет.


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 19:43
Цитировать
Из условия весы "кривые" никогда не уравновешиваются! Но что точно известно они всегда показывают правильный балланс если массы разные!
Что то я опять не догоняю)
Правильно ли я мыслю? :
Пустые весы - не уравновешены (одна чаша весов тяжелее другой)
Если теперь я положу по две оригинальных монет на каждую чашу весов - картина не измениться.
Если я кладу на одну чашу весов оригинал, а на другую фальшивку - то уравновесятся? Если так, то если я теперь поменяю эти монеты местами - равновесие нарушится.
Я правильно понял? 


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 19:47
Цитировать
Так что мне делать или нет, мне просто реально время жалко, а тут еще эти монеты вечер подпортили?
Если со временем туго, то не стоит.
Просто было бы интересно то, сколько Вам нужно сделать таких численных экспериментов, чтобы получить ответ с заданной точностью. И как эта точность будет зависеть от числа экспериментов. Т.е. нужно построить распределение и его ширина фактически даст Вам меру ошибки. Если оно имеет узкий пик то метод оправдан, если достаточно размыто то чёрт его знает))
Короче если Вам интересно и будет свободное время лучше постройте график, как результаты будут распределены (отклонение от среднего). Это будет гораздо информативнее)    

    Я этим вопросом интересовался, в плане можно ли теоретически точность подсчитать или нет. Оказывается можно. Вопрос я не изучал, но просматривал, так что могу быть не везде корректен. Есть такое понятие как устойчивость частоты, при этом стремление частоты к какому-то предельному значению (вероятности) описывается законом больших чисел. Можно выяснить с какой скоростью убывает (m/n - p) при возрастании числа испытаний. Так вот, чтобы увеличить точность приближенного вычисления в N раз, число испытаний нужно увеличить в N^2.


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 19:49
Цитировать
Из условия весы "кривые" никогда не уравновешиваются! Но что точно известно они всегда показывают правильный балланс если массы разные!
Что то я опять не догоняю)
Правильно ли я мыслю? :
Пустые весы - не уравновешены (одна чаша весов тяжелее другой)
Если теперь я положу по две оригинальных монет на каждую чашу весов - картина не измениться.
Если я кладу на одну чашу весов оригинал, а на другую фальшивку - то уравновесятся? Если так, то если я теперь поменяю эти монеты местами - равновесие нарушится.
Я правильно понял?  

Один и тот же груз с чаш можно поднимать и опускать ничего не меняя местами, а сами чаши будут произвольным образом прыгать по разному. Т.е. если на обоих чашах по 2кг, то неизвестно в определенный момент перекладываний, что выше, а что нет. Поэтому нужно стремится, чтобы фальшивка всегда присутствовала на весах. Я вроде все проверил, мое решение работает.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 20:01
Снимаешь две монеты с одной тарелки и две с другой (одновременно) - левой рукой берешь две монеты с левой тарельки и, а правой рукой с правой. Потом монеты из правой руки кладешь в левую тарелку, а с левой в правую, также одновременно. Взвешивание, это когда результат фиксируется., результат тут - произошло изменение или нет.

А с какой стати они там уже лежали! Ты пользуешься фактом того что монеты уже лежали на тарелках и давали результат!
ЧАШИ ИЗНАЧАЛЬНО ПУСТЫ! Каждая операция взвешивания АТОМАРНА!



Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 20:16
 ;D Тогда поставил четыре и меняю по три монеты.
т.е. первый шаг - поставли четыре яблока, второй по три меняю.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 20:17
Один и тот же груз с чаш можно поднимать и опускать ничего не меняя местами, а сами чаши будут произвольным образом прыгать по разному. Т.е. если на обоих чашах по 2кг, то неизвестно в определенный момент перекладываний, что выше, а что нет. Поэтому нужно стремится, чтобы фальшивка всегда присутствовала на весах. Я вроде все проверил, мое решение работает.

Проще:
- Весы никогда не показывают равный вес (одна чаша всегда ниже другой)!
- Если вес равный, то чаши весов в любом положении (кроме равновесного)

- Если вес не равный, то чаши весов в правильном положении (более легкая выше, более тяжелая ниже)
- Все взвешивания АТОМАРНЫ (аккуратное докладывание, перекладывание, подкладаывание...:), не считается)


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 20:17
;D Тогда поставил четыре и меняю по три монеты.
т.е. первый шаг - поставли четыре яблока, второй по три меняю.

Где весь алгоритм.


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 20:23
Один и тот же груз с чаш можно поднимать и опускать ничего не меняя местами, а сами чаши будут произвольным образом прыгать по разному. Т.е. если на обоих чашах по 2кг, то неизвестно в определенный момент перекладываний, что выше, а что нет. Поэтому нужно стремится, чтобы фальшивка всегда присутствовала на весах. Я вроде все проверил, мое решение работает.

Проще:
- Весы никогда не показывают равный вес (одна чаша всегда ниже другой)!
- Если вес равный, то чаши весов в любом положении (кроме равновесного)

- Если вес не равный, то чаши весов в правильном положении (более легкая выше, более тяжелая ниже)
- Все взвешивания АТОМАРНЫ (аккуратное докладывание, перекладывание, подкладаывание...:), не считается)

Да как весы могут быть в правильном положении, если на одной чаше фальшивая монета, а на другой оригинал?
Пусть так. Мы кладём на одну чашу весов оригинал, на другую фальшивую монету - весы уравновесились. Но при перестановке этих монет весы выдут из равновесия, хотя вес, как Вы говорите не равный..
Противоречие? 


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 20:35
Да как весы могут быть в правильном положении, если на одной чаше фальшивая монета, а на другой оригинал?

В правильном - то что тяжелее, то ниже !!!!!!!

Пусть так. Мы кладём на одну чашу весов оригинал, на другую фальшивую монету - весы уравновесились.

Неееееет. Весы: фальшивка против оригинала - разный вес - всегда правильное положение весов, что легче, то выше, что тяжелее, то ниже!

А вот если веса равны, то результат непредсказуем(но никогда чаши не находятся на одном уровне), либо первая чаша выше, либо вторая.


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 08, 2010, 21:03
Может скажешь уже, а то я ночью спать не смогу, а уже поздно?


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 21:18
Может скажешь уже, а то я ночью спать не смогу, а уже поздно?

Отвечу в личку


Название: Re: Задачки
Отправлено: m_ax от Октябрь 08, 2010, 21:37
Я кажысь решил))

1) первое взвешивание: на одной чаше весов 4 монеты на другой тож 4. Пусть правая чаша перевесила.
2) Меняем местами две верхних монеты с левой чаши с двумя верхними с правой чаши и вновь взвешиваем.
Если всё осталось без изменений, то те 4 монеты, которые мы меняли местами - оригиналы. И фальшифка либо одна из двух(нижних) в правой чаше весов и она тяжелее, либо фальшивка одна из двух нижних в левой чаше и она легче.
3) Меняем местами теперь по одной нижний монеты и взвешиваем. Если всё осталось без изменений мы говорим, что поменявшиеся монеты - оригиналы.
4) Теперь ясно, что фальшивая монета либо вторая снизу на правой чаше весов и она тяжелее, либо фальшивка вторая снизу на левой чаше весов и она легче. Взвешиваем эти две подозрительные монеты с двумя оригинальными. Ну а далее если они перевесят, то фальшивка тяжелее и мы указываем на неё, в противном случае фальшивка легче и мы опять знаем которая.

Короче как то так)   


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 08, 2010, 21:49
Я кажысь решил))

1) первое взвешивание: на одной чаше весов 4 монеты на другой тож 4. Пусть правая чаша перевесила.
2) Меняем местами две верхних монеты с левой чаши с двумя верхними с правой чаши и вновь взвешиваем.
Если всё осталось без изменений, то те 4 монеты, которые мы меняли местами - оригиналы. И фальшифка либо одна из двух(нижних) в правой чаше весов и она тяжелее, либо фальшивка одна из двух нижних в левой чаше и она легче.
3) Меняем местами теперь по одной нижний монеты и взвешиваем. Если всё осталось без изменений мы говорим, что поменявшиеся монеты - оригиналы.
4) Теперь ясно, что фальшивая монета либо вторая снизу на правой чаше весов и она тяжелее, либо фальшивка вторая снизу на левой чаше весов и она легче. Взвешиваем эти две подозрительные монеты с двумя оригинальными. Ну а далее если они перевесят, то фальшивка тяжелее и мы указываем на неё, в противном случае фальшивка легче и мы опять знаем которая.

Короче как то так)   

Правильно.
Alex_cs_gsp почти решил, только зачем-то сделал лишнее 5-е взвешивание вместо вывода результата из 4-го.


Название: Re: Задачки
Отправлено: Alex_cs_gsp от Октябрь 09, 2010, 09:12
Правильно.
Alex_cs_gsp почти решил, только зачем-то сделал лишнее 5-е взвешивание вместо вывода результата из 4-го.


Терпения не хватило.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 11, 2010, 12:21
Простая Задачка.

В игре, которая длится 15 минут, участвуют 36 игроков, из которых 4 - запасные. Запасные поочередно заменяют каждого игрока, так что все играющие проводят на площадке одинаковое время. Какое?


Название: Re: Задачки
Отправлено: ufna от Октябрь 11, 2010, 13:37
13 минут 20 секунд ?


Название: Re: Задачки
Отправлено: shirushizo от Октябрь 11, 2010, 17:38
Если я правильно понимаю слово "поочередно" и задача решается в лоб, то 800 с = 13 мин 20 с как и у ufna.


Название: Re: Задачки
Отправлено: spectre71 от Октябрь 12, 2010, 08:13
13 минут 20 секунд ?

Правильно.


Название: Re: Задачки
Отправлено: m_ax от Июнь 29, 2011, 19:56
Решил оживить сие тему)
Короче задачка:
Есть 25 лошадок, и 5 ворот для забега. Сколько нужно забегов устроить, чтобы найти 3 самых быстрых лошадки?

Секундомеров нет. Можно лишь сравнивать скорость относительно.
Например в одном из забегов первая прискокала лошадка А, второй лошадка В третий С и т.д.


Название: Re: Задачки
Отправлено: MoPDoBoPoT от Июнь 29, 2011, 20:57
11, а при некоторых обстоятельствах - 10


Название: Re: Задачки
Отправлено: m_ax от Июнь 29, 2011, 21:01
Ещё варианты есть?


Название: Re: Задачки
Отправлено: Kolobok от Июнь 29, 2011, 21:18
8


Название: Re: Задачки
Отправлено: m_ax от Июнь 29, 2011, 21:20
Кто даст меньше?))


Название: Re: Задачки
Отправлено: MoPDoBoPoT от Июнь 29, 2011, 21:31
Ну я и лось... (: Применял принцип отсечения третьим не сразу.
За 6 забегов.


Название: Re: Задачки
Отправлено: m_ax от Июнь 29, 2011, 21:33
Ну я и лось... (: Применял принцип отсечения третьим не сразу.
За 6 забегов.
Уверены? И как же за 6 забегов это сделать?


Название: Re: Задачки
Отправлено: kambala от Июнь 29, 2011, 22:01
из 5 забегов по 5 лошадей в каждом определяем лучшую в каждой пятерке и делаем финальный забег между лучшими.

этот вариант мне сразу же пришел в голову, но потом я его откинул как неправильный, поскольку в ситуации, когда в одном из первых 5-и забегов будет участвовать сразу 5 наибыстрейших лошадей, результат будет неверный.

потом я насчитал 12 забегов.


Название: Re: Задачки
Отправлено: m_ax от Июнь 29, 2011, 22:05
из 5 забегов по 5 лошадей в каждом определяем лучшую в каждой пятерке и делаем финальный забег между лучшими.

этот вариант мне сразу же пришел в голову, но потом я его откинул как неправильный, поскольку в ситуации, когда в одном из первых 5-и забегов будет участвовать сразу 5 наибыстрейших лошадей, результат будет неверный.

потом я насчитал 12 забегов.
Не, ну 12 это многовато)


Название: Re: Задачки
Отправлено: Igors от Июнь 29, 2011, 22:10
Ну интересен процесс "мЫшления", а не просто ответы (неважно правильные или нет). Попробуем:

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

- шестой тоже очевиден, скачут победители первых пяти. Теперь самую быструю знаем, но 2 др. еще нет.  

- седьмой забег: 4 оставшихся из первой пятерки + пришедшая второй в шестом. Теперь знаем № 2

- восьмой: 4 из второй пятерки + пришедшая третьей в шестом.

- девятый: 4 из седьмого + победитель восьмого. Пришедшая первой будет № 3

Итого 9. Ну конечно расчет справедлив если лошадки не устают бегать  :)


Название: Re: Задачки
Отправлено: MoPDoBoPoT от Июнь 29, 2011, 22:12
Уверены? И как же за 6 забегов это сделать?
Нет, что-то я просчитался)
У меня тоже 8 забегов получилось.


Название: Re: Задачки
Отправлено: m_ax от Июнь 29, 2011, 22:30
Igors правильно начал рассуждать)
Однако, пока правильного ответа не прозвучало)


Название: Re: Задачки
Отправлено: MoPDoBoPoT от Июнь 29, 2011, 22:34
Как у меня получилось 8:
первый шаг, да, очевиден: разбиваем 25 лошадок на 5 групп и проводим 5 забегов, тем самым, ранжируем лошадок внутри групп.
Для выполнения последующих забегов, лучше нарисовать табличку:
    1     1     1     1     1   => winner
    --------------------  
    2     2     2     2     2
    3     3     3     3     3
    4     4     4     4     4
    5     5     5     5     5

Эти 5 столбцов - это лошадки с порядковыми номерами внутри своей группы. Рассматриваем эти столбцы как стеки.
Далее забеги проводятся для "верхушек стеков", то есть для определения самой быстрой лошадки, проводим забег для "верхушек" наших "стеков". После этого "извлекаем" победителя из своего "стека" и проводим новый забег, для определения лошадки N2...


Название: Re: Задачки
Отправлено: ecspertiza от Июнь 30, 2011, 08:15
А мне тоже кажется что за 6ть забегов :)

Первые пять забегов определяют 5ть самых быстрых лошадей, делаем 6ой из победителей и те 3 которые пришли раньше остальных и будут самыми быстрыми :)


Название: Re: Задачки
Отправлено: m_ax от Июнь 30, 2011, 12:53
А мне тоже кажется что за 6ть забегов :)

Первые пять забегов определяют 5ть самых быстрых лошадей, делаем 6ой из победителей и те 3 которые пришли раньше остальных и будут самыми быстрыми :)
Нет, может, например, оказаться так, что в одой из групп (по пять лошадей) оказались все три самые быстрые. 


Название: Re: Задачки
Отправлено: m_ax от Июнь 30, 2011, 22:02
Есть ещё идеи?


Название: Re: Задачки
Отправлено: LisandreL от Июль 01, 2011, 08:17
Понятно как выявить тройку за 7 забегов:
Вначале все лошади участвуют в заездах по 1 разу. Того 5 заездов.
Далее победителей (первые места) сводим в 1 заезде. Обозначим их как a1, b1, c1, d1, e1 в порядке прихода к финишу. Бегавших с ними в подготовительных раундах обозначим той же буквой, но цифрой соответствующей месту.

a1 b1 c1 d1 e1
a2 b2 c2 d2 e2
a3 b3 c3 d3 e3
a4 b4 c4 d4 e4
a5 b5 c5 d5 e5

Тогда на место в тройке могут претендовать выделенные лошади. У остальных заведомо есть 3+ лошади быстрее их ( например для b3 быстрее её b2 и b1, так как они участвовали в 1 забеге и a1, так как она быстрее b1).
Остаётся 6 лошадей, но a1 гарантированно самая быстрая. Тогда среди оставшихся 5 проводим забег и 2 его победителя и займут 2-ое и 3-ье место в рейтинге лошадей.

Осталось доказать, что менее чем за 7 заездов этого выяснить нельзя.

Соображение 1: если лошадь не принимала участие ни в одном забеге, то про неё ничего сказать нельзя, значит каждая лошадь должна участвовать хотя бы в 1 забеге.
Итого получаем минимум 5 забегов.

Соображение 2: если забегов ровно 5 и каждая лошадь участвовала, то они участвовали ровно один раз и выявить тройку ещё нельзя ( у нас получается 9 претендентов).

Вот. Осталось разобраться с 6 забегами.

P.S. Разумеется решаем, в предположении, что лошади всегда бегают одинаково.


Название: Re: Задачки
Отправлено: Igors от Июль 01, 2011, 10:05
Да, с предъявленной матрицей все сразу становится ясно. Кстати это похоже как пакует jpg (когда-то (давно) изучал)


Название: Re: Задачки
Отправлено: m_ax от Июль 01, 2011, 22:17
LisandreL Да, совершенно верно)


Название: Re: Задачки
Отправлено: brankovic от Июль 01, 2011, 23:54
LisandreL Да, совершенно верно)

А почему за 6 нельзя? В смысле как это доказать?


Название: Re: Задачки
Отправлено: m_ax от Июль 02, 2011, 13:01
LisandreL Да, совершенно верно)

А почему за 6 нельзя? В смысле как это доказать?
Как доказать не знаю) Не думал об этом.
Видимо, нужно рассуждать так, что после пяти забегов (а это однозначно пять по пять лошадей) минимальное число лошадей в которое входят три самых быстрых, больше пяти.  


Название: Re: Задачки
Отправлено: Igors от Июль 17, 2011, 14:18
Есть QPolygonF с числом точек >= 3. Определить порядок следования точек (по или против часовой стрелки)


Название: Re: Задачки
Отправлено: m_ax от Июль 17, 2011, 15:46
Есть QPolygonF с числом точек >= 3. Определить порядок следования точек (по или против часовой стрелки)
Если контур без самопересечений, то берёте любую точку (A0) и строите вектор M следующим образом:
Разбиваете ваш контур на вектора ai и берёте сумму всех векторных произведений каждого вектора с вектором проведённого из т. A0 к началу каждого вектора ai. Получившийся таким образом вектор M будет иметь только z компоненту и если она > 0 то движение происходит по часовой стрелки, в противном случае - против часовой.
Вроде так))
   


Название: Re: Задачки
Отправлено: kambala от Июль 17, 2011, 19:47
иногда в качестве A0 используют центр полигона

определение порядка следования часто используется при построении выпуклой оболочки (алгоритм Грэхема например) :)


Название: Re: Задачки
Отправлено: Igors от Июль 17, 2011, 20:06
Если контур без самопересечений, то берёте любую точку (A0) и строите вектор M следующим образом:
Разбиваете ваш контур на вектора ai и берёте сумму всех векторных произведений каждого вектора с вектором проведённого из т. A0 к началу каждого вектора ai. Получившийся таким образом вектор M будет иметь только z компоненту и если она > 0 то движение происходит по часовой стрелки, в противном случае - против часовой.
Вроде так))
То есть Вы считаете что такое объяснение вполне понятно широкому кругу читателей? :) Как там в гоблинском переводе
Цитировать
Я человек военный - говори два разА и медленно!
В данном случае исходник ф-ции сказал бы намного больше и лучше, прототип напр такой
Код
C++ (Qt)
int CheckPolygonClockwise( const QPolygonF & poly );
 
Так что есть возможность блеснуть техникой С++ (если таковая имеется)


Название: Re: Задачки
Отправлено: m_ax от Июль 17, 2011, 20:33
Если контур без самопересечений, то берёте любую точку (A0) и строите вектор M следующим образом:
Разбиваете ваш контур на вектора ai и берёте сумму всех векторных произведений каждого вектора с вектором проведённого из т. A0 к началу каждого вектора ai. Получившийся таким образом вектор M будет иметь только z компоненту и если она > 0 то движение происходит по часовой стрелки, в противном случае - против часовой.
Вроде так))
То есть Вы считаете что такое объяснение вполне понятно широкому кругу читателей? :) Как там в гоблинском переводе
Цитировать
Я человек военный - говори два разА и медленно!
В данном случае исходник ф-ции сказал бы намного больше и лучше, прототип напр такой
Код
C++ (Qt)
int CheckPolygonClockwise( const QPolygonF & poly );
 
Так что есть возможность блеснуть техникой С++ (если таковая имеется)
Как то так:
Код
C++ (Qt)
int CheckPolygonClockwise( const QPolygonF & poly )
{
   double M_z = 0.0;
   int size = poly.size();
   QPointF a = poly[size-1];
   QPointF b = poly[0]-poly[size-1];
   M_z += (a.x() * b.y() - a.y() * b.x());
   for (int i = 0; i < size-1; ++i) {
       a = poly[i];
       b = poly[i+1]-poly[i];
       M_z += (a.x() * b.y() - a.y() * b.x());
   }
   return (M_z > 0.0) ? 1 : -1;
}
 
Код написан на коленках, так что дорабатывайте сами))

Если интересно, могу показать откуда всё это следует.


Название: Re: Задачки
Отправлено: ufna от Июль 17, 2011, 20:58
[irony]
m_ax, с вероятностью 99% ты допустил ошибку, которая говорит, что ты ничего не понимаешь в этой области, или просто даже не понял задачу!
[/irony]


Название: Re: Задачки
Отправлено: m_ax от Июль 17, 2011, 21:12
[irony]
m_ax, с вероятностью 99% ты допустил ошибку, которая говорит, что ты ничего не понимаешь в этой области, или просто даже не понял задачу!
[/irony]
;D
ufna, я уже морально готов к ентому))

Кстати, реально нашёл ошибку, там (4 строчка) вместо
Код
C++ (Qt)
QPointF b = poly[size-1]-poly[0];
 
нужно
Код
C++ (Qt)
QPointF b = poly[0]-poly[size-1];
 
Подправил))



Название: Re: Задачки
Отправлено: Igors от Июль 18, 2011, 12:18
Все Вы правильно сказали, но объяснили (мягко говоря) неважно. Векторное произведение принимает 2 вектора и возвращает вектор который перпендикулярен обоим входным. Есть важное свойство: длина возвращаемого вектора равна (удвоенной) площади треугольника образованного 2-мя входными. Поэтому площадь треугольника равна половине длины векторного произведения любых его 2-х сторон.

Рассмотрим треугольник ABC и точку O.

S(ABC) = S(OAB) + S(OBC) + S(OCA);  // S - площадь

Когда O внутри ABC - все очевидно. Но даже если O снаружи - результат тот же. На плоскости XY площадь есть Z выходного вектора и знак Z (плюс или минус) как раз и определяется направлением обхода. Два слагаемых получатся с одним знаком а третье с другим, в итоге все равно знаковая площадь ABC.

Код
C++ (Qt)
// возвращает знаковую удвоенную площадь треугольника (O(0, 0), p0, p1)
inline qreal Square( const QPointF & p0, const QPointF & p1 )
{
return p0.x * p1.y - p0.y * p1.x;
}
 
// возвращает знаковую удвоенную площадь полигона
// нужна для выяснения направления обхода но может пригодиться и сама по себе
qreal PolySquare( const QPolygonF & poly )
{
qreal sum = 0.0f;
int i, limit = poly.size();
for (i = 0; i < limit; ++i)
 sum += Square(poly[i], poly[(i + 1) % limit]);
return sum;
}
 
// зная знак площади, возвращаем направление обхода
enum {
 POLY_ORDER_UNDEF = -1,   // площадь полигона слишком мала (вырожденный)
 POLY_ORDER_CW = 0,        // по часовой
 POLY_ORDER_СCW = 1,      // против часовой
};
const qreal POLY_FUDGE = 1.0e-5f;  // предел точности
 
int PolyClockwise( qreal polySquare )
{
if (fabs(polySquare) < POLY_FUDGE) return POLY_ORDER_UNDEF;
return (polySquare > 0.0) ? POLY_ORDER_СCW : POLY_ORDER_CW;
}
 
Писал тоже прямо здесь (все по-честному  :))  


Название: Re: Задачки
Отправлено: Lagovas от Август 03, 2011, 19:39
Мы хотели бы пересечь на джипе 1000-мильную пустыню, израсходовав при этом минимум горючего. Объем топливного бака джипа 500 галлонов, горючее расходуется равномерно, по 1 галлону на милю. В точке старта имеется неограниченный резервуар с топливом. Так как в пустыне нет складов горючего, мы должны установить свои собственные хранилища и наполнить их топливом из бака машины.
Где расположить эти хранилища?
Сколько горючего нужно залить в каждое из них?
Какое наименьшее количество бензина требуется для преодоления пустыни?


Название: Re: Задачки
Отправлено: m_ax от Август 04, 2011, 20:36
Мы хотели бы пересечь на джипе 1000-мильную пустыню, израсходовав при этом минимум горючего. Объем топливного бака джипа 500 галлонов, горючее расходуется равномерно, по 1 галлону на милю. В точке старта имеется неограниченный резервуар с топливом. Так как в пустыне нет складов горючего, мы должны установить свои собственные хранилища и наполнить их топливом из бака машины.
Где расположить эти хранилища?
Сколько горючего нужно залить в каждое из них?
Какое наименьшее количество бензина требуется для преодоления пустыни?

Прикольная задачка)

И так, у меня получилось следующие:
Необходимо три хранилища, расположенные на расстояниях
1) 500/3,
2) 2*500/3,
3) 500
милях.
Заполняется вначале первое хранилище объёмом в 5 баков, т.е. 5*500 = 2500 галлонов.
Первое хранилище заполнено, мы находимся в самом начале пустыни, заправляем полный бак и едем к первому хранилищу.
В итоге у нас 5 баков в первом хранилище  и оставшиеся 2/3 бака в машине.

Заполняем второе хранилище, перевозя весь бензин из первого во второе. Получается, что после этого мы нах. у второго хранилища с пустым баком в машине и двумя баками в хранилище: 2*500 = 1000 галлонов.

Далее наполняем полный бак в машину едем к третьему хранилищу и заполняем его 1/3 бака и на оставшемся бензине 1/3 бака возвращаемся ко второму хранилищу.  

Заливаем полный бак (оставшийся во втором хранилище), едем до третьего хранилища, потратив при этом 1/3 бака. Восполняем эти 1/3 бака из третьего хранилища и пересекаем оставшиеся 500 миль с полным баком.

Всего получается нужно 16 баков, т.е. 16*500 = 8000 галлонов топлива.

Как то так, но не уверен, что нет варанта более оптимального.


Название: Re: Задачки
Отправлено: Kolobok от Август 05, 2011, 10:25
Неувязочка. Только для заполнения первого хранилища нужно 5000 галлонов для езды.


Название: Re: Задачки
Отправлено: m_ax от Август 05, 2011, 11:44
Неувязочка. Только для заполнения первого хранилища нужно 5000 галлонов для езды.
Почему это 5000 галонов?
Первое хранилище нах. на растоянии 500/3 м. Заправляем полный бак. 1/3 бака тратится на то чтоб до него доехать, 1/3 бака сливаем в хранилище и на оставшейся 1/3 бака едем обратно.
Нам нужно заполнить первое хранилище 5 баками = 5*500 = 2500 галлонов.
Всего для этого нужно 15 баков горючки = 15*500 = 7500 галлонов.
После чего вы находитесь в начале пустыни с пустым баком.
Заливаете ещё один бак чтоб далее доехать до первого хранилища.
Так что всего получается нужно 16 баков горючего т.е. 16*500 = 8000 галлонов.


Название: Re: Задачки
Отправлено: Kolobok от Август 05, 2011, 13:07
да, моя ошибка.


Название: Re: Задачки
Отправлено: _OLEGator_ от Август 05, 2011, 21:45
А разве не 14 баков необходимо, чтобы заполнить первое хранилище на 2500 галлонов?

от каждой поездки мы заправляем хранилище на 500/3 галлонов
получается, на 13 поездок у нас первое хранилище заполнено на 2000 галлонов + 500/3 галлонов, и мы находимся вначале пустыни с пустым баком.
Заправляемся 14 раз и приезжаем в первое хранилище, где в совокупности с 2/3 бака у нас получается 2500 галлонов

Далее все перевозится во второе хранилище, где в совокупности опять же с этими 2/3 бака получаем 1000 галлонов.
В третьем 500 галлонов и доезжаем до конца пустыни.

У меня получилось 14*500 = 7000 галлонов. Поправьте, если не прав.


Название: Re: Задачки
Отправлено: m_ax от Август 05, 2011, 22:15
А разве не 14 баков необходимо, чтобы заполнить первое хранилище на 2500 галлонов?

от каждой поездки мы заправляем хранилище на 500/3 галлонов
получается, на 13 поездок у нас первое хранилище заполнено на 2000 галлонов + 500/3 галлонов, и мы находимся вначале пустыни с пустым баком.
Заправляемся 14 раз и приезжаем в первое хранилище, где в совокупности с 2/3 бака у нас получается 2500 галлонов

Далее все перевозится во второе хранилище, где в совокупности опять же с этими 2/3 бака получаем 1000 галлонов.
В третьем 500 галлонов и доезжаем до конца пустыни.

У меня получилось 14*500 = 7000 галлонов. Поправьте, если не прав.
Фишка в том, что находясь в первом хранилище с 5-ю баками горючки (2500 галлонов) вы не сможете заполнить второе хранилище двумя баками (1000 галлонов).

Я имел в виду, что в первом хранилище должно быть 5 баков и вы находясь при этом в начале пустыни, заправляете полный бак, едете к первому хранилищу.
В итоге, находясь у первого хранилища в машине 2/3 бака + 5 баков в хранилище.
Этого достаточно, чтоб наполнить второе хранилище 2 баками и находится при этом на втором хранилище. 


Название: Re: Задачки
Отправлено: Igors от Август 06, 2011, 09:07
Интересная задачка. Свести дело к школьному вычислению производной не удается, т.к. "число ходок" целое.
Соображения такие:

- оптимальной будет такая расстановка что после пересечения пустыни все временные хранилища (точки) будут пусты (иначе мы напрасно их заполняли)

- чем дальше мы прошли - тем меньше новые шаги (ведь таскать сюда топливо дороже)

Прикинем финальный маршрут (после дозаправки точка остается пустой и у нас опять полный бак)

- проехали 200, дозаправились из первой
- проехали еще 150, дозаправились из второй,
- проехали еще 100, дозаправились из третьей,
- проехали еще 50, дозаправились из 4-й
- проезжаем оставшиеся 500

Поэтому точек 4 (на расстояниях от начала 200, 350. 450, 500)
Перед последним выездом топлива в них должно быть (200, 150, 100, 50) 

Ну а как натаскать и сколько всего литров надо - это, как говорится, "детали реализации"  :)


Название: Re: Задачки
Отправлено: _OLEGator_ от Август 06, 2011, 09:37
Находясь у первого хранилища с 5-ю баками горючего (2500 галлонов) мы спокойной можем заполнить второе хранилище 1000 галлонами:
после 4 ходок от 1го до 2го хранилища имеем 500 + 500/3 галлонов топлива во 2м хранилище и мы находимся с пустым баком у первого, в котором 500 галлонов топлива.
Заправляем бак, доезжаем до второго хранилища и остается 2/3 бака + топливо во втором хранилище, в совокупности имеем 1000 галлонов топлива.

Дальше заправляем полный бак, доезжаем до 3го хранилища, оставляем 500/3 галлонов, возвращаемся назад, заправляемся оставшимися 500 галлонами, доезжаем до 3го хранилища, где в совокупности с 2/3 бака и 1/3 в хранилище у нас 1 полный бак, дозаправляемся и едем до конца пустыни.


Название: Re: Задачки
Отправлено: Igors от Август 06, 2011, 11:12
после 4 ходок от 1го до 2го хранилища имеем 500 + 500/3 галлонов топлива во 2м хранилище и мы
Это "слишком конкретно". А будет емкость бака напр всего 100 - как тогда будете складывать в уме/на бумажке? Мне кажется надо идти "с конца", от того расклада что хотим получить

(200, 150, 100, 50) - расклад перед последним выездом, после возвращения в начало. Но мы могли вернуться в начало только из предыдущей (1-й) точки, значит предыдущий расклад (400, 150, 100. 50), и.т.д. до тех пор пока во всех точках не останется по нулям. Расход топлива на каждом шаге добавляем к сумме.

Если точки расставлены - все ясно, но вот сколько и как их ставить - этого я "в общем виде" сформулировать не могу :)  Пришлось бы подобрать N (число элементов прогрессии) прогнав расчет топлива для каждого



Название: Re: Задачки
Отправлено: _OLEGator_ от Август 06, 2011, 12:09
Igors, эту задачу от частного случая можно свести к общему, просто заниматься сейчас этим не имеет смысла, задача поставлена конкретная - решение в лоб =)


Название: Re: Задачки
Отправлено: Igors от Август 06, 2011, 14:42
Если точки расставлены - все ясно, но вот сколько и как их ставить - этого я "в общем виде" сформулировать не могу :)  Пришлось бы подобрать N (число элементов прогрессии) прогнав расчет топлива для каждого
Та чего это не могу? Тут же все просто

d1 = расстояние до первой точки
2 * d1 = топливо затраченное на доставку
500 - 2 * d1 = количество доставленного топлива

Конструируем ф-цию (чем дальше доставили - тем лучше, чем больше доставили - тем лучше, значит)
f = d1 * (500 - 2 * d1)

Это автокорреляционная ф-ция, достигает максимума когда сомножители равны, значит в общем виде оптимальное расстояние до первой точки = 500/3 = 166.6

Расчет для 2-й точки аналогичен, но расходы на доставку растут (ведь сначала надо доставить это топливо до первой точки)
f = d2 * (500 - 2 * d2 - 500 / 3)
тогда d2 = 500 * 2 / 9 = 111.1

и.т.д. ставим точки пока сумма не превысит последнее расстояние


Название: Re: Задачки
Отправлено: m_ax от Август 06, 2011, 16:06
Находясь у первого хранилища с 5-ю баками горючего (2500 галлонов) мы спокойной можем заполнить второе хранилище 1000 галлонами:
после 4 ходок от 1го до 2го хранилища имеем 500 + 500/3 галлонов топлива во 2м хранилище и мы находимся с пустым баком у первого, в котором 500 галлонов топлива.
Заправляем бак, доезжаем до второго хранилища и остается 2/3 бака + топливо во втором хранилище, в совокупности имеем 1000 галлонов топлива.

Дальше заправляем полный бак, доезжаем до 3го хранилища, оставляем 500/3 галлонов, возвращаемся назад, заправляемся оставшимися 500 галлонами, доезжаем до 3го хранилища, где в совокупности с 2/3 бака и 1/3 в хранилище у нас 1 полный бак, дозаправляемся и едем до конца пустыни.
Да, Вы правы: 5 баков хватит)
Тогда всего получается 7000 галонов нужно.

Igors А у Вас скока всего топлива получается нужно?


Название: Re: Задачки
Отправлено: Lagovas от Август 07, 2011, 01:19
ответ неправильный, можно меньше. Если нужна подсказка, скажите. Подскажу метод которым искать ответ. Это у нас задача по алгоритмистике в универе была.


Название: Re: Задачки
Отправлено: Igors от Август 07, 2011, 08:55
Igors А у Вас скока всего топлива получается нужно?
Давайте считать (точки на расстоянии 200, 350, 100, 50)

- для заправки точек 3 и 4 нужна одна ходка, топлива в них 150 + (300 доставка) = 450
значит точка 2 должна иметь 450 + (150 должно остаться в ней самой) = 600

- для заправки точки 2 (на расстоянии 150) надо 3 ходки = 1500, из них доставка = 900
значит точка 1 должна иметь 1500 + (200 должно остаться в ней самой) = 1700

- для заправки точки 1 (на расстоянии 200) надо 17 ходок, доставка = 17 * 300 = 5100

Складываем все расходы на доставку: 300 + 900 + 5100 = 6300
Итого доставка + финальный заезд: 6300 + 1000 = 7300


Название: Re: Задачки
Отправлено: Lagovas от Август 07, 2011, 10:20
нет, можно еще меньше.


Название: Re: Задачки
Отправлено: kambala от Август 07, 2011, 12:50
линейное программирование надо применять? :)


Название: Re: Задачки
Отправлено: m_ax от Август 07, 2011, 13:27
нет, можно еще меньше.
Lagovas , не подсказывайте)) Мы ещё подумаем)


Название: Re: Задачки
Отправлено: m_ax от Август 07, 2011, 14:36
И так, кажется назрело решение))

Во-первых всего хранилищь как и раньше 3. На расстояниях 500/3, 2*500/3 и 500 миль.
Будучи в самом начале пустыни с заполненым баком, хранилища должны быть заполнены каждое 1/3 бака.
Теперь последовательно посчитаем сколько нужно топлива, чтоб наполнить каждое хранилище и при этом оказаться в начале пустыни.
1) Для заполнения первого хранилища 1/3 бака нужно 1 бак.
2) Для заполнения только второго хранилища 1/3 бака нужно 3 бака
3) Для заполнения третьего хранилища 1/3 бака нужно 5 баков.

Итак, всего вкупе нужно (5+3+1) + 1 = 10 баков = 5000 галлонов   


Название: Re: Задачки
Отправлено: Lagovas от Август 07, 2011, 15:06
И даже это не самое оптимальное решение)


Название: Re: Задачки
Отправлено: m_ax от Август 07, 2011, 22:07
Если сделать 6 хранилищь, на расстоянии
S_i = i/6 * 500 (i = 1,2,3,4,5,6)
То получается что можно обойтись 9 баками, т.е. 9 * 500 = 4500 галлонов.
Опять не факт, что это оптимальный вариант.
Надо попробывать решить эту задачу в общем случае.


Название: Re: Задачки
Отправлено: Lagovas от Август 07, 2011, 22:09
Вы близки, но это еще не самый оптимальный способ.


Название: Re: Задачки
Отправлено: m_ax от Август 08, 2011, 22:09
Решил в общем случае.

Ход решения такой:
Разбиваем первые 500 миль пути на n точек:
0, 500/n, 2*500/n, ...,  (n-1)*500/n, 500.

Пусть всего необходимо N баков горючего.
Тогда, доставляя эти N баков до первого хранилища (500/n)
получим:
N - (2*s1+1)/n = N_1;
где s1 - целое число (1,2,3,...)
Второе уравнение:
N_1 - (2*s2+1)/n = N_2;
и так далее.

Получается рекурентное соотношение.
Терерь учтём, что N_n = 1 и запишем систему с другог конца:

N_(n-1) - (2*s1+1)/n = 1;
N_(n-2) - (2*s2+1)/n = N_(n-1);
...
N_(0) - (2*sn+1)/n = N_(1);

Вначале определяем N_(n-1) = 1 + (2*s1+1)/n.
s1 - берём минимально возможным.
Например, для n=6, s1 = 1.

И так по цепочке добираемся до N_(0).

Вот программка, которая считает N_(0), как функцию n.
Код
C++ (Qt)
#include <iostream>
#include <fstream>
#include <cmath>
 
double func(int n) {
   double v = 1.0;
   for (int i = 0; i < n; ++i) {
       int l = 0;
       while (true) {
           l++;
           int s = (int)ceil(double(2*l+1)/double(n)+v)-1;
           if (l==s) break;
       }
       v += (2.0*l+1.0)/double(n);
   }
   return v;
}
 
int main()
{
   std::ofstream out("test.txt");
   for (int i = 3; i < 50; ++i) {
       out << i << " " << func(i) << std::endl;
   }
   return 0;
}
 
   
А вот график зависимости N (в баках, левая ось и в галлонах - правая) от числа разбиений n.

Минимальное целое значение баков = 8 т.е. 4000 галлонов. Однако, это значение соответствует нескольким значениям n. 


Название: Re: Задачки
Отправлено: Igors от Август 09, 2011, 09:54
Ход решения такой:
Разбиваем первые 500 миль пути на n точек:
0, 500/n, 2*500/n, ...,  (n-1)*500/n, 500.
Так что, расстояние между точками (0, 1) такое же как и между (1, 2)? Это очевидно неоптимально - ведь доставлять топливо дальше дороже

Принципиально как ставить точки, Для первой все ясно 1/3 бака. Но я не могу придумать рекуррентное соотношение для второй. Если "на шару" то просто золотым сечением - даже если это будет неоптимально, то близко


Название: Re: Задачки
Отправлено: m_ax от Август 09, 2011, 14:18
Ход решения такой:
Разбиваем первые 500 миль пути на n точек:
0, 500/n, 2*500/n, ...,  (n-1)*500/n, 500.
Так что, расстояние между точками (0, 1) такое же как и между (1, 2)? Это очевидно неоптимально - ведь доставлять топливо дальше дороже

Принципиально как ставить точки, Для первой все ясно 1/3 бака. Но я не могу придумать рекуррентное соотношение для второй. Если "на шару" то просто золотым сечением - даже если это будет неоптимально, то близко

Я считаю, что правильное значение суммарного топлива, мы получим в пределе больших n.
И это значение (в баках) V = 7.6730...  т.е. 7.673*500 = 3836.5 галлон


Название: Re: Задачки
Отправлено: m_ax от Август 09, 2011, 15:22
Всё. до меня дошло как она решается))

Нужно начинать с конца т.е. с отметки 500 миль.
Первое уравнение для колличества топлива в предыдущем хранилище:
V - (2*s+1)*L = 1
Здесь L - расстояние от последнего хранилища до предыдущего.
s - целое число = 1,2,3,..
Начинаем с самых малых s.
s=1, тогда
V = 1+3*L <= s+1
Получаем, что L = 1/3, V = 2

Далее проделываем всё для следующего хранилища:
V - (2*s+1)*L = 2
V = 2+(2*s+1)*L <= s+1
Здесь минимальное s = 2
V = 2+5*L <= 3
L = 1/5, V = 3.

И так далее.
Получаем следующий ряд:
0  1/3  1/5  1/7  1/9  1/11  1/13
1  2     3     4     5     6      7

Получается, что при 7 баках мы проедем S = (1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/13) * 500 миль.
Тогда первое хранилище нужно расположить на расстоянии S1
S1 = (1 - 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/13) * 500 миль = 2021/45045 * 500 миль
И находится там с 7 баками
Теперь легко найти скмарное колличество топлива:
V - (2*s + 1)*2021/45045 = 7
V = (2*s+1)*2021/45045 + 7 <= s+1
s = 7,
V = 15*2021/45045 + 7 = 7.67299367299...

V = 7.67299367299 баков или 7.67299367299 * 500 = 3836.49683650 галлон


Название: Re: Задачки
Отправлено: Igors от Август 09, 2011, 18:09
Нужно начинать с конца т.е. с отметки 500 миль.
Первое уравнение для колличества топлива в предыдущем хранилище:
V - (2*s+1)*L = 1
Здесь L - расстояние от последнего хранилища до предыдущего.
s - целое число = 1,2,3,..
Начинаем с самых малых s.
s=1, тогда
V = 1+3*L <= s+1
Получаем, что L = 1/3, V = 2
Интересно, но пожалуйста дайте возможность мне (а может и другим) Вас понять. Во-первых предъявляем формулы с полным списком используемых переменных и поясняем откуда взялись "условные единицы". Во-вторых где начало а где конец - у Вас не разберешь :) Получается что расстояние от последнего хранилища (на отметке 500, посередине пустыни) до предыдущего = 1/3 (т.е. 500 / 3) самое большое или как?  :)

Ну и в-третьих: есть ли желание решать др задачки - но в реальном проекте и, возможно, за деньги? (это вопрос не ко всем а к m_ax лично)


Название: Re: Задачки
Отправлено: m_ax от Август 09, 2011, 19:12
Цитировать
Интересно, но пожалуйста дайте возможность мне (а может и другим) Вас понять. Во-первых предъявляем формулы с полным списком используемых переменных и поясняем откуда взялись "условные единицы". Во-вторых где начало а где конец - у Вас не разберешь. Получается что расстояние от последнего хранилища (на отметке 500, посередине пустыни) до предыдущего = 1/3 (т.е. 500 / 3) самое большое или как?
Хорошо, постараюсь не так сумбурно объеснить ход мыслей:

Пусть имеется n хранилищь. Сколько точно мы пока не знаем. Но мы знаем, что хранилище № n должно находится на расстоянии 500 миль и там должен быть 1 бак.
Далее топливо я буду мерить в баках, а расстояния отнесённые к 500 милям, т.е. L = 1 соответствует 500 миль.

Пусть теперь, хранилище № (n-1) находится на расстоянии L от хранилища № n.
Пусть там всего V баков. Это V можно представить себе в виде суммы:
V = (2*s+1)*L + 1,
где (2*s+1) - число переездов туда-сюда (нечётное), а (2*s+1)*L - топливо, потраченное на перевозку топлива из хранилища № (n-1) в хранилище № n.
Естественно, что потраченное на перевозку топливо должно быть как можно меньше.
Пробуем s = 1:
V = 3*L+1,
но с другой стороны должно выполняться условие V <= s+1.
s+1 - соответствует максимально-возможному колличесву топлива, которое мы можем забрать при (2*s+1) переездах.
Соответственно получаем первое уравнение:
3*L+1 <= s+1 = 2
откуда находим
L = 1/3 т.е. 1/3 * 500 миль
V = 2 бака

Аналогичное уравнение строим для хранилища № (n-2)
V = (2*s+1)*L + 2
пробуем s = 1:
3*L + 2 <= s+1 = 2
и видим, что s = 1 не удовлетворяет неравенству. Пробуем s = 2:
5*L + 2 <= s+1 = 3
Получаем
L = 1/5
V = 3

Продолжаем эту процедуру. И приходим к следующему выводу:
Хранилище (n) - содержит 1 бак
Хранилище (n-1) находится на расстоянии 1/3 от хранилища (n) и содержит 2 бака
Хранилище (n-2) находится на расстоянии 1/5 от хранилища (n-1) и содержит 3 бака
Хранилище (n-3) находится на расстоянии 1/7 от хранилища (n-2) и содержит 4 бака
Хранилище (n-4) находится на расстоянии 1/9 от хранилища (n-3) и содержит 5 бака
Хранилище (n-5) находится на расстоянии 1/11 от хранилища (n-4) и содержит 6 бака
Хранилище (n-6) находится на расстоянии 1/13 от хранилища (n-5) и содержит 7 бака

Суммарное расстояние от хранилища (n) в направлении к началу пустыни S:
S = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/13
следовательно (n-6) хранилище находится на расстоянии S1 = 1-S от начала пустыни:
S1 = 2021/45045 т.е. 2021/45045 * 500 миль
В этом хранилище нам нужно быть с 7 баками. Тогда последнее уравнение есть:
V = (2*s+1)*S1 + 7 <= s+1
Оно удовлетворяет при минимальном s = 7. Тогда получаем
V = 15 * S1 + 7 = 15 * 2021/45045 + 7 баков, т.е. (15 * 2021/45045 + 7)*500 галлон.

Цитировать
Ну и в-третьих: есть ли желание решать др задачки - но в реальном проекте и, возможно, за деньги? (это вопрос не ко всем а к m_ax лично)

Это я Вам напишу в личку  :)
 

   


Название: Re: Задачки
Отправлено: Igors от Август 09, 2011, 19:56
Пусть имеется n хранилищь. Сколько точно мы пока не знаем. Но мы знаем, что хранилище № n должно находится на расстоянии 500 миль и там должен быть 1 бак.
Далее топливо я буду мерить в баках, а расстояния отнесённые к 500 милям, т.е. L = 1 соответствует 500 миль.
Пожалуйста не поймите меня превратно (мол, невнимательно читал Ваш пост, сразу бросился спорить) - но с какого перепугу а последнем хранилище должен быть 1 бак? Ведь натаскать его сюда явно дороже, почему бы не выехать с полным баком и потом все время дозаправляться "чем дальше - тем меньше" - но продолжать путь с полным баком?


Название: Re: Задачки
Отправлено: m_ax от Август 10, 2011, 01:52
Пусть имеется n хранилищь. Сколько точно мы пока не знаем. Но мы знаем, что хранилище № n должно находится на расстоянии 500 миль и там должен быть 1 бак.
Далее топливо я буду мерить в баках, а расстояния отнесённые к 500 милям, т.е. L = 1 соответствует 500 миль.
Пожалуйста не поймите меня превратно (мол, невнимательно читал Ваш пост, сразу бросился спорить) - но с какого перепугу а последнем хранилище должен быть 1 бак? Ведь натаскать его сюда явно дороже, почему бы не выехать с полным баком и потом все время дозаправляться "чем дальше - тем меньше" - но продолжать путь с полным баком?
Последнее хранилище находится ровно посередине пустыни (500 миль). Одного бака будет достаточно, чтоб пересечь оставшеюся половину пустыни.
В смысле, когда мы приезжаем к последнему хранилищу у нас в сего один бак топлива. Заливаем его и едем до конца уже не парясь)   


Название: Re: Задачки
Отправлено: kuzulis от Август 10, 2011, 08:50
А мне кажется, что невозможно вообще пересечь пустыню, т.к. расход 500 гал/милю (т.е. проедем 500 миль без дозоправки).
Но длина пустыни 1000 миль, плюс еще (по условию задачи), необходимо из бака по ходу движения заполнять хранилища на пути =>
получается, что мы еще будем перерасходовать горючку из бака машины, поэтому проедем вообще менее 500 миль! :)

----
Ай, тьфу, ступил  ::)

Это типа нужно ехать в пустыню, ставить там новое хранилище и заправлять его, возвращаться назад, заправляться, ехать опять в пустыню, ставить еще хранилище (может быть, подзаправившись из предыдущего хранилища), ехать назад и т.п..

Жёсткая задачка.  :)



Название: Re: Задачки
Отправлено: Lagovas от Август 12, 2011, 00:49
Все, решили) В методичке ответ 3837,5. В общем смысл правильный, но насколько я помню, у него в некоторых случаях есть язьяны, если юзать в реальной жизни. Мы делали решение на паскале, и там при каких то расстояниях выходило очень большое количество действий, и расстояния были очень маленькими. И что бы проехать те расстояния, человеку не хватило бы жизни) А вообще молодец, решил. Вот файлик с этой задачи выложу, заслужил)
http://floomby.ru/content/55PT6XIANk/


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 13:22
Готовы?)


Название: Re: Задачки
Отправлено: Bepec от Ноябрь 22, 2012, 13:27
99 больных? 20


Название: Re: Задачки
Отправлено: Пантер от Ноябрь 22, 2012, 13:36
20


Название: Re: Задачки
Отправлено: Igors от Ноябрь 22, 2012, 13:37
Ну 20 (наверное я чего-то не понял)


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 14:01
Не, у меня другой вопрос.. Какой из этих сумасшедших такие задачки придумывает на всероссийскую олимпиаду 2012г. (для 8 класса)

ЗЫ
Если что, у меня тож 20 психов получилось.. 


Название: Re: Задачки
Отправлено: _OLEGator_ от Ноябрь 22, 2012, 14:02
"Но если верить глазам и ушам - Больше в несколько раз" (с)


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 14:05
"Но если верить глазам и ушам - Больше в несколько раз" (с)

Не, не, не так)
Правильный ответ приведён в самом условие задачи: много..)


Название: Re: Задачки
Отправлено: kambala от Ноябрь 22, 2012, 14:08
у меня тоже 20 вышло


Название: Re: Задачки
Отправлено: twp от Ноябрь 22, 2012, 14:48
Головоломки тоже сюда можно? Только просьба, кто уже знает ответ, не выдать   ;)


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 15:03
Головоломки тоже сюда можно? Только просьба, кто уже знает ответ, не выдать   ;)


У меня 3 получилось)


Название: Re: Задачки
Отправлено: kambala от Ноябрь 22, 2012, 15:09
не знал, но догадался за полминуты. ответ m_ax неверный.


Название: Re: Задачки
Отправлено: vregess от Ноябрь 22, 2012, 15:11
6 )

нет не 6 (


Название: Re: Задачки
Отправлено: mutineer от Ноябрь 22, 2012, 15:11
6 тоже неверно))


Название: Re: Задачки
Отправлено: _OLEGator_ от Ноябрь 22, 2012, 15:12
2
достаточно воспринимать это как картинку, а не как цифры


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 15:18
Каждой цивре ставится в соответствии чиссло, а результат есь сумма этих чисел)

9 -> 1
8 -> 2
6 -> 1
0 -> 1

все остальные цифры нули) Я просто в первом посте сложил не правильно


Название: Re: Задачки
Отправлено: _OLEGator_ от Ноябрь 22, 2012, 15:20
*Здесь был правильный ответ*


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 15:21
/* вырезано цензурой */  8)


Название: Re: Задачки
Отправлено: vregess от Ноябрь 22, 2012, 15:28
Черт, _OLEGator_ прав.


Название: Re: Задачки
Отправлено: twp от Ноябрь 22, 2012, 15:32
Ну и зачем? Может пускай народ еще порешает.  :D Мне например было бы не интересно узнать правильный ответ так быстро.
PS. Еще есть возможность удалить свой пост  :)


Название: Re: Задачки
Отправлено: kambala от Ноябрь 22, 2012, 15:33
А я тут систему уравнений решал)
Цитировать
this problem can be solved by pre-elementary children in 5 to 10 minutes
без этой подсказки я бы наверное так быстро не догадался


Название: Re: Задачки
Отправлено: _OLEGator_ от Ноябрь 22, 2012, 15:35
twp, да, можно затереть его)


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 15:36
this problem can be solved by pre-elementary children in 5 to 10 minutes

Ну я же не pre-elementary children  ;)


Название: Re: Задачки
Отправлено: kambala от Ноябрь 22, 2012, 15:43
это я к тому, что в связи с этим задача явно должна решаться не через систему уравнений.

P.S. затри ответ во втором посте на этой странице.


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 15:49
это я к тому, что в связи с этим задача явно должна решаться не через систему уравнений.

P.S. затри ответ во втором посте на этой странице.

Главное, что гипотеза верна была)
А уж как её проверять - это уже другой вопрос.. На вкус и цвет..


Название: Re: Задачки
Отправлено: Igors от Ноябрь 22, 2012, 16:55
Я не догадался, но быстро увидел в гугле :) Кстати ответ m_ax мне кажется более логичным чем оригинал
Ладно, вот задачка которая не раз у меня возникала в работе (ну только "декорации" другие)

Задано время: час, минута. секунда. Часовая и минутная стрелки делят циферблат на 2 угла (сумма которых 360 градусов). Определить находится ли секундная стрелка внутри меньшего из углов.

Если найдете в гугле - покажите где (я не знаю)


Название: Re: Задачки
Отправлено: vregess от Ноябрь 22, 2012, 17:18
Igors, а чем можно оперировать?


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 17:19
Я не догадался, но быстро увидел в гугле :) Кстати ответ m_ax мне кажется более логичным чем оригинал
Ладно, вот задачка которая не раз у меня возникала в работе (ну только "декорации" другие)

Задано время: час, минута. секунда. Часовая и минутная стрелки делят циферблат на 2 угла (сумма которых 360 градусов). Определить находится ли секундная стрелка внутри меньшего из углов.

Если найдете в гугле - покажите где (я не знаю)

Странная какая-то постановка задачи..

Я бы думал так:
Построил бы таблицу:

1 - 7
2 - 8
3 - 9
4 - 10
5 - 11
6 - 12
7 - 1
8 - 2
9 - 3
10 - 4
11 - 5
12 - 6

Этого даже избыточно, достаточно пол таблицы взять.
Вначале определяем час. Находим по таблице противоположное число. Если минутная стрелка меньше этого числа, то:
1) если секундная стрелка не добралась до минутной, то она нах. в меньшем угле
2) иначе в большем.

Ну и аналогично, если минутная стрелка больше того противоположного числа..

Как то так..

Короче для начала нужно функцию написать, которая бы по часам и минутам определяла бы то число, которое получилось бы, если часовую стрелку повернуть на 180 градусов. А уж зная его и положение минутной стрелки можно делать выводы где там секундная находится.

Я бы вообще обстрагировался от часов и минут и секунд.. Просто три угла и разная угловая скорость для каждого..  


Название: Re: Задачки
Отправлено: Igors от Ноябрь 22, 2012, 17:42
Igors, а чем можно оперировать?
Не понял.. Чем хотите

Я бы вообще обстрагировался от часов и минут и секунд.. Просто три угла и разная угловая скорость для каждого.. 
Ну абстрагируйтесь на здоровье, можно напр так: есть 3 вектора выходящие из точки (0, 0) на плоскости. Узнать лежит ли третий вектор "между" первыми двумя (т.е. внутри их угла <= 180) 


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 17:45
Igors, а чем можно оперировать?
Не понял.. Чем хотите

Я бы вообще обстрагировался от часов и минут и секунд.. Просто три угла и разная угловая скорость для каждого.. 
Ну абстрагируйтесь на здоровье, можно напр так: есть 3 вектора выходящие из точки (0, 0) на плоскости. Узнать лежит ли третий вектор "между" первыми двумя (т.е. внутри их угла <= 180) 

Я вот о чём:

Код
C++ (Qt)
inline bool is_less_angle(int hours, int minutes, int seconds) {
   static const double omega_1 = 2.0*M_PI/double(24*3600);
   static const double omega_2 = 2.0*M_PI/double(60*60);
   static const double omega_3 = 2.0*M_PI/double(60);
 
   int t_sec = hours*3600 + minutes*60 + seconds;
 
   double c1 = cos(omega_1*t_sec);
   double c2 = cos(omega_2*t_sec);
   double c3 = cos(omega_3*t_sec);
 
   ...
}
 

Всё ухожу.. Как приду, допишу.. Но думаю и так понятно?


Название: Re: Задачки
Отправлено: Igors от Ноябрь 22, 2012, 17:51
Всё ухожу.. Как приду, допишу.. Но думаю и так понятно?
Хмм... пока ничего содержательного я не увидел.
Хотя впрочем сачкануть и увильнуть от работы у научных работников в крови. Бросит эдак небрежно "мол, очевидно, элементарно" - и ушьется гулять с собачкой. А пахарь-программист потом все это разгребай  :)


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 22, 2012, 20:13
Всё ухожу.. Как приду, допишу.. Но думаю и так понятно?
Хмм... пока ничего содержательного я не увидел.
Хотя впрочем сачкануть и увильнуть от работы у научных работников в крови. Бросит эдак небрежно "мол, очевидно, элементарно" - и ушьется гулять с собачкой. А пахарь-программист потом все это разгребай  :)

Сейчас накатаю код.. моментик.


Название: Re: Задачки
Отправлено: m_ax от Ноябрь 23, 2012, 00:26
Или ещё проще:

Вектор v3 будет всегда лежать внутри острого угла между векторами v1 и v2 если выполняется условие:

sign([v1, v3]_z) == sign([v1, v2]_z) == sign([v3, v2]_z)

где [vi, vj]_z - z - компонента векторного произведения векторов vi и vj, а sign - знак.

Код
C++ (Qt)
template <class T>
struct vector2d
{
   vector2d(const T &_x = 1.0, const T &_y = 1.0)
       : x(_x), y(_y) {}
 
   T x;
   T y;
};
 
template <class T>
inline int sign(T x) { return (x >= 0) ? 1 : -1; }
 
template <class T>
inline bool is_contains(const vector2d<T> &v1, const vector2d<T> &v2, const vector2d<T> &v3) {
 
   int sign_v1_v2 = sign(v1.x*v2.y - v1.y*v2.x);
   int sign_v1_v3 = sign(v1.x*v3.y - v1.y*v3.x);
   int sign_v3_v2 = sign(v3.x*v2.y - v3.y*v2.x);
 
   return ((sign_v1_v2 == sign_v1_v3) && (sign_v1_v2 == sign_v3_v2));
}
 


Название: Re: Задачки
Отправлено: kambala от Ноябрь 23, 2012, 00:50
это называется левым поворотом если не ошибаюсь. например используется в методе Грэхема [построения выпуклой оболочки точек].


Название: Re: Задачки
Отправлено: Igors от Ноябрь 23, 2012, 09:05
Вектор v3 будет всегда лежать внутри острого угла между векторами v1 и v2 если выполняется условие:
Верно, только не "острого" а "внутреннего"

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

Однако для примера со стрелками часов есть и другое (более простое) решение  :)

 


Название: Re: Задачки
Отправлено: m_ax от Август 02, 2013, 19:56
Задачка:

Попугай, которому 110 лет, спросил старого крокодила: "Сколько тебе лет?" Крокодил, привыкший выражаться сложно и запутанно, ответил: "Мне сейчас в 10 раз больше лет, чем было тебе тогда, когда мне было столько же лет, сколько тебе ceйчас". Сколько лет крокодилу?)


Название: Re: Задачки
Отправлено: _OLEGator_ от Август 02, 2013, 20:17
200


Название: Re: Задачки
Отправлено: m_ax от Август 02, 2013, 20:27
200

Правильно, _OLEGator_ ;D


Название: Re: Задачки
Отправлено: _OLEGator_ от Август 02, 2013, 20:31
Задачка для 5 класса?)


Название: Re: Задачки
Отправлено: m_ax от Август 02, 2013, 20:32
Задачка для 5 класса?)

Да где то так, да..


Название: Re: Задачки
Отправлено: m_ax от Август 02, 2013, 20:41
Задачка для 5 класса?)

Да где то так, да..

Но есть и  посложнее (не 5-ый класс):

Некая община регулирует рождаемость детей следующим своеобразным способом: каждая пара родителей продолжает рожать детей до тех пор, пока не родится сын. Как только это случится, дальнейшее прибавление в семье прекращается. Каково соотношение между мальчиками и девочками в общине, если в обычных условиях, когда рождаемость никак не регулируется, 51% родившихся детей - мальчики?   


Название: Re: Задачки
Отправлено: Igors от Август 04, 2013, 06:20
Но есть и  посложнее (не 5-ый класс):
А 6-й  :)

Пусть есть 100 семей. Тогда пацанов тоже 100. А общее число детей

100 + 100 * 0.49 + 100 * 0.49 * 0.49 + ...

Суммв убывающей геометрической прогрессии S = 100 / (1 - 0.49). Итого пацанов все тот же 51%


Название: Re: Задачки
Отправлено: m_ax от Август 04, 2013, 10:10
Итого пацанов все тот же 51%

Правильно)


Название: Re: Задачки
Отправлено: deMax от Октябрь 17, 2013, 09:47
Есть доска 8х8 - из нее с противоположных углов вырезают две клетки. Есть доминушки размером 1х2. Как ими полностью замостить данную доску?
Никак, каждая доминошка всегда закрывает 2 клетки - черную и белую, а мы удали 2 черных/белых.

Цитировать
Некая община регулирует рождаемость детей следующим своеобразным способом: каждая пара родителей продолжает рожать детей до тех пор, пока не родится сын. Как только это случится, дальнейшее прибавление в семье прекращается. Каково соотношение между мальчиками и девочками в общине, если в обычных условиях, когда рождаемость никак не регулируется, 51% родившихся детей - мальчики? 
51%, так как хотят они дальше рожать или нет, а шансы появления мальчика не изменяются.