Интересные тестовые задания
Предлагаю в этой теме делиться интересными тестовыми заданиями, уже просто раздумывание над которыми даже без единой строчки кода — полезно.
Просьба не путать:
с олимпиадными задачками,
из области численных методов
из фич языка или окружения
из узкоспециализированных предметных областей
Мне помнится вот это:
Маленький Эксель
Необходимо реализовать простую электронную таблицу в виде программы, выполняющейся из командной строки. Она должна уметь обрабатывать ячейки таблицы как и более продвинутые аналоги, только с упрощенным синтаксисом выражений. Каждая ячейка может содержать:
— Ничего
— Неотрицательное целое число
— Текстовые строки, которые начинаются с символа ’
— Строки-выражения, которые начинаются с символа ’=’ и могут содержать неотрицательные целые числа, ссылки на ячейки и простые арифметические выражения. Скобки запрещены, у всех операций одинаковый приоритет.
Ссылки на ячейки состоят из одной латинской буквы и следующей за ней цифры.
Эти ограничения введены для упрощения разбора выражений, поскольку разбор выражений не является основной частью проблемы. Вы можете спокойно положиться на эти ограничения. Вот грамматика содержимого ячейки:
expression ::= ’=’ term {operation term}*
term ::= cell_reference | nonnegative_number
cell_reference ::= [A-Za-z][0-9] —
operation ::= ’+’ | ’-’ | ’*’ | ’/’
text ::= ’\’’ {printable_character}
Процесс обработки:
— Все выражения должны быть заменены на вычисленный результат.
— Все вычисления выполняются с помощью целочисленной арифметики со знаком.
— Ячейки с текстом должны быть вычислены как соответствующий текст без префикса ’.
— Операции над строками текста запрещены.
— В случае любой ошибки вычисления формулы, вычисляемая ячейка должна содержать слово-сообщение об ошибке, начинающееся с символа ’#’. Используйте короткие, ясные сообщения. Не надо предоставлять подробности об ошибках в выводе.
Программа должна использовать только стандартные библиотеки и классы и не должна вызывать сторонние программы, библиотеки или системные компоненты.
Ввод и вывод
Программа получает описание таблицы с формулами из стандартного ввода, вычисляет ее и печатает полученный результат в стандартный вывод. Входные данные представлены таблицей, элементы строк которой разделены табуляциями.
Первая строка содержит пару чисел, разделенных табуляцией — высоту и ширину таблицы, соответственно. Затем идут строки с ячейками таблицы, в грамматике, приведенной выше.
Выход должен содержать только ожидаемую информацию, включая сообщения об ошибках, и никакой другой информации в выводе не должно быть, включая и welcome text. Выход должен быть отформатирован в соответствии с приведенным ниже примером.
Пример данных:
3 4
12 =C2 3 ’Sample
=A1+B1*C1/5 =A2*B1 =B3-C3 ’Spread
’Test =4-3 5 ’Sheet
Ожидаемый вывод:
12 −4 3 Sample
4 −16 −4 Spread
Test 1 5 Sheet
Указания по решению
Необходимо промышленное качество кода. Более короткое и читаемое решение предпочтительней. Решение должно содержать тестовые примеры и код, использованные в процессе создания решения. Не забудьте откомментировать код в ключевых местах. Код должен быть устойчив к ошибкам.
Представьте, что это требования к первой фазе проекта. Необходимо реализовать только то, что нужно на этой фазе. Однако, известно, что планируется вторая фаза, в которой требования будут расширены следующими:
— Расширить формулы операциями над строками,
— Оптимизировать производительность для громадных таблиц.
Вам необходимо будет указать, какие изменения необходимо сделать для реализации второй фазы проекта.
thesz.livejournal.com/280784.html
112 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівСам делал такое — github.com/...v/ball_path_lnx
Эта задача от Самсунг требует найти наикратчайший путь в лабиринте (если таков имеется).
Использовался алгоритм Ли, или Волновой алгоритм.
Реализация алгоритма моя собственная (то есть код написан мною), на Си, полностью работоспособен только для Linux.
P.S. в списке файлов на ГитХаб есть полное описание задания от авторов.
И что? Взяли с таким кодом? %)
Нет. Не взяли.
P.S. даже не хочу и думать, что Вы могли иметь ввиду под местоимением «таким» (так как Вы второй человек — после меня, который видел этот код, а о спецах из Самсунг я не уверен, что они даже распаковывали архив с проектом).
Та не обращай внимания. Пользу может принести только конструктивная критика. А они назвали причины, почему не взяли, что не устраивает? Знаю, что с этим туговато. Отказ идет, а соискателю остается только гадать на кофейной гуще что он не так сделал и над чем поработать.
«Вы не справились с заданием». Вполне конструктивная критика. Что на это возразишь?
Классическая шаблонная отмазка. Никакой обратной связи. Печальбеда :(
В тоже время интересно знать мнение людей незаинтересованных, как тех, например, которые проверяет посты в этой теме. Но никто не будет тратить время на полный разбор кода.
Глянул и я твой код. Вчера ознакомился с волновым алгоритмом, даже свою реализацию запилил на гитхаб. Пожалуй, соглашусь с Майком. Ты чересчур усложнил задачу. Я тоже без спец. образования, хочу вот стажером\интерном устроиться. Могу подсказать парочку книг: Р. Хаггарти «Дискретная математика для программистов», по C\C++ - Stephen Prata, Ivor Horton, Deitel. Особенно понравилась Ivor Horton «Beginning C++».
а вчера как раз нашел вот эту: Максим Владимирович Мозговой «Занимательное программирование», там волновой алгоритм описан просто и понятно.
покажи свой волновой алгоритм
github.com/...s/tree/master/wavetracing Черновой вариант, комменты детальные и пару дополнительных функций допишу чуть позже. Язык C. Координаты волнового фронта храню в связанном списке, по моему, это лучше, чем прочесывать все точки на каждой итерации. Да, я знаю, что нужно добавить некоторые проверки и немного доделать. Пока как есть. Адекватная критика приветствуется.
ну код попроще написан чем у предыдущего оратора, немного не понял я что такое wavefront и wave вначале. wave — это типа список координат которые прошлый раз поменяны были, а wavefront — это новый список координат который счас меняем. Что бы это понять пришлось потратить 30 минут и раз 20 пересмотреть код — нада бы или имена понятные давать типа (this_step_list, prev_step_list) или комменты писать. вначале не мог еще понять че все описанно в структурах и функциях но потом увидел что это чистый С, в с++ легче было бы абстаркцию замутить с классами. Ну и последний коммент — функция должна вернуть что то в мейн программу 0 или 1 или еще что то а мейн программа должна уже по результату или выводить позитивный ответ или негативный, или распечатку делать. А вообще код мне лично нравится- четко пошагово логика описанна, списки подцепленны, можна читать и понимать что делается.
п.с. мене от більше цікавить, що в *.h файлі робить реалізація, і як її там хтось знайшов :))
Ну, якщо коду небагато, ніхто не забороняє тримати реалізацію в хедері, наскільки я знаю.
stackoverflow.com/...in-header-files
*перша лінка в гуглі — як не дивно ;)
Прийму до уваги, дякую.
О, наконец-то я получил хоть какую-то оценку, спасибо что посмотрели код. Замечания приму к сведению, знаю, что есть еще над чем работать.
Спасибо, книги посмотрю!
я не зарабатываю программированием на с++, но кое что в с++ знаю. Твой код — это просто жопа. Начиная от dmap — которое непонятно что значит и заканчиваю постоянными дебагами. или вот эта штука dmap_coor_seq — как узнать что эта хрень значит ? или вот это dmap_prps — это ж делает код нечитаемым вообще.
Ты видел код glibc? Если ты можешь читать чужой код — такие вопросы не к месту (а вернее мимо кассы). По смыслу должно быть понятно, что это относится к свойствам карты препятстсвий... И вообще, я хочу посмотреть на ваше решение за 2 часа той задачи от Самсунг, которую я делал! Связанные списки, деки, XOR-списки, все, что угодно — только результат должен быть такой же, как у меня: вы читаете файл, строите карту препятствий, ищите путь в лабиринте... Вперед, умники! Время пошло!
В жизни вообще редко случается то, что ты хочешь © %)
Вы окончательно развеяли сомнения в правильности решения Самсунга.
У glibc достаточно проблем не только со стилем сокращения токенов и их наименованием (fini, rtld, dl и т.д.), а еще и с жутчайшими memory leak.
Ваши комментарии, Майк, также пестрят «меткими» и «колкими» замечаниями, поэтому прекратите паясничать, и вместо пустого хвастовства, покажите мне реализацию такой же программы, как требует Самсунг.
Конструктивная критика у Вас закончилась...
Вот моя настольная книга тех времен:
www.4tivo.com/...impiady-po.html
Задача про выход из лабиринта там есть, временные рамки заданий вроде тоже указаны.
рекурсивно на бейсике или он рекурсию не поддреживал ?
Рекурсивный алгоритм был один из, только вместо стека использовался обычный массив и индекс внутри массива, куда мы положили последние данные с виртуального стека.
Все это — пустые слова. Мы говорим о реализации такой программы, как требует Самсунг, с таким же I/O, а не про реализацию алгоритма отдельно! Сам алгоритм — его формальная реализация, не накладывает ограничения на структуры данных и способ построения волны.
Код в студию, и все точки над «и» буду расставлены.
А пока — это всего лишь детские воспоминания!
Два разных способа? Их намного больше! Взять хотя бы лучевой алгоритм, метод обхода графа через поиск в глубину и еще куча алгоритмов над графами.
так самсунг таки тебя не взял ?
Причем здесь «плюсы»?
Конструктивная критика: overcomplicated код, простейшая задача должна иметь найпростейшее решение, имена функций неговорящие, вроде _dmap_prps_creat(), _path_fnder_alt(), зачем вводить свои типы STATUS_FIND, STATUS, STATUS_FILE? Очень много закомментаренного кода, разных #ifdef/#if, в тоже время нет нормальных комментариев. Вы не проверяете коды возврата fscanf() при парсинге файла, я бы посчитал это грубейшей ошибкой в данном тестовом задании. Решение простейшей задачи должно содержать минимальный лаконичный код. Вы же выдаёте релиз, поэтому в коде не должно быть несколько тонн закомментаренного кода. Просто подумайте, что ожидают увидеть люди, которые дают на двухчасовую задачу три дня.
Вы все-таки потратили время на чтение кода. Спасибо.
Практически всё верно подмечено, кроме одного — не существует объективного восприятия по поводу временных рамок для таких задач.
Почему Вы решили, что это простейшая задача — мне кажется, формализованный алгоритм еще не обозначает половину решения задачи. К тому же я был мало знаком с алгоритмами над графами (точнее не знаком вообще — образование у меня далековато от Компьютерных Наук).
Большую часть времени мне понадобилось потратить на изучение основных алгоритмов над графами, само кодирование и отладка заняли чуть более 1 дня.
Потому что решению этой задачи уже пол века стукнуло и она разобрана вдоль и поперёк. Это как пытаться быть сомелье и никогда не пробовать вино каберне.
Никто скидки из-за этого Вам делать не будет.
P.S. В целом, Ваш посыл мне понятен.
прочитать большой текстовый файл
построить по нему всякую статистику- частота встречаемости слов, знаков препинания и тп
ну в общем то классическая задачка на map reduce но об этом явно ни где не сказано.
Можно задать вопрос: на что Харон тратил деньги, которые ему души умерших несли?
Вкладывал в стартапы (Дирижабли, АЭС, зарин, etc.)
Спринты, доски, митинги — задеплоить всё, что в резерве :)
А программера — то зачем переправлять? Пусть живет и работает без этих двоих.
можно целое сочинение написать.
Три картинки на которых изображения отсканированных виниловых пластинок.
Картинка выглядит приблизительно так — черный фон, серая пластинка, на самой пластинке белая дорожка толщиной в пару пикселей. Цвет дорожки колеблется от белого до цвета пластинки (типа разная запись).
Задание — восстановить звук с пластинки. На входе получаем картинку. На выходе — звуковой файл на котором будет голосовая запись чисел. Количество чисел неизвестно, последние два числа — контрольная сумма всех чисел по модулю (конкретно не помню какому).
Пластинка может быть не идеально круглой.
P.S. Задание на Java Junior. Срок 4 дня.
P.P.S. Как потом сказали, это задание можно было сделать в офисе за 3 часа...
Кому интересно — прикреплю архивчик с заданием.
dl.dropbox.com/...ecords — LE.zip
Если интересно. Думаю нету смысла скрывать компанию =)
завидую джунам которые сделают это за 3 часа :)
А архив задачи у вас не остался ? :/
No-SQL БД с поддержкой кластеризации, подобия ACID и load balancer’а, срок — 1.5 месяца, язык написания — C\C++, ключевые требования: «Шоб работало и не падало».
Высрал кирпичный стадион в процессе чтения ТЗ и маленький глинообжигающий заводик в процессе реализации.
Не уверен, правда ли, но: выпускное задание выпускника одной из спецслужб — за день достать миллион долларов. Было давно, и по тому уже не уверен спецслужб ли, миллион ли... но суть запомнилась.
А почему бы и нет? Во время учебы выпускник спецслужбы уже небось поднаторел в подделке документов, печатей и всего такого. Что ему стоит зайти в банк и на несуществующее лицо, имея при себе все возможные рекомендации, оформить кредит на миллион долларов?
.... и отдать его за обучение :))
Деньги берутся из налогов :)
но отдать то все равно нужно ;)
Коментар порушує правила спільноти і видалений модераторами.
Простая задачка. Есть изображение, на изображении расположены квадраты и круги. Написать программу, которая подсчитает количество квадратов и кругов. Задачка простая, реально на час работы, но дается три дня на решение.
Что-то она не выглядит такой уж простой. Под изображением, вероятно, имеется в виду растр? Монохромное, цветное или в полутонах? Фигуры заполненные или только контур? Произвольна ли ширина контура? Могут ли фигуры пересекаться, выходить за пределы изображения? Возможны ли квадраты, повернутые на произвольный угол? Учитывается ли прозрачность? И чем, вообще, круг диаметром в один пиксел отличается от квадрата со стороной в один пиксел? Или тот, что радиусом в один пиксел от от квадрата со стороной в два пиксела?
Изображение монохромное или в серых тонах, только черный и белый цвета(0..255, bmp). Линии довольно четкие, шума и выбросов нет, фигуры заполненные, фигуры не могут пересекатся, не могут выходить за пределы изображения. Размер кругов и квадратов разный, но круги и квадраты геометрически правильные (эффект растеризации близок к нулю).
Вообще-то моя задачка описана намного лучше чем ваша, вашу с «„RFALNAQSCXICNIUGIZCEVRYUYBSYHMEJTUVKWRACEQLDX
MOXPMWGPWHPWMGRMGURFKUMUVSOLXDMJQZAOBJODHXT“ задают дуги направленного ациклического графа» я вообще не понял что вы хотите сказать.
«RFALNA...» = RF — дуга от R к F, AL — дуга от A к L, NA дуга от N к A, etc. Все они задают направленный граф без циклов.
Теперь ясно.
Вершины это буквы (всего 26 или сколько там букв, вершин), строкой задаются направленные дуги, где строку нужно порезать по 2 символа.
Что делать если AL встретился два раза в строке? Присваивать дуге вес 2 или как?
Кроме того решения задачи может не быть если граф не связный. А так решение: Алгоритм Дейкстры. Хотя у меня был генетический алгоритм, решающий подобную задачу на очень больших графах.
ru.wikipedia.org/...горитм_Дейкстры
upd Алгоритм Дейкстры
> Что делать если AL встретился два раза в строке?
Длина пути здесь просто определяется числом вершин, дуги не взвешены. Но два раза не встретится. Это тестовое задание с заведомо корректно сгенерированным входом. И циклов не будет, хотя в общем случае могли бы быть. На любой некорректный ввод достаточно реагировать сообщением об ошибке.
Алгоритм решения — не секрет, но это тест не для эрудитов, а для программистов, а потому имя алгоритма не является его решением. Подавляющее большинство разработчиков львиную долю времени тратят на реализацию и отладку решений, не предстваляющих собой ничего нового. Тем не менее, разброс результатов потрясает.
Если человек знает алгоритм то смысла уже нет в коде, максимум именование переменных и документированность посмотреть.
Хуже если он начнет реализовывать лисапед с кубической сложностью. На таком малом объеме оно будет работать за вменяемое время, но если он такое реализует в реальном проекте...
Вся прелесть в том, что вообще ничего не надо смотреть. Просто берется результат и сравнивается с эталонной строкой. Остальные детали имеют значение только при их совпадении, что происходит далеко не всегда.
Всегда умиляли такие люди которые за час-два решают подобные задачи. Создается впечатление что они не понимают о чем говорят. Что скажете насчет фигур с общими гранями, общими вертексами, которые самопересекаются, «выкушенные», вписанные, описанные и т.д.?
MOXPMWGPWHPWMGRMGURFKUMUVSOLXDMJQZAOBJODHXT» задают дуги направленного ациклического графа. Выдать кратчайший путь на графе в виде символьной строки.
Мне он понравился тем, что позволяет элементарным сравнением строк без хлопот проверить главное — умение за разумное время правильно решить компактно поставленную задачу. Если ответ верный, потом уж можно делать выводы относительно оптимальности алгоритма, стилистики кода и прочей лабуды вплоть до «умения мыслить», в зависимости от степени извращенности тестирующей стороны. Если нет, тогда извини.
у меня когда то было такое: дали ноут с установленым Еклипсом и надо было реализовать класс Version, чтобы поддерживались версии 1.0, 2.1.1.0, 1.1.1a ну и тесты на это дело. Мне кажется, неплохое задание
У остальных проще попросить показать какой-нибудь свой пет-проект.
Но хочу поделиться примером немного другого задания на собеседовании тех-лида.
Оно звучало так: сформулировать требования к уличной урне. Без всякого кодинга, просто написать на бумаге. Правильная постановка задачи — половина решения.
Попробуйте — это не так тривиально, как кажется. А потом посмотрите на существующие урны по городу и проверьте соответствие — выходит забавно.
а якщо такого пет-проекта нема ?
Может другой есть?
А вообще могут попросить написать что-нибудь. Меня как-то попросили написать задачу по расстановке доминошек в правильном порядке.
Тоже делал такую задачку.
Еще на первом в моей жизне собеседовании просили написать winform приложение с текстовым полем и двумя кнопками (добавить\удалить).
Первая кнопка добавляла в текстовое поле новый символ.
Вторая кнопка удаляла символы в обратном добавлению порядке.
Все символы должны бегать по текстовому полю от края до края, каждый со своей скоростью.
Скорость символа можно указать при добавлении
Если добавленно несколько символов то при встрече они отскакивают друг от друга так же как и от краев поля.
Реальную физику игнорируем, при ударе символ просто меняет направление и двигается дальше с той же скоростью.
Дополнительные требования:
Встроенная справка
Использовать отдельный поток для каждого символа
Логировать все действия пользователей
Логировать все соприкосновения символов между собой и со стенками.
Давали 3 дня.
При поиске работы программистом, неплохо бы сделать себе портфолио.
Смысла в задаче такой мало: гуглится за пять минут, без инета решается быстро теми, кто когда-то решал подобную задачу, т.е. результат будет заведомо нерепрезентативным. Кроме того, к реальной работе отношенияне имеет.
Отличный пример инженерного подхода!
Прямо:
— Ладно, — говорит молодой препод. — Последний вопрос: С какой скоростью должна бежать кошка, чтоб не слышать звука консервной банки, привязанной к ее хвосту?
— Со скоростью звука, — не задумываясь выпаливаю я, — 340 м/с.
— Идите, юноша, «4».
— ???
— Мы тут инженеров готовим, а не теоретических ученых. Тут думать практичнее нужно — кошка с такой скоростью не бегает. Т.е. правильний ответ — скорость должна нулю быть равна. Сидеть кошка просто должна!
ru.wikipedia.org/wiki/Бег
Издаёт ли банка звук когда находится в состоянии покоя?
пока абитуриент не видел, поворачивали графин с водой, чтобы теплая сторона была в тени. Предлагали пощупать, и видя его удивление — объяснить явление.
И радостно хвалили, кто не рассуждал об эффекте линзы и прочем, а — наверное его повернули?
Так что и в МГУ понимают важность умения мыслить практически.
Ситуации кстати очень схожие обычно. Студент на экзамене или при поступлении мало чем отличается от селянина впервые попавшего на ярмарку.
«Все самолёты включают реверс уже на земле. А АН225 „Мрия“ — на подлёте. Почему?»
Он вообще любил подобные вопросы. Один студент ему ответил — «Эти
русские всё делают по-своему». Так он послал на пересдачу.
Но реверс тяги включают при посаде чтоб уменьшить длину пробега по впп при посадке путем создания обратной силы тяги )а я думал там только боинги нужны
Так их — путать русских с украинцами — я бы тоже послал на пересдачу
Вообщем то это детище советское еще, как и другие самые достойные экземпляры. Из чисто украинского хвастаться особо нечем ни Мотор-Сичи и ЗМКБ Прогрессу, ни Антоновцам (оно то новое есть, но вот можно ли им хвастаться и приводить в качестве примеров). А так вообщем то не только нас путают, но и мы путаем, так проще. Вот недавно ехали в лифте, общались с женой по русски, зашла девушка в лифт и как услышала русскую речь так сразу радостно «о вы тоже русские», мы типа, ну да, мы с Одессы, а она — о а я с Сумм. Оказалось, что коллега-землячка, пишет диссер на физфаке.
Ок, я тогда тоже на пересдачу отправляюсь
А вообще авиация это круто жалко что у нас похерят это
уже почти ветка образовалась)
когда я учился в ХУПС2000-2005 преподователь по конструкции и прочности ат (очень уважаемый) говорил что 1 кг самолета = равен 1 кг золота
У него не было википедии. 1 кг А380 стоит 600 евро, а килограмм золота если я не путаю около 50 000 долларов. Так что почти в сто раз дешевле.
Это производство а облегчить уже готовую конструкцию )) Он бывшй полковник ВВС он свою работу любил знал что говори Таких уже не будет
А -аэробус на сленге арбуз )
Это цена одного продажного килограмма и самолёта и золота. Возможно в СССР соотношение было ближе, но надо иметь слабое представление о технологии, материалах и конструкции ЛА, чтобы делать подобные заявления. В некоммерческой авиации соотношение будет ещё больше. Например некоторые СЛА весят 500 кг, а стоят как 500 грамм золота То есть речь может идти о 1000 кратной разнице в цене килограмма конструкции и килограмма золота.
Это сравнение говорит скорее не о профессионализме а о неразделённой любви к небу.
сомниваюсь в этом деньги платятнет завес на земле а за вес в воздухе
Берёшь счёты, телефон. Звонишь в Аэрбас, потом на LME, спрашиваешь считаешь и растёшь сам над собой.
Преодолеть пространство и простор,
Нам разум дал стальные руки-крылья,
А вместо сердца — пламенный мотор.
( в более поздней версии —Нам Сталин дал стальные руки-крылья,...)
Припев:
Все выше, выше, и вышеСтремим мы полет наших птиц,
И в каждом пропеллере дышит
Спокойствие наших границ.
(В первоначальном тексте -И в каждом пропеллере дышит защита
спокойствия наших границ)
Бросая ввысь свой аппарат послушныйИли творя невиданный полет,
Мы сознаем, как крепнет флот воздушный,
Наш первый в мире пролетарский флот!
Припев.
Наш острый взгляд пронзает каждый атом,Наш каждый нерв решимостью одет;
И, верьте нам, на каждый ультиматум
Воздушный флот сумеет дать ответ!
Да, уж. Такую сказку сделали, что стыдно и горько будет ещё лет сто наверное.
Слышал эту историю. Авторство приписывается профессору МФТИ:
lectoriy.mipt.ru/...cturer/SMKozel
В оригинале звучало примерно так:
-------------
Лектор — известный физик КОзел. Он же, кстати, и задачник опубликовал, который используют почти во всех физматах экс-СССР.
Как-то на экзамене он незаметно повернул на 180 стоявший под ярким солнцем графин с водой, с стал спрашивать студентов, почему он теплей с комнатной стороны, а не с той стороны, с которой он освещается солнцем. Все начинали извращаться по теме преломления света, и по «selective absorption/emission» и получали неуд. Вдруг один студент, пощупав графин и задумавшись, сказал:
— Да какой-то козёл его развернул!
Профессор посмотрел на него грустным взглядом:
— Во-первых, не козёл, а КОзел. А во-вторых — правильно.
------------
pritchi.castle.by/ras-3-21.html
Они так и задумывались.
Что то ученик легко отделался в данной интерпритации. Обычно дело заканчивается избиением. Что то типа такого:
Однажды к мастеру шаблонов проектирования пришёлНичего не ответил мастер. Он молча встал, взял с вешалки учебный бокен и поколотил сенъёра. И тут снизошло на сенъёра просветление.
Кошка может начинать бежать с любой скоростью. После того как банка начнёт издавать звук, кошка не будет его слышать в течении времени, равного расстоянию от края банки до нервного окончания уха кошки, поделённого на скорость звука при окружающих параметрах атмосферы.
ну не надо перефразировать апорию «Ахилл и черепаха». :)
Пользователи тоже обычно не умеют корректно выражать то что они хотят от будущей программы. ;)
При чём здесь теория пределов в неверном пересказе )
Только аджайл, только хардкор! В каждый конкретный момент времени программа должна выполнять только конретные требования.
Да, могу дополнить, что кошка может бежать с любой скоростью, если рядом с ней (ну там 100м например) будет работать двигатель Д-18Т в своем номинальном режиме хехе. Тогда кошка уже никогда не услышит звук от косервной банки.
в общем надо брать старую, толстую, глухую кошку и не париться: шансы что побежит — близки к нулю, а если даже побежит, то все-равно ничего не услышит.
Это изменение условий задачи.
Как ещё один вариант правильного ответа можно допустить, что если кошка будет бежать с ускорением которое будет изменятся по синусоиде то банка может упасть на кошку при резком старте и соответственно некоторое время кошка не будет слышать шума банки.
Изначальный ответ кстати не только не инженерный, но и не правильный — даже если разогнать кошку до сверхзвуковой скорости, то она все равно будет слышать банку потому что веревка которой она привязана тоже проводит звук :)
Гениально, спасибо за идею.
Алгоритм, который решает любую судоку. Никаких уточнений, для меня задание звучало именно так.
SWI-prolog, 15 рядків: