Не иначе. Да самому прикинуть несложно. Попробую сверху оценить.
Солнечная постоянная: 1367 Вт/м². Предположим, что мы пользуемся ноутбуков вне атмосферы, развернув его крышкой перпендикулярно к направлению на Солнце.
Размеры ноута я нагуглил: 259×179,5 мм. То есть поверхность крышки 0.047 м².
Не знаю, что там за элементы в батарее, но допустим чудесное: что у них КПД 40%.
Получается, что с крышки поступает 25.5 ватта.
Для маленького ноута на атоме хватит с головой. Но это в идеальных условиях.
Относительно долго, по-видимому, просчитать всю симуляцию от начального состояния игры по списку действий. Не зря автор пишет про тестирование:
пока полдюжины машин просчитывают симуляцию
А вот передать текущее состояние игры — это, по сути, передать файл сохраненки (который, рискну предположить, весит мегабайты, на край десятки мегабайт).
Это могло бы выглядеть так: у всех игроков картинка останавливается, на экран вываливается BSOD табличка вида «Опс! Вася выпал из игры. Подождем, пока Вася синхронизируется (две с половиной минуты) или ну его?». В зависимости от настроек, да хоть голосования принимается решение на синхронизацию, все идут пить чай и курить, а Вася тем временем получает десяток, да хоть сотню мегабайт текущей сцены. Посредством p2p сцену можно раскроить на части от разных игроков и заполнить Васе весь канал, тут даже докурить не успеешь.
То же самое и для подключения нового игрока.
В общем, не похоже, чтобы это было сложно реализовать, и такая функция была бы затребована многими. Уж лучше подождать, чем всю игру похерить.
Да никто их и не держит. О том и речь, что выбирать нужно в том числе и по вычислительной сложности.
Более того, если соискатель наизусть помнит O(N) для пузырьковой сортировки, а не рассчитывает ее на месте — так это ему минус, а не плюс. В том смысле, что нужно не помнить, а думать.
Полностью согласен, конкретные значения O(N) для алгоритмов мало интересуют и соискателя, и интервьюера. И если человек хороший, но не в курсе теории сложности вычислений, то и хрен с ней — научится.
А научиться придется — одно дело, когда программиста берут писать десктопную обертку вокруг базы данных, какую-нибудь систему заказа билетов в кинотеатре, и другое дело — когда берут на хайлоад, на решения, которые будут (и должны) масштабироваться на сотни-тысячи серверов. Тут уже человек должен со старта ответить, почему считать ряд Фибоначчи через рекурсию нехорошо.
Насчет HashMap — я часто задаю на собеседованиях вопрос, как устроен (или как соискатель написал бы) ассоциативный массив. И когда человек в своих рассуждениях доходит до коллизий, то вопрос сложности получения значения решается сам собой.
Сильно надеюсь, что этот затык уже решили. Надо будет протестировать последние версии.
На скорую руку хотел закинуть бенчмарк в браузер, но тут облом: в ECMAScript принудительно установили, что \d всегда есть [0-9]. Так же, как \w всегда [0-9a-ZA-Z_]. Что, вообще говоря, для юникода неправильно.
Э, в чем проблема? В чем повод для иронии? Конечно, я лучше знаю, в чем моя задача, но описать ее в комментариях займет много времени. Может, я отдельный топик потом напишу, это интересная штука. И она действительно более касается расстояния Левенштейна, чем collaborative filtering.
Или вы в телепатии упражняетесь? С такими талантами люди в саппорте нужны.
Моя аватарка какбе намекает, что про скорость регулярных выражений я знаю достаточно %)
И кстати, это узкое место в очень многих задачах, только не все замечают.
Например: /[0-9]/ для utf-8 строки может быть медленнее, чем /\d/ в 60 (!) раз. Кроме шуток.
Вчера — когда подбирал регулярки для рерайтов в нжиникс.
Три дня назад — когда думал над алгоритмом поиска и хранения подобных элементов (нечто вроде расстояния Левенштейна, или, проще говоря, нечто вроде списка похожих товаров на сайте магазина).
Солнечная постоянная: 1367 Вт/м². Предположим, что мы пользуемся ноутбуков вне атмосферы, развернув его крышкой перпендикулярно к направлению на Солнце.
Размеры ноута я нагуглил: 259×179,5 мм. То есть поверхность крышки 0.047 м².
Не знаю, что там за элементы в батарее, но допустим чудесное: что у них КПД 40%.
Получается, что с крышки поступает 25.5 ватта.
Для маленького ноута на атоме хватит с головой. Но это в идеальных условиях.
И тут же под звездой:
Я удивляюсь, где они взяли освещенность в шесть с половиной миллионов люксов. На экваторе в полдень будет всего тысяч сто.
А если взять обычную освещенность в комнате…
Это ж сколько покупателей найдется на домены bo.ss, ko.ss, ma.ss, stre.ss, kick-a.ss и так далее.
Но проклятый Гитлер и тут им подгадил %)
Относительно долго, по-видимому, просчитать всю симуляцию от начального состояния игры по списку действий. Не зря автор пишет про тестирование:
А вот передать текущее состояние игры — это, по сути, передать файл сохраненки (который, рискну предположить, весит мегабайты, на край десятки мегабайт).
Это могло бы выглядеть так: у всех игроков картинка останавливается, на экран вываливается
BSODтабличка вида «Опс! Вася выпал из игры. Подождем, пока Вася синхронизируется (две с половиной минуты) или ну его?». В зависимости от настроек, да хоть голосования принимается решение на синхронизацию, все идут пить чай и курить, а Вася тем временем получает десяток, да хоть сотню мегабайт текущей сцены. Посредством p2p сцену можно раскроить на части от разных игроков и заполнить Васе весь канал, тут даже докурить не успеешь.То же самое и для подключения нового игрока.
В общем, не похоже, чтобы это было сложно реализовать, и такая функция была бы затребована многими. Уж лучше подождать, чем всю игру похерить.
Более того, если соискатель наизусть помнит O(N) для пузырьковой сортировки, а не рассчитывает ее на месте — так это ему минус, а не плюс. В том смысле, что нужно не помнить, а думать.
А научиться придется — одно дело, когда программиста берут писать десктопную обертку вокруг базы данных, какую-нибудь систему заказа билетов в кинотеатре, и другое дело — когда берут на хайлоад, на решения, которые будут (и должны) масштабироваться на сотни-тысячи серверов. Тут уже человек должен со старта ответить, почему считать ряд Фибоначчи через рекурсию нехорошо.
Насчет HashMap — я часто задаю на собеседованиях вопрос, как устроен (или как соискатель написал бы) ассоциативный массив. И когда человек в своих рассуждениях доходит до коллизий, то вопрос сложности получения значения решается сам собой.
Беда в том, что до коллизий не все доходят.
Сильно надеюсь, что этот затык уже решили. Надо будет протестировать последние версии.
На скорую руку хотел закинуть бенчмарк в браузер, но тут облом: в ECMAScript принудительно установили, что \d всегда есть [0-9]. Так же, как \w всегда [0-9a-ZA-Z_]. Что, вообще говоря, для юникода неправильно.
Правда, зависит от сборки. Как раз поведение \d в последние годы меняют от версии к версии. Обсуждается еще.
Очень хочется выбрать пару дней и подробно расписать про тонкости TRIEC-EXACT, ANYOF и символьных классов в pcre. Но это ж надо найти время… %)
Или вы в телепатии упражняетесь? С такими талантами люди в саппорте нужны.
И кстати, это узкое место в очень многих задачах, только не все замечают.
Например: /[0-9]/ для utf-8 строки может быть медленнее, чем /\d/ в 60 (!) раз. Кроме шуток.
Вчера — когда подбирал регулярки для рерайтов в нжиникс.
Три дня назад — когда думал над алгоритмом поиска и хранения подобных элементов (нечто вроде расстояния Левенштейна, или, проще говоря, нечто вроде списка похожих товаров на сайте магазина).
Если соискатель готов скорее сдохнуть в муках, чем ответит просто «я не знаю» — то пусть уж действительно сдохнет в муках %)
Искренность — наиболее ценимое мною качество в сотрудниках.