Комментарии 42
Запускаем отсчёт часами одновременно.
Как только маленькие часы отмеряют 4 минуты мы тут же их снова переворачиваем. В больших часах останется песка на 3 минуты, по истечении которых в маленьких часах песка останется на 1 минуту. В этой точке мы начинаем отсчёт 9 минут. После этого ещё 2 раза перевернуть маленькие часы. Итого 1 поворот, погрешность времени будет минимальна, хотя всё же будет из за поворота часов и способ не особенно удобный
Всё, что мы знаем о данных песочных часах — что весь песок в них пересыпается за 4 или 7 минут.
Ваше решение более верное, так как использует только факт общего количества времени в каждых часах, без применения «трюка» с переворотом больших часов на 1/7 пути.
Только почему тест на логику и разработку для мобильных, с названием термина mobile-first для веба?
Легко решается такими невнимательными людьми как я, достаточно не обратить внимание на "или поворачиваться", тогда C видит ребят с двумя белыми шапками, а зная, что разработчиков 4 (в задаче не сказано, что разработчики не знают) сразу становится понятно, что с белой шапкой разработчиков больше нет, значит С с черной.
Почему не смогут? D будет также молчать, т.к. видит только две шапки разного цвета. Это понимает C и по шапке B называет свой цвет
A — черная
B — черная
C — белая
D — белая
или
A — чёрная
B — белая
C — белая
D — чёрная
В условиях указано: шапок четыре, белых и черных поровну, то есть по две штуки. D видит две. Если они одинаковые, значит остались (в том числе у него) только противоположного цвета и он сразу говорит какого. Так как он молчит, значит те, что он видит (B и C) — не одного цвета. Если B и C не одного цвета, то C вполне достаточно цвета шапки B, чтобы сказать какого у него.
ЕМНИП в ответе ровно это и было написано.
Разработчики на своих местах сидят строго как показано на рисунке, они не могут перемещаться или поворачиваться.
Так ведь речь идёт только про ситуацию, указанную на картинке, а не про все возможные варианты распределения шапок.
И да, последний раз я писал код года два тому назад, на VBA. А если не на VBA, то лет 25 тому назад.
Если так проходят собеседования… Тряхнуть что-ли стариной, пойти поработать синьором в IT? :)
Задача с шапками в общем-то уже классика. Часы со стрелками, монетки… Элементарно.
Что мне не понравилось — так задача Эйнштейна. Когда-то я её делал (классе в девятом) и запомнил что на неё надо немало времени потратить. Ткнул наугад.
Мужчина покупает в магазине товар стоимостью 200 рублей. Не имея мелких денег, он дал продавцу купюру в 1 000 рублей. За разменом продавец обратился к своему коллеге из соседнего магазина (отдал соседу купюру в 1 000 рублей и получил ту же сумму мелкими). Так покупатель получил свою сдачу.
На следующий день второй продавец понял, что купюра фальшивая. Считая первого продавца виноватым, он пришёл к нему и вынудил обменять фальшивку на настоящую купюру.
Сколько денег в итоге потерял первый продавец?
200 – стоимость товара оплачена фальшивыми.
800 – сдача за товар настоящими.
1000 – компенсация фальшивых денег коллеге.
2000 получается.
Даже если считать, что себестоимость товара 0 рублей, всё равно получается 1800 (800 сдачи настоящими и 1000 компенсации коллеге).
Как же так 1000 получилось?
Про друга вообще можно забыть, это специальное усложнение. Предположим, сдача у вас была, а поддельную купюру у вас конфисковали в банке, спасибо, ментов не вызвали.
Вот и получается, что взамен на фальшивую тысячу вы отдали уроду 800р. сдачи и на 200р. товара. Итого — потеряли 1000р.
Продавец получил 1000р. от покупателя, баланс: +1000р. Разменял у друга: баланс всё ещё +1000р. Отдал товара на 200р., баланс: +800р. Отдал сдачу 800р., баланс по нулям.
На следующий день приходит друг, заставляет обменять фальшивку на настоящую купюру, баланс: -1000р. (плюс фальшивка, которая ничего не стоит)
Потеряли 1000р.
Утром друг приходит, отдаёт фальшивку и забирает 200 из кассы и 800 из кармана. Итого мы наличными отдали 1000 и 200 товаром покупателю. Значит потеряли 1200 рублей.
отдал товар за 200 и сдачу 800, в кассе
200 (!!!!) как у вас баланс по нулям то
становится???
Очень просто. Пришли утром, открыли магазин. У нас есть деньги в кассе и товар на полках — те же деньги.
Если мы продаём предмет за 200р., то отдаём его покупателю (-200р.), а он нам взамен платит его цену (+200р.)
в финале перечисляем всех участников и записываем их приход и расход:
мошенник: приход товар на 200р, расход 0
продавец: приход 0, расход товар на 200р + 1000р соседу
сосед: приход 0, расход 0
Я вас понял. Чтобы не ходить по кругу, ответьте, пожалуйста, на два вопроса.
Вот, предположим, в магазин зашёл мошенник, взял товар на 200р., дал фальшивую тысячную купюру, получил сдачу 800р. и был таков.
Сколько потерял продавец? Сколько приобрёл мошенник?
1) мошенник — унёс 800р сдачи и 200р товаром = 1000р, что эквивалентно номиналу фальшивой купюры
2) сосед — разменял фальшивую купюру, но её стоимость возместил = 0р
3) продавец — отдал реальными деньгами 800р сдачи и 200р товаром = -1000р
— фуф, спасибо за помощь.
Потери несет только тот, у кого последнего на руках осталась фальшивая купюра и ровно в объеме фальшивой купюры.
Относительно часов, кстати, есть часы, где часовая стрелка переключает час не плавно за минутной, а шагово — когда минутная стрелка пересекает границу 59-00. Так что не уверен, что вне контекста ответ в 0 градусов некорректен
Продолжая обсуждение вопросов — а кто-то вне Java до сих пор вообще использует Handler? Мне казалось, для него один раз пишут lambda обвязку и используют её, а в случае с котлином и вовсе launch(Dispatchers.UI)
Вопрос с шапками вообще моя любимая категория вопросов — когда оговариваются ограничения, но не оговариваются возможности, при этом нужно догадаться, какая именно возможность подразумевается задающим вопрос. Исходя из контекста, ответом вообще может быть любой, потому что в опенспейсе могут (и весьма вероятно) быть камера, и любой может позвонить дяде охраннику/кому-то ещё с доступом к камере и спросить цвет шапки:)
Л-логика! Нескучный тест на скорость для мобильных разработчиков