Плохие аналогии подобны котёнку с дверцей. Куда пошлёт вас нанятый вами, ЖЭКом, сантехник, когда вы предложите ему купить себе весь инструмент самостоятельно, хоть ключи хоть плоскогубцы.
И вы ещё не распробовали ценность удалённой виртуальной машины. Сколько ядер и мозгов доступно вам на вашем ноутбуке, и сколько - на ферме. Сколько нервов потратили интеграторы, чтобы у всех разработчиков были одинаковые версии компиляторов и библиотек. Как часто делаете бэкап вы на своём ноутбуке, по сравнению с виртуалкой.
Ну мы же вроде договорились, что задача без заподлянок в виде 11 адресов, отличающихся в единственной компоненте.
Смысл выбора пробы по наиболее равномерному распределению размеров классов - в том, чтобы как можно сильнее сузить пространство в самом худшем случае. И неважно, этот худший случай "не совпало ничего" или "совпало 3 из 5". А не выбирать такую пробу, у которой именно класс "не совпало ничего" самый большой.
В принципе, можно запустить моделирование. Взяли какую-то стратегию и применили её ко всем 100 адресам. Если вписались в ограничение в 10 попыток, - это дерево решений считаем удачным. Если для каких-то веток дерево слишком высокое, то находим узел, из которого растут высокие ветки, и делаем в нём другую пробу (следующую по предпочтению в нашей стратегии). И убеждаемся, разумеется, что классы эквивалентности там получаются другие, иначе смысла нет менять шило на мыло. Да, в худшем случае это NP-полная задача.
(немножко накосячил: результат пробы - это величина, противоположная расстоянию Хэмминга, то есть, "5" соответствует расстоянию 0, все компоненты равны)
Пусть у нас есть метрика d(a,b) - расстояние Хэмминга между двумя адресами-кортежами.
Изначально множество адресов S состоит из всех 100 штук.
Для каждого адреса a из S строим табличку: H[a][m] = {b : d(a,b) = m}
Выбираем такой адрес a1, для которого разбиение на классы эквивалентности по расстоянию до него наиболее равномерно. (Ну понятно, что для любого a, H[a][5] = {a}, поэтому этот класс мы учитывать не будем).
Для каждого адреса из S (не из S1) снова строим табличку H1[a][m] = {b in S1 : d(a,b) = m}. Проще говоря, оставляем в классах в H только те, что лежат в S1. Ключами по-прежнему являются все адреса.
Опять же, выбираем такой a2, для которого разбиение на классы в H1 наиболее равномерно.
Пусть у нас первые четыре компоненты - по 10 уникальных значений, а пятая - все 100 (сквозная нумерация всех адресов). Четыре компоненты задают 4-значные десятичные числа, то есть, там возможна 1000 вариантов. Но чисел всего 100 штук.
Любой запрос даст нам либо ответ "5" (полное совпадение), либо - от 0 до 3. Ответ "4" не может быть, так как это означало бы, что либо пятая компонента совпала, а какая-то другая нет, либо четыре первых совпали, а пятая нет, то есть, сломана сквозная нумерация.
Поэтому пятую компоненту можно просто исключить из рассмотрения, и свести задачу к "угадай 4-значный адрес".
Предположим, что "угадай 5-значный адрес (строго десятичный) за 10 попыток" - заведомо решаемая задача. В таком случае берём наши 4-значные адреса и добавляем к ним хаотично пятые цифры. Мы свели задачу к известной. Следовательно, "угадай 4-значный адрес" также заведомо решаемая.
Следовательно, существуют наборы адресов со 100 уникальными квартирами, для которых решение всё ещё есть.
Если адреса с точностью до дома уникальны - решение (видимо) есть
Если адрес с точностью до дома одинаков для всех - решения точно нет
Эти две границы можно, наверное, ещё как-то сузить.
Не знаю, что посоветовал бы, но точно отсоветовал бы все эти.
Урбанизм - это, по-русски, всё про градостроительство. Ни вопросы макроэкономики России, ни пенсионного фонда Канады (!!!) (https://habr.com/ru/articles/929772/) к нему не относятся.
Ещё одна статья галопом-по-европам с оторванными онт жизни примерами GoF вперемешку с чисто питоньими штуками.
Почему декоратор проиллюстрирован питоньим декоратором, а не вот этими всеми абстрактными классами... А фабрика - наоборот, по-явовски, вместо того, чтобы натрюкачить с метаклассом?
Если задача автора была показать паттерны - то надо было перевести примеры из GoF на питон, как есть. Если показать питон - то надо было объяснять, какие вещи в питоне делаются с поддержкой ядра языка (те же итераторы, например), а какие придётся рукоделить.
А главное, - зачем вообще надо эти паттерны воплощать.
Вот, например, итератор - это жизненная необходимость для любых коллекций, чтобы доступ к ним был унифицирован (синтаксис for и стандартная библиотека - min, map, itertools и всё такое). То есть, это требование языка, а не требование архитектуры приложения или предметной области.
И то, - с одной стороны, последовательный доступ, а с другой - прямой (по ключу или индексу). Почему не проиллюстрировано, а?
На отделе кадров лежат две задачи - подбирать эти кадры и сопровождать их.
Сопровождать - это вот "проверить, оформить, и т.д."
Подбирать - в СССР сводилось к вывесить плакат "заводу требуются" и ждать. А на самом деле, подбором занимались кто угодно как угодно, кроме отдела кадров. По знакомству, по распределению из пту и институтов, по воле случая.
Сама обстановка позволяла сидеть на попе ровно. Вот назначат тебе молодого специалиста по приказу из министерства, и что ты будешь делать? Хоть огонь в глазах, хоть тоска смертная, хоть уже пострелял глазами по сторонам, чего бы половчее украсть с территории...
А сейчас не СССР.
Кадровый голод предприятия должно утолять само предприятие. Не будет жалом водить по рынку труда, не насобирает никого. Будет грести широкой лопатой, насобирает джамуштов.
---
По поводу образования.
Как вы считаете, что, например, менеджер по закупкам - это нормальная профессия, и там есть место для какого-то профессионального обучения? Ну там юридические и экономические основы, теория и практика переговоров, товароведение, - чтобы знать, что именно покупать.
А менеджер по закупкам на рынке труда - это любой дурак справится? А чем рынок труда радикально отличается от рынка товаров и услуг? Ну вот мы и видим, что "любые дураки" и устраивают цирк с вахтёрами.
Ну вот мне стало неинтересно и я выгорел, дальше что? Хотите, чтобы я соврал, да? Хорошее начало новых отношений, начинающееся со лжи...
"Не умеет держать баланс". А ещё чего-нибудь на новопи... на этом псевдоэзотерическом можете сказать? Вы кого нанимаете, йогина, акробата?
Если вам нужна конкретика, так это ваша задача разговорить кандидата. А то мало ли какая конкретика. "Все новые конструкции из свежего стандарта я уже всунул в проект, они кончились, стало скучно"? или "утром на работу вечером домой, нет чтоб украл-выпил-сел-романтика"?
Справедливости ради, - в СССР была совсем другая ситуация на рынке труда. Даже если не смотреть на то, что компьютеров и компьютерщиков было исчезающе мало. Толпы сварщиков не бегали по отделам кадров заводов. Кадровый голод удовлетворялся тем, кого бог послал - кто прочитал на доске "заводу требуются..." и не поленился зайти.
А сейчас и айтишников дофига, да и сварщиков тоже. Купил в хозмаге полуавтомат, ютубчик посмотрел, присрал ворота к забору - всё, можно себя называть сварщиком-джуном. Сходил на официальные курсы, всё - сварщик-мидл.
Кто-то же должен этот входной поток как-то разгребать.
И вот если айтишников разнообразно учат - от курсов "войти в ой-ти" до полноценного высшего образования, - то эйчары, похоже, занимаются самообразованием. Вот это - беда. А не вопрос востребованности или бесполезности этой рабочей специальности.
Единственное, на что похоже, чтобы было "примерно" - это ровно 1.8 морской мили. В футах или ярдах получается такая же 4-5-значная фигня.
Я хз, кто меряет глубину в морских милях, но от журналистов всего можно ожидать.
Откровенные идиоты - это какая возрастная категория?
Плохие аналогии подобны котёнку с дверцей. Куда пошлёт вас нанятый вами, ЖЭКом, сантехник, когда вы предложите ему купить себе весь инструмент самостоятельно, хоть ключи хоть плоскогубцы.
И вы ещё не распробовали ценность удалённой виртуальной машины. Сколько ядер и мозгов доступно вам на вашем ноутбуке, и сколько - на ферме. Сколько нервов потратили интеграторы, чтобы у всех разработчиков были одинаковые версии компиляторов и библиотек. Как часто делаете бэкап вы на своём ноутбуке, по сравнению с виртуалкой.
Ну мы же вроде договорились, что задача без заподлянок в виде 11 адресов, отличающихся в единственной компоненте.
Смысл выбора пробы по наиболее равномерному распределению размеров классов - в том, чтобы как можно сильнее сузить пространство в самом худшем случае. И неважно, этот худший случай "не совпало ничего" или "совпало 3 из 5". А не выбирать такую пробу, у которой именно класс "не совпало ничего" самый большой.
В принципе, можно запустить моделирование. Взяли какую-то стратегию и применили её ко всем 100 адресам. Если вписались в ограничение в 10 попыток, - это дерево решений считаем удачным. Если для каких-то веток дерево слишком высокое, то находим узел, из которого растут высокие ветки, и делаем в нём другую пробу (следующую по предпочтению в нашей стратегии). И убеждаемся, разумеется, что классы эквивалентности там получаются другие, иначе смысла нет менять шило на мыло. Да, в худшем случае это NP-полная задача.
(немножко накосячил: результат пробы - это величина, противоположная расстоянию Хэмминга, то есть, "5" соответствует расстоянию 0, все компоненты равны)
Эммм... А почему бы не пойти таким путём.
Пусть у нас есть метрика d(a,b) - расстояние Хэмминга между двумя адресами-кортежами.
Изначально множество адресов S состоит из всех 100 штук.
Для каждого адреса a из S строим табличку: H[a][m] = {b : d(a,b) = m}
Выбираем такой адрес a1, для которого разбиение на классы эквивалентности по расстоянию до него наиболее равномерно. (Ну понятно, что для любого a, H[a][5] = {a}, поэтому этот класс мы учитывать не будем).
Делаем пробу a1, получаем расстояние m1, получаем подмножество S1 = H[a1][m].
Для каждого адреса из S (не из S1) снова строим табличку H1[a][m] = {b in S1 : d(a,b) = m}.
Проще говоря, оставляем в классах в H только те, что лежат в S1. Ключами по-прежнему являются все адреса.
Опять же, выбираем такой a2, для которого разбиение на классы в H1 наиболее равномерно.
Делаем пробу a2, и так далее.
Неправда. Давайте построим такой же контрпример!
Пусть у нас первые четыре компоненты - по 10 уникальных значений, а пятая - все 100 (сквозная нумерация всех адресов).
Четыре компоненты задают 4-значные десятичные числа, то есть, там возможна 1000 вариантов. Но чисел всего 100 штук.
Любой запрос даст нам либо ответ "5" (полное совпадение), либо - от 0 до 3. Ответ "4" не может быть, так как это означало бы, что либо пятая компонента совпала, а какая-то другая нет, либо четыре первых совпали, а пятая нет, то есть, сломана сквозная нумерация.
Поэтому пятую компоненту можно просто исключить из рассмотрения, и свести задачу к "угадай 4-значный адрес".
Предположим, что "угадай 5-значный адрес (строго десятичный) за 10 попыток" - заведомо решаемая задача.
В таком случае берём наши 4-значные адреса и добавляем к ним хаотично пятые цифры. Мы свели задачу к известной. Следовательно, "угадай 4-значный адрес" также заведомо решаемая.
Следовательно, существуют наборы адресов со 100 уникальными квартирами, для которых решение всё ещё есть.
Если адреса с точностью до дома уникальны - решение (видимо) есть
Если адрес с точностью до дома одинаков для всех - решения точно нет
Эти две границы можно, наверное, ещё как-то сузить.
В статье вся вёрстка кода люто яростно поехала! Что это за
pythonКопироватьРедактироватьold_events
и т.п.?Если вы кодите так же, как статьи пишете, то... ну ээээ... ожидаемо.
я в детстве крону попробовал - думал, будет как две планеты, а оказалось, как собака за язык укусила!
лакричные конфетки же.
Купил себе MateBook X не-pro. Ретиновый экран, тачскрин, дофига памяти, и внезапно 1 type-c и 2 usb-A и hdmi.
Если б у него ещё чувствительность тачпада регулировалась, а то задолбало, что мышка иногда сама нажимается...
Не знаю, что посоветовал бы, но точно отсоветовал бы все эти.
Урбанизм - это, по-русски, всё про градостроительство. Ни вопросы макроэкономики России, ни пенсионного фонда Канады (!!!) (https://habr.com/ru/articles/929772/) к нему не относятся.
Зачем добавлены рандомные хабы? Что за абьюз структуры хабра?
Это ведь перевод с испанского, судя по виду ноутбука? Почему нет тэга "перевод" и ссылки на оригинал?
Ещё одна статья галопом-по-европам с оторванными онт жизни примерами GoF вперемешку с чисто питоньими штуками.
Почему декоратор проиллюстрирован питоньим декоратором, а не вот этими всеми абстрактными классами... А фабрика - наоборот, по-явовски, вместо того, чтобы натрюкачить с метаклассом?
Если задача автора была показать паттерны - то надо было перевести примеры из GoF на питон, как есть. Если показать питон - то надо было объяснять, какие вещи в питоне делаются с поддержкой ядра языка (те же итераторы, например), а какие придётся рукоделить.
А главное, - зачем вообще надо эти паттерны воплощать.
Вот, например, итератор - это жизненная необходимость для любых коллекций, чтобы доступ к ним был унифицирован (синтаксис for и стандартная библиотека - min, map, itertools и всё такое). То есть, это требование языка, а не требование архитектуры приложения или предметной области.
И то, - с одной стороны, последовательный доступ, а с другой - прямой (по ключу или индексу). Почему не проиллюстрировано, а?
На отделе кадров лежат две задачи - подбирать эти кадры и сопровождать их.
Сопровождать - это вот "проверить, оформить, и т.д."
Подбирать - в СССР сводилось к вывесить плакат "заводу требуются" и ждать. А на самом деле, подбором занимались кто угодно как угодно, кроме отдела кадров. По знакомству, по распределению из пту и институтов, по воле случая.
Сама обстановка позволяла сидеть на попе ровно. Вот назначат тебе молодого специалиста по приказу из министерства, и что ты будешь делать? Хоть огонь в глазах, хоть тоска смертная, хоть уже пострелял глазами по сторонам, чего бы половчее украсть с территории...
А сейчас не СССР.
Кадровый голод предприятия должно утолять само предприятие. Не будет жалом водить по рынку труда, не насобирает никого. Будет грести широкой лопатой, насобирает джамуштов.
---
По поводу образования.
Как вы считаете, что, например, менеджер по закупкам - это нормальная профессия, и там есть место для какого-то профессионального обучения? Ну там юридические и экономические основы, теория и практика переговоров, товароведение, - чтобы знать, что именно покупать.
А менеджер по закупкам на рынке труда - это любой дурак справится? А чем рынок труда радикально отличается от рынка товаров и услуг? Ну вот мы и видим, что "любые дураки" и устраивают цирк с вахтёрами.
Отдельный привет - тем, кто любит КДПВ в стиле офисный мемфис-экзорцизм. Это прямо красный флаг!!!
Ну вот мне стало неинтересно и я выгорел, дальше что? Хотите, чтобы я соврал, да? Хорошее начало новых отношений, начинающееся со лжи...
"Не умеет держать баланс". А ещё чего-нибудь на новопи... на этом псевдоэзотерическом можете сказать? Вы кого нанимаете, йогина, акробата?
Если вам нужна конкретика, так это ваша задача разговорить кандидата. А то мало ли какая конкретика. "Все новые конструкции из свежего стандарта я уже всунул в проект, они кончились, стало скучно"? или "утром на работу вечером домой, нет чтоб украл-выпил-сел-романтика"?
Справедливости ради, - в СССР была совсем другая ситуация на рынке труда. Даже если не смотреть на то, что компьютеров и компьютерщиков было исчезающе мало. Толпы сварщиков не бегали по отделам кадров заводов. Кадровый голод удовлетворялся тем, кого бог послал - кто прочитал на доске "заводу требуются..." и не поленился зайти.
А сейчас и айтишников дофига, да и сварщиков тоже. Купил в хозмаге полуавтомат, ютубчик посмотрел, присрал ворота к забору - всё, можно себя называть сварщиком-джуном. Сходил на официальные курсы, всё - сварщик-мидл.
Кто-то же должен этот входной поток как-то разгребать.
И вот если айтишников разнообразно учат - от курсов "войти в ой-ти" до полноценного высшего образования, - то эйчары, похоже, занимаются самообразованием. Вот это - беда. А не вопрос востребованности или бесполезности этой рабочей специальности.
одни люди делятся, а другие размножаются