Интересные задачи по программированию и логике
Создана: 09 Августа 2009 Вск 17:07:11.
Раздел: "Интернет-флейм"
Сообщений в теме: 585, просмотров: 198239
-
читайте внимательнее условия и подсказки. -
Как правило, у программистов все задачи сводятся к математике.
Криптография - тоже математика...
Ладно, не будем разводить демагогию на эту тему. Лучше сконцентрируемся на последней задаче про шарики. -
userlogoff писал :
у вас жестко детерминированный подход ака "сложение в двоичной системе". Ага, если 00, то 0, а если 10 то уже 2. А я, к примеру, хочу чтобы по 00 была двойка.
—-
Обозначьте так, как пожелаете. Это ж не имеет никакого значения - какая комбинация какому числу будет сопоставлена.
Экий жесткач. Да Вы, я гляжу, тоже могёте усложнить простое -
а ещё можно менять эти привязки от итерации к итерации функции - запоминать глобально текущую ситуацию и в очередной раз использовать другую комбинацию.Лохмастерье писал :Обозначьте так, как пожелаете. Это ж не имеет никакого значения - какая комбинация какому числу будет сопоставлена. -
просто Паха писал : про шарики пришло в голову решение первый шар пустить в ход с каждого десятого этажа, а вторым уточнить единицы. но это не самый эффективный метод.
Не, такой подход сразу отметается. -
просто Паха писал : про шарики пришло в голову решение первый шар пустить в ход с каждого десятого этажа, а вторым уточнить единицы. но это не самый эффективный метод.
это примерно как рассуждение про фотоны в предыдущих мессагах )))
Веселите с утра -
userlogoff писал :
3) Есть 2 одинаковых шара, сделанных из стекла. За какое мин. число бросков можно гарантированно определить, при падении с какого этажа стоэтажного здания шарики начинают разбиваться.
Напрягают меня небоскрёбы. Положим наш небоскрёб на землю. Шары тоже пугают.
В общем так - в последовательности чисел от 1 до 100 начиная с числа n идут радиоактивные числа. Радиация зашкаливает. Дозиметры ломаются. Есть только два дозиметра. Как за мин. количество тестирований определить это пограничное число n? /Очко напоминает - в смысле, перебрал-проиграл/
Очевидно, что ответ не может звучать как "28 попугаев".
мин. количество тестирований = f(n) => Вменяемый ответ может выглядеть так: "28/n попугаев".
Очевидно, что n замеров - это верхняя оценка f(n) /при этом даже экономится один дозиметр/ -
userlogoff писал :у вас жестко детерминированный подход ака "сложение в двоичной системе". Ага, если 00, то 0, а если 10 то уже 2. А я, к примеру, хочу чтобы по 00 была двойка.
if-then - никто ж не отменял, подставляйте туда какие угодно значения
Я же просто пострался написать коротенький код самой фукнции - что-то вроде
Begin
f3:=3;
while f3=3 do f3:=random(1)+random(1)*2;
End;
(этот random(1) - эквивалентент функции выдающей на гора случайное значение бита)
Как-то так, извините, если не помню орфорграфию и синтаксис. Годы, куле... А TP я уже стёр. -
Очевидно, что мы имеем дело со множеством функций, из которого требуется найти минимальную. Причём эти функции можно классифицировать по алгоритмам. Мою функцию и функцию Пахи условно отнесу к линейным, надо же как-то их обозвать (есть некий шаг, затем более мелкий шаг длиной в единицу - в основе арифметическая прогрессия. Ну и как бы, тупая - потому и (прямо)линейная). Практически это всего лишь модификации одной и той же функции.
Не представляю, как доказать, что именно вот эта функция является минимальной, но в семействе линейных функций можно найти минимальную, и даже доказать, что она минимальна (в своём классе).
Дествительно, вот Паха взял с потолка шаг 10 (у меня спотолковый шаг =1). Шкурой чую, Пахина функция (f(n)= ([n/10] +1) + {n/10}) кошерней моей. А если бы, предположим, кто-то третий взял шаг 50 - опять же, чую, Пахина функция на коне.
Попробуем чуялки перевести в формулы (а там как начнём дифференцировать!)
Итак шаг m, пограничное число n
f(n)= ([n/m] +1) + {n/m}
Всё. Я всё сделал. Дифференцируйте по m, приравнивайте к нулю и ищите корень. А там уже и тюююю - ответ как на блюдечке.
Я пошёл квасить. -
ещё не вспоминал "дифференцируйте". пацан пока только в пятый класс ходитЛохмастерье писал :Дифференцируйте по m, приравнивайте к нулю и ищите корень. А там уже и тюююю - ответ как на блюдечке. -
просто Паха писал :пацан пока только в пятый класс ходит
Поставь ему компьютерных игр-тестов (матеметика, химия, физика) и квестов на английском - махом освежает знания -
Еще вариант
например настоящая монетка весит 2, фальшивая 1
расклад может быть в семи вариантах:
2-2-2-1-1-1-1
1-2-2-2-1-1-1
1-1-2-2-2-1-1
1-1-1-2-2-2-1
1-1-1-1-2-2-2
2-1-1-1-1-2-2
2-2-1-1-1-1-2
на одной чаше весов всегда взвешиваем первую и вторую монетку
на второй четвертую и пятую монетку
какая чаша легче, в той и будет фальшивка
если обе чаши одинаково весят (как во втором варианте расклада) то фальшивки будут следующие две монетки, после тех, что мы положили на вторую чашу весов