Интересные задачи по программированию и логике
Создана: 09 Августа 2009 Вск 17:07:11.
Раздел: "Интернет-флейм"
Сообщений в теме: 585, просмотров: 199026
-
просто Паха писал :тут математика примерно такая 1+2+3+..+n. как только сумма превысит нужное количество этажей - n и будет стартовая группа и минимальное количество бросков.
Это работает!
Но нет ли более "экономных" функций?
Пока минимум = 14. Кто меньше?
/Но, если задача задана типа на программирование, то Пахино решение не катит - в нём нет места программированию. Нееее, надо чтобы было что попрограммировать. Паха, извини, твоё решение никуда не годится!/ -
Лохмастерье писал :/Но, если задача задана типа на программирование, то Пахино решение не катит - в нём нет места программированию. Нееее, надо чтобы было что попрограммировать. Паха, извини, твоё решение никуда не годится!/
int s=0, n=0;
for(; s<100; n++) s+=n;
return n-1; -
А где героическое преодоление сложностей, где романтическое наматывание соплей на кулак, где титаническая борьба, где страх и ужас?!
+ Зачем для подсчёта суммы членов арифметической прогрессии чего-то программировать, когда есть формула суммы членов арифметической прогрессии?!
=========
Так...так..так... несите сюда ещё ваших задач. -
ну так сам же сказал, что надо программироватьЛохмастерье писал :+ Зачем для подсчёта суммы членов арифметической прогрессии чего-то программировать, когда есть формула суммы членов арифметической прогрессии?!
Лохмастерье писал :/Но, если задача задана типа на программирование, то Пахино решение не катит - в нём нет места программированию. Нееее, надо чтобы было что попрограммировать. Паха, извини, твоё решение никуда не годится!/ -
userlogoff wrote:
Раз уж пошел такой сыр бор, вот вам несколько задачек, уже конкретно на программирование. Они были опубликованы в одном журнале, название которого я напишу только после решения этих задачек )
Итак.
1) Дан набор файлов с именами, скажем, от 1 до 1000. Один из этих файлов удаляется. Нужно определить, какой именно.
2) Есть функция rndtwo(), равновероятно возвращающая однобитовое бинарное число (0 или 1). С помощью этой функции необходимо реализовать новую функцию rndthree(), которая равновероятно будет возвращать 0, 1 или 2.
3) Есть 2 одинаковых шара, сделанных из стекла. За какое мин. число бросков можно гарантированно определить, при падении с какого этажа стоэтажного здания шарики начинают разбиваться.
4) Задачка на знание unix-подобных систем. В каталоге /bin случайно была выполнена команда chmod -x chmod. Предложите варианты решения данной проблемы. Доступа к инету нет, ребут делать нельзя.
1) Ничего программистского.
2) Тоже ничего программистского.
3) Как ни вытягивал я эту задачу на программистскую (видит Бог, я старался), не вытянул - Паха из за угла дал просто под дых.
4) Тоже программированием не пахнет. Впрочем, в тексте честно написано "Задачка на знание unix-подобных систем."
userlogoff, чё там... решены задачи?
Кстати, хотел поиздеваться над тенденцией объявлять задачу программистской, если в тексте задачи слова "яблоко" заменяются на слова "файл", но обнаружил, что такая замена иногда делает задачу "программистской" (хотя бы чуть-чуть, хотя бы с натяжкой). Действительно, если у Буратины было 5 яблок, и 2 яблока он отдал, то у Буратины должно остаться 3 яблока. Но если у Буратины было 5 файлов, и 2 он отдал... -
не согласен. тут было три варианта программирования двух разных подходов к решению задачи.Лохмастерье писал :2) Тоже ничего программистского. -
просто Паха писал :
не согласен. тут было три варианта программирования двух разных подходов к решению задачи.Лохмастерье писал ... :2) Тоже ничего программистского.
I) Увидел только два подхода - твой и Эрха. Остальное перепевки одного и того же. Твой вариант не катит - он не точен математически (но практически пригоден, и даже вне конкуренции, но тут всё-таки задача про сферический рандомайзер в вакууме, а не раельно работающий механизм, удовлетворяющий практические нужды.).
II) Тут главное, всё-таки идея. А программирование пришито, поскольку так захотелось автору задачи.
Поставлю задачу по другому: "У вас в распоряжении правильная монета. Как с помощью этой монеты отмерить вероятность 1/3?". Это всё. Всё последующее - это искусственное натяжение чужой кожи на морду лица.
Не спорь со мной!
Рябина писала : Какие вы здесь все умные А Лохмастерье самый умный. С новым годом -
Лохмастерье писал :bouchon писал(а):
Ты расписал вариант с первоначальным шагом 2.
m=2 maxi=52
Не самый лучший вариант.
Я тебе говорю, что если ты скажешь, что можешь найти этаж меньше чем за 50 бросков и укажешь как ты собираешься это делать, я могу выбрать такой этаж, что ты разобьешь оба шара до того как его гарантировано его найдешь. Понимаешь ли, что если ты будешь бросать через n> 2 этажа, то так конечно быстрее, но это не ГАРАНТИРУЕТ, что ты найдешь этаж до того как разобьешь оба шара. А по условию ты должен обеспечить гарантию нахождения. -
Бушон, что-то ты не то говоришь
Двумя шариками легко находится при любом m. На примере первой m=10. 10, 20, 30, 40ой... На 40-м разбилось? Ок, погнали уточнять единицы 31,32,33 и т.д. Это ж вроде выше Паха предложил и несколько раз обмусолили?
Или ты о чем-то другом? -
Эрхафан писал : Бушон, что-то ты не то говоришь
Двумя шариками легко находится при любом m. На примере первой m=10. 10, 20, 30, 40ой... На 40-м разбилось? Ок, погнали уточнять единицы 31,32,33 и т.д. Это ж вроде выше Паха предложил и несколько раз обмусолили?
Или ты о чем-то другом?
Что такое m? Алгоритм бросания не зависит от того какой искомый этаж. Пусть этажей 100, я загадал этаж, но ты его не знаешь, предлагай с кого этажа ты будешь брасать первым, а я тебе скажу разбилось или нет, и посмотрим, угадаешь ли ты его меньше чем за 50 попыток гарантированно, то есть при любом варианте, что я загадал. -
просто Паха писал :
не согласен. тут было три варианта программирования двух разных подходов к решению задачи.Лохмастерье писал ... :2) Тоже ничего программистского.
Если просто разбирать чисто программирование... Бог с ней, с самой задачей.
Твой кунфу краше всех. Ибо даёт простой путь к написанию функции-рандомайзера на любое количество чисел (не покидая рамок сферически-вакуумного рандомайзера - код потребует минимальной переделки). Глядеть любо-дорого, даже охватывают эстетический шок и религиозный трепет.
Код Monk Albino:
Волосы на теле шевелятся, как представлю, что в таком же стиле надо будет писать функцию-рандомайзер генерящую числа от нуля до 666.
Нет потенциала для развития в функцию rnd_any(number)
Код Эрха:
Реализация идеи. Для rndthree() вполне. Правда, код загадочен - непосвящённому трудно догадаться, за что идёт борьба. Потенциал - то же самое, что у Monk Albino
Код userlogoff: (на сладкое)
Похоже, userlogoff сделал то же самое, что и Эрх. Только более солидно.
Но усиленно отвергал идею Эрха, по сути ею же и пользуясь. "Мы бьемся насмерть во вторник за среду, не принимая уже четверга". -
-
я уже привёл универсальный алгоритм для любого количества этажей и двух шаров. подход такой: берём группу m этажей. кидаем с последнего этажа этой группы и если он разбился, начинаем кидать с первого этажа этой группы, последовательно приближаясь к последнему. в худшем случае будет m попыток. если на последнем этаже группы шар таки не разбился, то берём следующую группу из m-1 этажей. -1 потому, что на предыдущей группе одна попытка уже израсходована. сумма всех таких групп должна быть равна или больше количества этажей. при 100 этажах самая большая группа - 14 этажей и это число есть решение задачи.bouchon писал(а) :Что такое m? Алгоритм бросания не зависит от того какой искомый этаж. Пусть этажей 100, я загадал этаж, но ты его не знаешь, предлагай с кого этажа ты будешь брасать первым, а я тебе скажу разбилось или нет, и посмотрим, угадаешь ли ты его меньше чем за 50 попыток гарантированно, то есть при любом варианте, что я загадал.