<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Математика и теория вероятностей</title>
    <description>Математика важна для программиста. Здесь вы найдёте математические задачи, тесты, статьи о роли математики в программировании и обучающие материалы.</description>
    <link>https://tproger.ru/tag/math-and-probability</link>
    <atom:link href="https://tproger.ru/tag/math-and-probability/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sun, 18 Oct 2026 00:11:26 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Математика и теория вероятностей</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Сложность сосредоточиться на работе объяснили математически</title>
      <link>https://tproger.ru/news/slozhnost-sosredotochitsya-na-rabote-obyasnili-matematicheski</link>
      <comments>https://tproger.ru/news/slozhnost-sosredotochitsya-na-rabote-obyasnili-matematicheski?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/slozhnost-sosredotochitsya-na-rabote-obyasnili-matematicheski</guid>
      <description><![CDATA[<p>Математическая модель рабочего дня показывает: частые отвлечения почти полностью убивают фокус, а небольшие изменения радикально повышают продуктивность</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/slozhnost-sosredotochitsya-na-rabote-obyasnili-matematicheski">Сложность сосредоточиться на работе объяснили математически</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Наука]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 01 Dec 2025 05:46:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Почти каждый <b>знает это чувство</b>: сидишь за компьютером весь день, а <b>к вечеру сложно вспомнить, что вообще успел сделать</b>.</p><p>Исследователь и инженер Нихил Линдерман решил <a href="https://justoffbyone.com/posts/math-of-why-you-cant-focus-at-work/">разобраться</a>, почему так происходит. Для этого он построил <b>математическую модель рабочего дня</b> на основе реальных данных об отвлечениях.</p><p>Вывод получился неприятным, но точным: <b>в современных офисах глубокая концентрация — редкость</b>.</p><p>Линдерман показывает, что на продуктивность влияют три параметра:</p><ul><li>как часто мы отвлекаемся (<b>λ</b>);</li><li>сколько времени нужно, чтобы снова «войти в поток» после каждого сбоя (<b>Δ</b>);</li><li>и какой минимальный непрерывный фокус-блок требуется для настоящей работы (<b>θ</b>).</li></ul><p>В простой визуализации восьмичасового дня видно: даже <b>при среднем уровне отвлечений</b> огромная часть времени уходит <b>не на работу</b>, а <b>на попытки вернуться в контекст</b>.</p><p>Часто за день получается только<b> один фокус-блок длиннее часа</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-12-01/5eed4e8e-1049-4bf0-9954-6bfbb75361c3.jpeg" alt="" /></figure><h2>Что показала модель: небольшие изменения дают мощный эффект</h2><p>Линдерман смоделировал сотни рабочих дней в разных условиях.</p><p>Оказалось, что стоит <b>уменьшить частоту отвлечений всего на единицу в час</b> и день начинает заполняться длинными «зелеными» периодами настоящей работы.</p><p>При <b>λ = 1</b> и <b>Δ = 10</b> минут глубокой концентрации возникает в разы больше, чем при <b>λ = 2</b> и <b>Δ = 20</b>. Не менее важен <b>параметр</b> <b>θ</b> — минимальное время, нужное для ощутимого прогресса.</p><p>Если задача требует часа непрерывного фокуса, обычный офисный день делает ее почти нереальной. Но если разбить работу на куски по 20–30 минут, шанс «поймать» такие окна значительно увеличивается — даже в шумной среде.</p><h2>Что происходит в реальности: все еще хуже</h2><p>Исследования показывают, что реальные условия сложнее, чем любые модели. Так, внутренние тесты Microsoft выявили: <b>активные сотрудники отвлекаются примерно каждые две минуты</b>.</p><p>В такой среде рабочий день распадается на множество коротких фрагментов и почти ни один не дотягивает до минимального продуктивного блока.</p><h2>Что с этим делать: три пути вверх по «карте концентрации»</h2><p>Линдерман предлагает относиться к рабочему дню как к системе, которой можно управлять:</p><ul><li><b>снижать λ</b>: реже проверять почту, закрывать мессенджеры;</li><li><b>уменьшать Δ</b>: оставлять себе короткие заметки, использовать ритуалы для возвращения в задачу, избегать резких смен контекста;</li><li><b>подбирать θ под реальность</b>: дробить большие задачи, а самые сложные переносить на периоды минимального трафика.</li></ul><p>Главный вывод модели прост: <b>даже небольшие изменения дают огромный выигрыш</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>IBM запатентовала 200-летний метод Эйлера–Гаусса. Теперь он «принадлежит» корпорации</title>
      <link>https://tproger.ru/news/ibm-zapatentovala-200-letnij-metod-ejlera-gaussa--teper-on--prinadlezhit--korporacii</link>
      <comments>https://tproger.ru/news/ibm-zapatentovala-200-letnij-metod-ejlera-gaussa--teper-on--prinadlezhit--korporacii?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ibm-zapatentovala-200-letnij-metod-ejlera-gaussa--teper-on--prinadlezhit--korporacii</guid>
      <description><![CDATA[<p>IBM получила патент на метод Эйлера–Гаусса XVIII века, реализованный в PyTorch. Сообщество называет это абсурдом и «патентом на математику»</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ibm-zapatentovala-200-letnij-metod-ejlera-gaussa--teper-on--prinadlezhit--korporacii">IBM запатентовала 200-летний метод Эйлера–Гаусса. Теперь он «принадлежит» корпорации</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[IBM]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 14 Nov 2025 04:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В начале ноября вокруг IBM разгорелся <a href="https://leetarxiv.substack.com/p/ibm-patented-eulers-fractions">скандал</a> — компания получила патент на применение <b>метода непрерывных дробей</b>, разработанного Эйлером и Гауссом еще в XVIII веке.</p><p>Патент охватывает использование производных для нахождения сходимостей <i>обобщенных непрерывных дробей</i> — классического приема из теории чисел, которому больше <b>200 лет</b>.</p><h2>Что сделала IBM</h2><p>Как пишет <b>LeetArxiv</b>, исследователи IBM просто <b>реализовали старый математический метод в PyTorch</b>, а затем вызвали стандартную функцию backward() для вычисления градиентов.</p><p>То есть фактически взяли идею Эйлера, встроили ее в граф вычислений нейросети и назвали это «CoFrNet» — архитектурой на основе обобщенных дробей (<i>continued fractions networks</i>).</p><p>С точки зрения математики это не новая концепция:</p><blockquote>«Они просто взяли известную формулу, добавили слово interpretable и описали, что она “приближает нелинейные функции”, — отмечают исследователи LeetArxiv. — Эту фразу Эйлер написал в 1785 году».</blockquote><p>Тем не менее, IBM подала патент в 2022 году. И <b>он был официально опубликован</b> в октябре 2025-го на Google Patents.</p><h2>Почему это абсурдно</h2><p>Продолженные дроби лежат в основе многих областей математики и техники:</p><ul><li>Эйлер использовал их для вычислений и приближения π;</li><li>Гаусс и Рамануджан — в теории чисел и аналитике функций;</li><li>механики — для подбора числа зубьев шестерен (метод Броко).</li></ul><p>Теперь, если IBM решит действовать агрессивно, <b>под удар могут попасть</b> даже разработчики научных библиотек вроде <i>Sage</i>, <i>Maple</i> или <i>Mathematica</i>, где используются аналогичные методы аппроксимации.</p><h2>Как получилось, что патент выдали</h2><p>Патент описывает идею как «новую архитектуру нейросети, использующую обобщенные дроби с дифференцируемыми слоями».</p><p>Формально это сочетание древней математики и машинного обучения, что позволяет отнести ее к категории applied algorithmics. Именно этот юридический зазор дает корпорациям возможность <b>патентовать даже давно известные методы</b>, если они применяются «в новом контексте».</p><h2>Реакция сообщества</h2><p>Математики и инженеры встретили новость с иронией:</p><blockquote>«Эйлер, Гаусс и Рамануджан не дожили до того, чтобы IBM могла брать с них роялти», — шутят пользователи Hacker News.</blockquote><p>А основатель LeetArxiv саркастически добавил:</p><blockquote>«Если вы когда-нибудь вычисляли обратную величину в PyTorch, поздравляю — вы, возможно, нарушили патент IBM».</blockquote><p>Пока не ясно, будет ли компания использовать этот патент в судебной практике, но история уже вызвала обсуждение о том, <b>где проходит граница между наукой и корпоративной собственностью</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>OpenAI удалила твиты о «математическом прорыве» GPT-5 после разоблачения ученых</title>
      <link>https://tproger.ru/news/openai-udalila-tvity-o--matematicheskom-proryve--gpt-5-posle-razoblacheniya-uchenyh</link>
      <comments>https://tproger.ru/news/openai-udalila-tvity-o--matematicheskom-proryve--gpt-5-posle-razoblacheniya-uchenyh?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/openai-udalila-tvity-o--matematicheskom-proryve--gpt-5-posle-razoblacheniya-uchenyh</guid>
      <description><![CDATA[<p>OpenAI удалила твиты о «математическом прорыве» GPT-5 после критики ученых: выяснилось, что модель не решала задачи, а нашла публикации</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/openai-udalila-tvity-o--matematicheskom-proryve--gpt-5-posle-razoblacheniya-uchenyh">OpenAI удалила твиты о «математическом прорыве» GPT-5 после разоблачения ученых</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 20 Oct 2025 06:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>На прошлой неделе OpenAI оказалась в центре скандала. Сначала сотрудники компании заявили о <b>«математическом прорыве GPT-5»</b>, после чего поспешно <a href="https://the-decoder.com/leading-openai-researcher-announced-a-gpt-5-math-breakthrough-that-never-happened/">удалили</a> твиты из-за критики со стороны ученых и коллег по индустрии.</p><p>Менеджер OpenAI <b>Кевин Уэйл</b> написал в X, что GPT-5 «нашла решения 10 ранее нерешенных задач Эрдеша и продвинулась еще по 11», назвав это «вехой в истории математики». Вслед за ним аналогичные посты сделали и другие исследователи компании.</p><p>Звучало так, будто новая модель OpenAI <b>самостоятельно доказала теоремы</b>, над которыми математики бились десятилетиями. Но вскоре выяснилось, что «прорыв» оказался <b>громким недоразумением</b>.</p><h2>Ошибка, стоившая репутации</h2><p>Британский математик <b>Томас Блум</b>, создатель сайта <i>erdosproblems.com</i>, мгновенно опроверг заявления OpenAI. Он объяснил, что пометка «open» на его сайте означает лишь, что <b>он сам не знает решения</b>, а не то, что задача остается нерешенной в науке.</p><p>Фактически GPT-5 просто <b>нашла уже существующие публикации</b>, о которых автор каталога не знал.</p><p>После этого глава DeepMind <b>Демис Хассабис</b> назвал эпизод «постыдным», а научный директор *Meta AI <b>Ян Лекун</b> язвительно заметил, что OpenAI «попалась в ловушку собственного хайпа».</p><p>Все твиты о «решенных задачах Эрдеша» были вскоре <b>удалены</b>, а сотрудники компании признали ошибку.</p><h2>Что было на самом деле</h2><p>Парадоксально, но изначальная новость скрыла действительно интересный факт: GPT-5 оказалась <b>полезным инструментом для математических исследований</b>, просто не в том смысле, как подумали авторы твитов.</p><p>Модель показала себя эффективной в <b>поиске и классификации научной литературы</b> — особенно по темам, где публикации разбросаны и используют разные термины.</p><p>Математик <b>Теренс Тао</b> отметил, что реальный потенциал ИИ в математике — не в «чудесных открытиях», а в <b>ускорении рутинных процессов</b>: поиске статей, проверке ссылок и автоматизации аналитической работы.</p><p>*Компания Meta и ее продукты признаны экстремистскими, их деятельность запрещена на территории РФ</p>]]></content:encoded>
    </item>
    <item>
      <title>Gemini с режимом Deep Think впервые получил «золото» на Международной математической олимпиаде</title>
      <link>https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade</link>
      <comments>https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Даровская Маша]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade</guid>
      <description><![CDATA[<p>Продвинутая версия Gemini от Google DeepMind завоевала золотую медаль на IMO 2025, решив 5 из 6 задач. Впервые модель на естественном языке прошла официальную проверку жюри олимпиады — и доказала, что способна рассуждать, как лучшие молодые математики планеты.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade">Gemini с режимом Deep Think впервые получил «золото» на Международной математической олимпиаде</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Новости]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Анализ данных]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 25 Jul 2025 12:25:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google DeepMind официально <a href="https://deepmind.google/discover/blog/advanced-version-of-gemini-with-deep-think-officially-achieves-gold-medal-standard-at-the-international-mathematical-olympiad/">подтвердил</a>: продвинутая версия модели Gemini с режимом Deep Think впервые <a href="https://imo2025.au/wp-content/uploads/2025/07/IMO-2025_ClosingDayStatement-19072025.pdf">набрала</a> 35 баллов из 42 возможных на Международной математической олимпиаде (IMO) — и получила золотую медаль. Это первый случай, когда AI-система показала результат на уровне лучших молодых математиков мира.</p><p>Международная математическая олимпиада (ММО) – самое престижное в мире соревнование для молодых математиков, проводится ежегодно с 1959 года. Каждую страну представляют шесть лучших математиков, не имеющих высшего образования, которые соревнуются в решении шести исключительно сложных задач по алгебре, комбинаторике, геометрии и теории чисел. Медали вручаются лучшим участникам, при этом только лишь около 8% получают золотую медаль.</p><p>В прошлом году объединённые системы AlphaProof и AlphaGeometry 2 от Google DeepMind <a href="https://deepmind.google/discover/blog/ai-solves-imo-problems-at-silver-medal-level/">достигли серебряного стандарта</a> , решив четыре из шести задач и набрав 28 баллов. А вычисления заняли 2,5 дня.</p><figure><img src="https://media.tproger.ru/user-uploads/116654/2025-07-25/f62947bd-f4ed-4fdd-bdfd-042bb9bde3a0.png" alt="" /></figure><h2>🤖 Зачем ИИ пошёл на олимпиаду?</h2><p>IMO — не соревнование по шаблонам. Участники решают шесть задач за 4,5 часа по алгебре, геометрии, комбинаторике и теории чисел, где даже формулировки требуют нетривиального понимания. Каждую страну представляют шестеро лучших школьников, отобранных годами тренировок. Google DeepMind решила пять задач из шести.</p><p>В 2024 году системы AlphaGeometry и AlphaProof решали задачи IMO, но требовали ручного перевода между формальным языком и естественным. В этом году Gemini Deep Think работал end-to-end: понимал условие задачи на естественном языке, сам генерировал доказательства и укладывался в лимит времени.</p><h2>🧠 Как Gemini научили мыслить по-олимпиадному?</h2><p>Gemini работал в режиме Deep Think — это улучшенный pipeline reasoning’а, который:</p><ul><li>исследует параллельно несколько возможных стратегий доказательства;</li><li>учится на огромном датасете реальных решений IMO;</li><li>строит цепочки логических рассуждений, не опираясь на формальные языки;</li><li>использует обучение с подкреплением и инструкции с мета-наставлениями;</li><li>способен превращать язык в структуру — и обратно;</li><li>использует многошаговые рассуждения для решения задач и доказательства теорем.</li></ul><p>По сути, это уже не просто языковая модель, а когнитивный ассистент, умеющий строить гипотезы, опровергать и доказывать — почти как человек.</p><p>«Решения Gemini были ясными, точными и простыми для понимания. Это один из самых впечатляющих AI-дебютов за всю историю Олимпиады».</p><p>Профессор Грегор Долинар, президент Международной математической олимпиады</p><h2>Почему это важно?</h2><ul><li>AI выходит за пределы генерации текста. Он решает задачи, требующие творческого абстрактного мышления.</li><li>Новая парадигма обучения. Модель учится не только на данных, но и на методах решения.</li><li>Фундаментальная математика — следующий рубеж. После кода, картинок и рецептов ИИ начинает осваивать поле, где обычно побеждают гении с олимпиадным складом ума.</li></ul><h2>Что дальше?</h2><p>Google DeepMind уже готовит открытый доступ к Gemini Deep Think для математиков и подписчиков AI Ultra. Разработчики уверены: следующий шаг — универсальный ассистент-исследователь, который поможет справиться с нерешёнными задачами науки.</p><p>Комментарий от Tproger:</p><p>ИИ теперь не «просто решает задачи». Это пример того, как новые архитектуры reasoning + RL дают результат в задачах, с которыми не способно справиться большинство людей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Python vs C++: какой язык быстрее найдет все простые числа до миллиарда</title>
      <link>https://tproger.ru/articles/python-vs-c----kakoj-yazyk-bystree-najdet-vse-prostye-chisla-do-milliarda</link>
      <comments>https://tproger.ru/articles/python-vs-c----kakoj-yazyk-bystree-najdet-vse-prostye-chisla-do-milliarda?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/python-vs-c----kakoj-yazyk-bystree-najdet-vse-prostye-chisla-do-milliarda</guid>
      <description><![CDATA[<p>Рассказываем, какие есть алгоритмы для поиска простых чисел и реализуем наиболее популярный и простой на Python и C++. </p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/python-vs-c----kakoj-yazyk-bystree-najdet-vse-prostye-chisla-do-milliarda">Python vs C++: какой язык быстрее найдет все простые числа до миллиарда</a>»</p>]]></description>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Big Data]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[PyCharm]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 12 Mar 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Баттлы языков — извечная тема, которая никогда себя не изживет. Понятно, что язык программирования нужно выбирать под конкретные цели. Но если мы только учимся, можно попробовать решить какую-нибудь задачку с помощью двух разных инструментов — хотя бы для того чтобы понять, какой нравится больше.</p><p>Сегодня будем искать все простые числа до миллиарда с помощью кода на Python и C++. Если вы думаете, что результат совсем очевиден, то это не так.</p><p>Напоминание: простые числа — те, которые имеют два различных делителя. Простыми словами, они делятся только сами на себя и на единицу. Например: 2, 3, 5, 7 и так далее.</p><h2>Для начала: быстро окунемся в математику</h2><p>Есть несколько алгоритмов, которые помогут найти все простые числа до N. Это материал для отдельной статьи, поэтому пробежимся по основным.</p><h3>Решето Эратосфена</h3><p>Один из самых древних и известных алгоритмов, чтобы найти простые числа до N. Плюс он понятный, не занимает слишком много памяти (если речь не идет об очень больших N). Работает так:</p><ol><li>Создается список чисел от 2 до N.</li><li>Все кратные числа кратные 2 (4, 6, 8, ...) помечаются как составные.</li><li>Переходим к 3 и вычеркиваем все числа, кратные ему.</li><li>То же самое повторяем со всеми числами из списка до N</li><li>Так до тех пор, пока не проверятся все числа до N.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/8466855f-2da2-46d1-8909-a34038f42911.png" alt="" /></figure><h3>Решето Сундарама</h3><p>Этот алгоритм работает немного по другой логике:</p><ol><li>Создается список чисел от 1 до (N-1)/2.</li><li>Исключаются числа типа i + j + 2ij, где i и j — натуральные числа, и i &lt;= j.</li><li>Оставшиеся числа умножаются на 2 и увеличиваются на 1 — так получаем простые числа.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/ab4a7c6c-33b2-4dab-a225-357ea26415ec.png" alt="" /></figure><p>Этот алгоритм занимает меньше памяти, чем решето Эратосфена, поскольку работает только с половиной диапазона. Но при этом он сложнее в плане понимания и реализации.</p><h3>Решето Аткина</h3><p>Это уже современный алгоритм (появился в начале 21 веке). Он использует более сложные математические концепции и работает так:</p><ol><li>Создается список чисел от 1 до N.</li><li>Используются квадратичные формы, чтобы предварительно отсеять составные числа.</li><li>Затем составные числа просеиваются финально для полного исключения.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/cc0e9ecb-d8d1-4f41-8d7c-95b8e7535408.png" alt="" /></figure><p>Решето Аткина более эффективно, когда речь идет об огромных числах, по сравнению с первыми двумя алгоритмами. Оно тоже не простое в реализации, плюс может быть медленнее при работе с небольшим N.</p><p>Это три основных алгоритма для поиска простых чисел до N. Сейчас существуют различные оптимизации этих методов, например, колесная факторизация (оптимизированный алгоритм Эратосфена).</p><h2>Ищем простые числа до миллиарда на Python и C++</h2><p>Python — не самый быстрый язык для таких операций. Если не использовать библиотеки, то программа выдает ограничение и не может завершиться. Например, вот код на чистом Питоне с алгоритмом Эратосфена:</p><p>PyCharm с ограничением 1 000 000 000 не завершает программу. Если же поставить лимит = 100 000 000, то получим такой результат (почти 8 секунд!):</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/d2086e6c-85d5-41de-95e9-88aa65628a1a.png" alt="" /></figure><p>Теперь попробуем проделать то же самое с библиотекой numpy, которая как раз подходит для работы с большими числами:</p><p>Результат будет таким:</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/14794680-eb0d-456e-8966-64abc5818d50.png" alt="" /><figcaption>Учитывайте, что мы искали здесь числа до миллиарда!</figcaption></figure><p>Давайте попробуем сделать то же самое на С++:</p><p>Эта программа будет выполняться больше минуты:</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/4631c3ff-2fb6-48ad-b3fd-0731d0a31cb8.png" alt="" /></figure><p>Чтобы оптимизировать программу, можно использовать сегментированное решето Эратосфена:</p><p>Время выполнения уменьшилось на 20 секунд:</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-11/09b3746b-ebac-403a-85da-354744d06079.png" alt="" /></figure><h2>Итоги</h2><p>В нашей задачке numpy действительно может оказаться быстрее, чем обычная реализация на C++. На то есть несколько причин:</p><ol><li>Если в NumPy используется эффективный векторизованный алгоритм — в нашем случае решето Эратосфена, — преимущества SIMD-операций (одновременное выполнение одной операции над множеством данных) могут сильно ускорить вычисления.</li><li>Неоптимизированная реализация решета на C++ с обычными циклами может быть медленнее оптимизированной векторизованной реализации в NumPy.</li><li>NumPy использует внутренне оптимизированные C/C++ библиотеки, в которых есть куча оптимизаций для работы с массивами.</li></ol><p>Но эффективно оптимизированный код на C++ (например, с использованием SIMD-инструкций, оптимизации кэш-памяти, параллелизма) почти всегда будет быстрее любой реализации на Python/numpy. Правда, такой код будет занимать сотни строк.</p><p>Производительность зависит от конкретных алгоритмов, поэтому так себе метод на C++ проиграет хорошему на numpy. Во многих задачах по работе с большими данными плюсы будут более быстрыми, но для типичного пользования numpy — отличная альтернатива.</p>]]></content:encoded>
    </item>
    <item>
      <title>2136279841-1 теперь самое большое известное простое число. Его открыл экс-сотрудник NVIDIA</title>
      <link>https://tproger.ru/news/--2136279841-1-teper-samoe-bolwoe-izvestnoe-prostoe-chislo--ego-otkryl-eks-sotrudnik-nvidia</link>
      <comments>https://tproger.ru/news/--2136279841-1-teper-samoe-bolwoe-izvestnoe-prostoe-chislo--ego-otkryl-eks-sotrudnik-nvidia?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--2136279841-1-teper-samoe-bolwoe-izvestnoe-prostoe-chislo--ego-otkryl-eks-sotrudnik-nvidia</guid>
      <description><![CDATA[<p>Самое большое известное простое число M136279841, содержащее более 41 млн цифр, было обнаружено экс-сотрудником NVIDIA через проект GIMPS</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--2136279841-1-teper-samoe-bolwoe-izvestnoe-prostoe-chislo--ego-otkryl-eks-sotrudnik-nvidia">2136279841-1 теперь самое большое известное простое число. Его открыл экс-сотрудник NVIDIA</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[NVIDIA]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 22 Oct 2024 15:24:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Проект GIMPS <a href="https://www.mersenne.org/primes/?press=M136279841">обнаружил</a> самое большое известное простое число — 2136 279 841 - 1, содержащее 41 024 320 десятичных цифр.</p><p>Это число, также известное как M136279841, было найдено 12 октября Люком Дюрантом, бывшим сотрудником NVIDIA.</p><p>К слову, он, стал самым результативным участником GIMPS, к которому присоединились тысячи добровольцев, использующих бесплатное программное обеспечение.</p><h2>Уникальная сила Mersenne</h2><p>Новое простое число относится к особому классу очень редких простых чисел, известных как простые Мерсенна.</p><p>Оно получается умножением двойки 136 279 841 раз с дальнейшим вычитанием единицы. Это 52-е известное простое число Мерсенна, каждое из которых найти всё сложнее.</p><p>Числа Мерсенна названы в честь французского монаха Марена Мерсенна, который изучал их более 350 лет назад.</p><h2>Использование GPU для поиска простых чисел</h2><p>Это открытие знаменует собой конец эпохи, когда огромные простые числа находили при помощи обычных персональных компьютеров.</p><p>В 2017 году Михай Преда написал программу GpuOwl, которая позволила тестировать числа Мерсенна на простоту с помощью мощных графических процессоров (GPU).</p><p>Люк Дюрант решил, что использование GPU для поиска нового простого числа будет отличным способом продемонстрировать их возможности не только в сфере ИИ, но и в фундаментальных научных исследованиях.</p><p>Он разработал инфраструктуру для запуска GIMPS на множестве серверов с GPU по всему миру. В октябре 2024 года, спустя год работы, GPU NVIDIA A100 в Дублине сообщила, что M136279841, вероятно, является простым числом, а уже через день NVIDIA H100 в Сан-Антонио подтвердила это.</p><h2>Проверка нового простого числа</h2><p>После того как GIMPS зарегистрировал новое потенциальное простое число, последовали дополнительные тесты для его подтверждения.</p><p>Программы Prime95 и PRPLL, а также старое программное обеспечение CUDALucas и Mlucas использовались для подтверждения простоты и все они подтвердили результат.</p><h2>Об участии GIMPS</h2><p>GIMPS был основан в 1996 году и стал одним из старейших распределённых проектов в мире.</p><p>Любой желающий может присоединиться к поиску редких математических «драгоценностей» — простых чисел Мерсенна — скачав бесплатное ПО на сайте проекта.</p>]]></content:encoded>
    </item>
    <item>
      <title>Задача от Tprogera: на счет в уме</title>
      <link>https://tproger.ru/articles/zadacha-ot-tprogera--na-procenty</link>
      <comments>https://tproger.ru/articles/zadacha-ot-tprogera--na-procenty?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/zadacha-ot-tprogera--na-procenty</guid>
      <description><![CDATA[<p>Очередное развлечение на вечер: проверьте, сможете ли вы посчитать в уме нужный процент</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/zadacha-ot-tprogera--na-procenty">Задача от Tprogera: на счет в уме</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[faq]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 29 Aug 2024 14:30:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сегодня в повестке дня крайне простая задачка — нужно банально посчитать в уме. В общем, начальная школа.</p><p>Найдите общий процент закрашенной площади на рисунке ниже.</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2024-08-27/accc93d0-a4d3-4475-9de1-5f4cfdd069de.png" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>Задача от Tproger: на вероятность</title>
      <link>https://tproger.ru/problems/zadachka-ot-tproger--na-veroyatnost--iteraciya-2-</link>
      <comments>https://tproger.ru/problems/zadachka-ot-tproger--na-veroyatnost--iteraciya-2-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/zadachka-ot-tproger--na-veroyatnost--iteraciya-2-</guid>
      <description><![CDATA[<p>Небольшое развлечение на вечер: вспомните школу и решите простенькую задачку на вероятность</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/zadachka-ot-tproger--na-veroyatnost--iteraciya-2-">Задача от Tproger: на вероятность</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[faq]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 20 Aug 2024 14:30:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы думали, что математика, а уж тем более знание теории вероятности, вам больше никогда не пригодятся (дата сайентисты и другие причастные, про вас знаем), не тут-то было. Но мы уверены, что вы справитесь — задачка совсем не сложная.</p><p>Вы бросаете два игральных кубика. Найдите вероятность того, что сумма двух выпавших очков будет простым числом.</p>]]></content:encoded>
    </item>
    <item>
      <title>Счет без чисел</title>
      <link>https://tproger.ru/articles/schet-bez-chisel</link>
      <comments>https://tproger.ru/articles/schet-bez-chisel?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Владимир Булыгин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/schet-bez-chisel</guid>
      <description><![CDATA[<p>Отношение «равное себе» характеризует то единственно общее, что есть у каждого элемента множества. Поскольку оно единственно, то единица таким образом и выражается. Каждое последующее число то, что равно себе и не равно каждому предыдущему.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/schet-bez-chisel">Счет без чисел</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 27 Mar 2024 07:30:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Когда считаем, мы выделяем в предметах отношения: равняться себе и различаться с каждым предыдущим. Именно эти отношения заносим в N в виде символьной записи чисел.</p><p>В такой интерпретации отношение «равное себе» характеризует то единственно общее, что есть у каждого элемента множества. Поскольку оно единственно, то единица таким образом и выражается.</p><p>«Равное себе» (что истинно) равно единице. Идейно, это близко тому, как в теории категорий дается определение единичному (тождественному) морфизму.</p><figure><img src="https://media.tproger.ru/user-uploads/99520/2024-03-26/65f5ddeb-15b8-4b1c-be63-f2fd7a6f9e87.jpg" alt="" /><figcaption>учебник-по-теории-категорий.pdf (komar.in)</figcaption></figure><p>Для сравнения, в аксиомах Пеано единица никак не определяется. Лишь констатируется, что она есть. В определении Фреге-Рассела единица выводится, но в таком определении не дается понимания как именно единица связана с тем, что считается. И, как следствие, неясно становится, как связаны последующие числа с тем, что считаем.</p><p>В кольцах вообще могут быть заданы несколько «единичных элементов», которые не мыслимы без операции. Однако сама по себе единица не связана с какой-либо алгебраической операцией. Сказать «элемент – один» можно. Арифметика именно с этого начинается.</p><p>Часто утверждается, что численные отношения начинаются там, где имеются ввиду взаимно-однозначные отношения предметов. Это верно, но без учета определения единицы. Поскольку неявно ее используем в таком понимании. И поэтому такой подход также оказывается не годен при конструировании всех чисел.</p><p><b>Ниже решение НЕ ТАКОЕ, как у Фреге:</b></p><p>Понятия F и G равночисленны, если объекты их объемов находятся во взаимно-ОДНОзначном соответствии.</p><p>Его пример:</p><p>Если официант хочет быть уверен, что он положил на стол ножей столько же, сколько и тарелок, ему нет надобности считать и те и другие; как только он справа от каждой тарелки рядом положит нож, каждый нож на столе будет находиться рядом с соответствующей тарелкой. Тарелки и ножи будут взаимно ОДНОзначно соотнесены друг с другом.</p><p>Неважно, что подставлять вместо Х в формулу 1==(x==x). Можно выразить и одно яблоко, и одно пять, и одно то, что больше семи. При этом, True и 1 – разные понятия в общем случае. 7&gt;3 истинно, но это не единица.</p><p>Как понимал числа Фреге: быть не равным себе =&gt; число 0; быть равным 0 =&gt; число 1</p><p>0 = |{}| 1 = |{} U {{}}|</p>]]></content:encoded>
    </item>
    <item>
      <title>10 логических задач с собеседований, которые заставят задуматься</title>
      <link>https://tproger.ru/articles/zadachi-s-sobesedovanij-kotorye-zastavyat-krepko-zadumatsya</link>
      <comments>https://tproger.ru/articles/zadachi-s-sobesedovanij-kotorye-zastavyat-krepko-zadumatsya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/zadachi-s-sobesedovanij-kotorye-zastavyat-krepko-zadumatsya</guid>
      <description><![CDATA[<p>Составили подборку из 10 логико-математических задач, которые загадывают на рабочих интервью в Microsoft, Google, Amazon, Yahoo и Infosys.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/zadachi-s-sobesedovanij-kotorye-zastavyat-krepko-zadumatsya">10 логических задач с собеседований, которые заставят задуматься</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Собеседование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 05 Sep 2023 10:32:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Составили подборку из 10 логико-математических задач, которые загадывают соискателям во время рабочих интервью в Microsoft, Google, Amazon, Yahoo и Infosys. Мы нашли их на сайте <a href="http://www.crazyforcode.com/brain-teasers/">Crazy for Code</a> и адаптировали для вас.</p><p>Попробуйте решить их самостоятельно, не подглядывая под спойлеры.</p><h2>Отмеряем нужное количество воды</h2><p>Эту задачу могут дать на собеседовании в Amazon. Представьте, что у вас есть две пустых бутыли для воды объемом в 3 и 5 галлонов. Как отмерить ровно 4 галлона воды? Запас воды для решения не ограничен.</p><h2>Самая быстрая лошадь на скачках</h2><p>Задачку дают на собеседованиях Microsoft. У вас есть 25 лошадей и 5 беговых дорожек. Вы не знаете, какая лошадь быстрее другой.</p><p>Найдите за минимально возможное количество забегов тройку самых быстрых лошадей.</p><h2>Делим золотой слиток</h2><p>Это задача с собеседований Amazon. Представьте, что у вас есть сотрудник, который работает на вас в течение семи дней. За всю работу вы должны заплатить ему одним золотым слитком.</p><p>В конце каждого дня вы должны отдавать ему по кусочку золота, то есть 1/7 слитка.</p><p>Как поделить золотой слиток минимальным количеством отрезов, чтобы платить сотруднику по 1/7 части каждый день?</p><h2>Охота лисы за уткой</h2><p>Ещё одна задачка с собеседований Microsoft.</p><p>Лиса охотится за уткой, и последняя приземляется в центр идеально круглого пруда.</p><p>Лиса не может плавать, а утка не может взлететь с воды. Чтобы утка могла сбежать, ей нужно добраться до берега и взлететь. Однако лиса в четыре раза быстрее утки.</p><p>Может ли утка добраться до края пруда и улететь, не будучи съеденной? Если да, то каким образом?</p><h2>Шапки заключённых</h2><p>Задача от Google. Четверо заключенных были арестованы, но тюрьма переполнена, и тюремщику некуда их посадить. Он решает дать им головоломку. Если они справятся, то выйдут на свободу, а если не справятся, то будут казнены.</p><p>Тюремщик выстроил трех человек в линию. Четвертого он посадил за ширму. Каждому заключённому он дал по одной шапке.</p><p>Тюремщик объяснил, что есть две черные и две белые шапочки, и каждый заключенный носит одну из них. При этом каждый из заключенных должен видеть только шапки тех, кто находится перед ним, но не собственные шапки или не шапки тех, кто находится позади. Четвертый человек за ширмой не может видеть шапки других заключённых, а они не видят, какая шапка на его голове. Общаться заключённым тоже нельзя.</p><p>Если кто-либо из заключенных догадается и скажет тюремщику, какого цвета шляпа у него на голове, все четверо будут помилованы. Если кто-то даст неверный ответ, все будут казнены.</p><p>Как заключённым избежать казни?</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-05/a328c864-a741-48c7-a2e5-14e5183177d6.jpeg" alt="" /></figure><h2>Отравленное вино короля</h2><p>Задача с собеседований Amazon. У короля есть погреб с 1000 бутылок восхитительного вина. Королева по соседству решила убить короля и послала слугу отравить вино. Стражники короля поймали слугу после того, как он отравил только одну бутылку.</p><p>Увы, стражники не знают, в какой именно бутылке находится яд, но знают, что яд настолько сильный, что убьёт короля даже в том случае, если вино разбавят в 100000 раз. Кроме того, яд отравит жертву через месяц после выпитого.</p><p>Король решил заставить заключённых попробовать вино, чтобы выявить отравленную бутылку. При этом король настаивает, что для решения задачи потребуется не более 10 заключенных.</p><p>Задачу нужно решить срочно: через 5 недель у короля юбилей, и он хочет выпить остальные 999 бутылок на королевском рауте.</p><p>Как королю выявить отравленную бутылку при помощи 10 заключённых?</p><h2>Как найти вора</h2><p>Ещё одна задача от Google. Вор пытался скрыться от полиции и забежал в пещеру. Когда полиция зашла в неё, то обнаружила, что внутри по кругу расположены 13 ходов. В одном из них находится вор, который надеется улизнуть.</p><p>Каждый день вор может перемещаться в любой из соседних ходов или остаться на месте и никуда не бежать. При этом каждый день полиции разрешается заходить только в две пещеры по своему выбору.</p><p>Как полиции быстрее всего отыскать вора?</p><h2>Задача о десяти монетах</h2><p>Эту головоломку задают в Yahoo. Вас ослепили и положили перед вами 10 монет. Вам можно трогать монеты, но вы не можете определить на ощупь, какая сторона монеты смотрит вверх.</p><p>Вам сказали, что на столе лежат 5 монет с орлом сверху и 5 монет решкой вверх, но вы не знаете, какие из них именно.</p><p>Как сделать две кучи монет, в каждой из которых одинаковое количество монет смотрят орлом вверх? Вам разрешено переворачивать монеты любое количество раз.</p><h2>Рай или ад</h2><p>Вы умерли и стоите перед двумя вратами. Одна из них ведет в рай, а другая — в ад.</p><p>У каждой двери стоит по одному стражу. Один из них всегда говорит правду, а другой всегда лжет, но вы не знаете, кто из них честен, а кто — лжец.</p><p>Вам нужно найти дорогу в рай, задав одному из стражей только один вопрос. Что это за вопрос?</p><p>Это одна из классических головоломок, задаваемых на собеседовании в Infosys.</p><h2>Тигры и принцессы</h2><p>Суд решил смягчить наказание преступнику, если он сможет решить головоломку.</p><p>Преступник должен открыть одну из дверей. За каждой дверью могут находиться либо принцесса, либо тигр. Также за обеими дверьми могут быть две принцессы или два тигра.</p><p>Если преступник откроет дверь, за которой окажется принцесса, то он женится на ней. Если он откроет дверь, за которой окажется тигр, то будет съеден заживо.</p><p>На каждой из дверей висит табличка. На первой двери написано: “В этой комнате находится принцесса, а в другой — тигр”.</p><p>На второй двери написано: “В одной из этих комнат находится принцесса, а в одной из этих комнат — тигр”.</p><p>Преступнику сказали, что одно из утверждений истинно, а другое — ложно. Какую дверь должен открыть преступник?</p><p>Это — задача с собеседований в Yahoo.</p><h2>Заключение</h2><p>Напишите в комментариях, сколько задач вам удалось решить самостоятельно. Какие задачи понравились вам больше всего?</p><p>Какие из них показались вам простыми, а какие — сложными? Может быть, у вас есть более “тонкие” способы решить их?</p>]]></content:encoded>
    </item>
    <item>
      <title>Математика для программистов: что надо знать для типовых проектов</title>
      <link>https://tproger.ru/articles/matematika-dlya-programmistov-chto-nado-znat-chtoby-uchastvovat-v-tipovyh-proektah</link>
      <comments>https://tproger.ru/articles/matematika-dlya-programmistov-chto-nado-znat-chtoby-uchastvovat-v-tipovyh-proektah?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Kirill Mokevnin]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/matematika-dlya-programmistov-chto-nado-znat-chtoby-uchastvovat-v-tipovyh-proektah</guid>
      <description><![CDATA[<p>Рассказываем, нужна ли математика программистам, что действительно пригодится в программировании и что нужно для типовых проектов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/matematika-dlya-programmistov-chto-nado-znat-chtoby-uchastvovat-v-tipovyh-proektah">Математика для программистов: что надо знать для типовых проектов</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 05 Jul 2023 12:37:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вопрос “нужна ли математика в программировании” занимает лидирующие позиции на протяжении десятилетий. Одни говорят, что без математики никуда, другие, что нужно уточнять о какой математике идет речь, третьи считают что в программировании математики нет.</p><p>Так нужна или не нужна? Короткий ответ: не нужна.</p><p>Подробнее о том, что из математики действительно пригодится в программировании, — рассказал Кирилл Мокевнин, сооснователь онлайн-школы программирования Хекслет.</p><h2>Какая математика нужна в программировании</h2><p>Математика в программировании конечно же есть, но на очень базовом уровне. Даже если вдруг вы забыли основы из школьного курса, то это легко восстанавливается (или учится) в процессе.</p><h3>Что туда входит</h3><p>В основном это арифметика, немного логики (если A то B), нахождение остатка от деления, проверка числа на четность и операции над множествами. Чуть ниже мы разберем каждый из этих пунктов.</p><p>Более сложная математика тоже бывает нужна. Но в специфических случаях. Например, для создании редакторов, нужнатригонометрия, для систем аналитики нужна статистика, а в 2d или 3d моделировании (в том числе игры) – линейная алгебра. Кроме того, существуют люди, которые разрабатывают алгоритмы, языки программирования, симуляторы физических процессов (например погоды) и так далее.</p><p>Большая же часть разработки — это создание мобильных приложений, десктопных приложений и веб-сервисов, где во многом все сводится к получению, хранению, несложной обработке и выводу пользовательских данных.</p><h2>Почему же многие считают, что математика нужна</h2><p>Чаще всего в таких случаях имеют ввиду две вещи:</p><ul><li>Это говорят люди с высшим образованием. И в большинстве случаев — это история не про обязательные знания математики, а про «мы потратили 5 лет на изучение этого, значит это должно быть не зря».</li><li>Математикам проще стать программистами. Объясняется это очень просто: математики быстрее видят суть, легко вникают в абстрактные концепции, видят причинно-следственные связи. Аналитическое мышление сильно помогает при старте в профессии и на практике.</li></ul><h2>Что из математики реально нужно знать в программировании</h2><p>Как я уже писал выше, в программировании много базовой арифметики, особенно в стиле «прибавить единицу» или «вычесть единицу». Это связано с темой циклов и массивов, где нужно оперировать порядковыми номерами.</p><h3>Остаток от деления</h3><p>Следующее по частоте — это <a href="https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%BE%D0%BC">остаток от деления</a>. Напомню, что остатком от деления называется число, которое остается после того, как одно число поделили на другое нацело. Пара примеров:</p><p>10 / 5 = 2 Тут остаток от деления — 0, так как 10 делится на 5 без остатка; 11 / 5 = ? 11 на 5 нацело не делится, но 10 делится, поэтому остаток от деления – 1.</p><p>Как это знание применяется? Остаток от деления нужен для определения четности числа. Если число делится без остатка на 2, то это четное число, иначе — нечетное.</p><p>10 – четное, 11 – нечетное (остаток 1), 25 – нечетное (остаток 1).</p><p>Практически во всех языках операция поиска остатка делается через оператор %.</p><p>Выглядит это так:</p><p>10 % 5 — такое выражение равно нулю, так как остаток ноль.<br />11 % 5 — такое выражение равно единице, так как остаток единица.</p><p>С помощью остатка от деления мы можем разбить набор данных на группы. Типичный пример это вывод на экране. Чтобы вывести информацию в три колонки, придется определять то, в какую колонку пойдет информация и для этого понадобится остаток от деления.</p><h3>Проценты</h3><p>Дальше идут проценты. Причем для поиска процентов символ % не используется. Как мы уже видели, он используется для остатка от деления.</p><p>Как, например, найти 10 процентов от какого-то числа? Умножить на 0.1: 200 * 0.1 = 20Как найти 120% от числа?200 * 1.2 = 240</p><h2>Логические выражения</h2><p>Так как программирование сильно завязано на условия: «Если нажали кнопку, то надо показать меню», то во все языки вшита <a href="https://ru.hexlet.io/courses/programming-basics/lessons/bool/theory_unit">булева алгебра</a>. Не пугайтесь сложному и непонятному названию. Это правила, по которым выполняются операции с истинной (true) и ложью (false). Вот несколько практических примеров, как это используется у нас в Хекслете:</p><ul><li>Если вы заполнили имя и фамилию, то ваших сообщениях выводятся именно они, если нет, то выводится автоматически сгенерированное имя;</li><li>Если вы оплатили доступ к одному курсу, то у вас открывается доступ ко всем курсам платформы.</li></ul><p><b>Множества</b></p><p>Упрощенно, <a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE">множества</a> это наборы (коллекции или списки) каких-то элементов. В программировании мы все время имеем дело со множествами: у нас есть список пользователей сайта, список студентов курса, список людей, посмотревших эту статью.</p><p>Над множествами можно производить операции. Например, мы можем найти общих друзей у двух пользователей, сравнив списки друзей каждого из этих пользователей. В теории множеств такая операция называется <a href="https://ru.hexlet.io/courses/set-theory/lessons/intesect/theory_unit">пересечением</a>. В программировании такие задачи встречаются регулярно.</p><p>По большому счету это все. Конечно с ростом профессионального уровня и сложностью задач, математика может прорываться то тут то там. Но на начальном этапе, в большинстве задач встретятся только указанные выше примеры.</p>]]></content:encoded>
    </item>
    <item>
      <title>Тинькофф откроет частный университет с дипломами гособразца</title>
      <link>https://tproger.ru/news/tinkoff-otkroet-chastnyj-universitet-s-diplomami-gosobrazca</link>
      <comments>https://tproger.ru/news/tinkoff-otkroet-chastnyj-universitet-s-diplomami-gosobrazca?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/tinkoff-otkroet-chastnyj-universitet-s-diplomami-gosobrazca</guid>
      <description><![CDATA[<p>Тинькофф объявил, что их университет станет первым частным вузом в России по модели STEM: Science, Technology, Engineering, Mathematics.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/tinkoff-otkroet-chastnyj-universitet-s-diplomami-gosobrazca">Тинькофф откроет частный университет с дипломами гособразца</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Образование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 15 Jun 2023 07:38:27 GMT</pubDate>
      <content:encoded><![CDATA[<p>Тинькофф <a href="https://www.tinkoff.ru/about/news/14062023-tinkoff-announces-the-launch-of-russias-first-private-stem-university/">объявил</a>, что их университет станет первым частным вузом в России, построенным по модели STEM: Science, Technology, Engineering, Mathematics. Также в Тинькофф рассказали, что при обучении будут делать упор на то, в чём нуждается бизнес.</p><p>На первых порах упор в вузах будет сделан на математику и компьютерные науки. Кроме того, студентов будут обучать soft skills: как эффективно решать проблемы, оттачивать коммуникацию, работать в команде и использовать критическое мышление при работе над проектами.</p><p>Университет начнёт работу в сентябре 2024 года. Всего для обучения будут приняты 500 студентов. В университет будут приняты 55 преподавателей.</p><p>После выпуска бакалавры получат дипломы государственного образца по специальности «Математика и компьютерные науки» (02.03.01). Стоимость обучения составит от 70 тысяч рублей в месяц.</p><p>Для магистров будет доступна двухгодичная программа — Академия Data Science. Магистр будет работать над собственным ML-проектом во время обучения, а при окончании вуза ML-проект должен быть полностью завершён.</p><p>На первом этапе университет расположится в Москве. В будущем филиалы будут открыты и в других городах.</p>]]></content:encoded>
    </item>
    <item>
      <title>Пройди свой путь в ширину: библиотеки для графов из инди-игры TESTAMENT</title>
      <link>https://tproger.ru/articles/projdi-svoj-put-v-wirinu-biblioteki-dlya-grafov-iz-indi-igry-testament</link>
      <comments>https://tproger.ru/articles/projdi-svoj-put-v-wirinu-biblioteki-dlya-grafov-iz-indi-igry-testament?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Pavel Kurkutov]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/projdi-svoj-put-v-wirinu-biblioteki-dlya-grafov-iz-indi-igry-testament</guid>
      <description><![CDATA[<p>Рассказываем о библиотеке для создания графов при разработке игр. Также объясняем, зачем нужны графы и как применять их в геймдеве.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/projdi-svoj-put-v-wirinu-biblioteki-dlya-grafov-iz-indi-igry-testament">Пройди свой путь в ширину: библиотеки для графов из инди-игры TESTAMENT</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Разработка игр]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 14 Jun 2023 09:49:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Знаете, почему математики не любят направленные нецикличные графы? Потому что если они совершать ошибку, они не смогут вернуться.</p><h2>С чего все началось</h2><p>Графы – это не только математический объект, но и важный инструмент программистов. Они используются в играх, визуализации данных, социальных сетях и других серьезных проектах. Если вы не знаете, как работать с графами, то вы не программист. Конкретно раскладка графа в плоскости – задача не тривиальная. Но что делать, если вы хотите решить эту задачу легковесно и быстро?</p><p>Когда я начал работать над своим пет-проектом TESTAMENT, мне нужно было генерировать и отображать произвольные графы. Я хотел, чтобы локации были в виде простых шагов-событий, соединенных между собой. Примерами могут послужить проекты Slay The Spire, Cult of the Lamb, Darkest Dungeon и другие. Исследовав вопрос, я увидел, что существующие библиотеки слишком тяжелые и сложные для моих нужд.</p><ul><li>QuickGraph – развитая библиотека, которая активно используется в промышленных системах. Наверное, самым мастодонт среди всех библиотек, которые я знаю.</li><li>GraphShape – форк и последующая переработка заброшенного GraphSharp. Куча алгоритмов раскладки. И скупая документация, кажется, для галочки.</li><li>Microsoft Automatic Graph Layout – мощное решение от лидера рынка корпоративных решений.</li><li>YWorks – красивое коммерческое решение.</li></ul><p>Все эти штуки наверняка могут отобразить граф супер эффективным и академически правильным способом. Но тогда, возможно, код работы с графами станет наибольшей частью кодовой базы моего небольшого проекта. Я понял, что мне нужно простое и легковесное решение для небольших инди-игр, которое будет работать быстро и без лишних сложностей. Так я попробовал сделать набросок своего алгоритма раскладки и, о чудо, вышло быстро и дало неплохой результат. В этой статье я расскажу о моем наборе библиотек, который поможет вам создавать случайные графы и раскладывать их в плоскости с минимальными усилиями.</p><p>Какими будут мои графы:</p><ol><li>Графы направленные. По сути – деревья.</li><li>Графы нецикличные.</li><li>Может быть несколько стартовых узлов.</li><li>Предполагается один финишный узел.</li><li>Из одного узла может выходить несколько ребер в разные соседние узлы.</li><li>Один узел может принимать несколько ребер от разных соседних узлов.</li><li>Все узлы одинакового размера.</li><li>Подойдет вариант визуализации, когда граф просто вытянут в линию. Возможно даже, такой вариант наиболее предпочтителен. Чтобы игрок проходил от начала (слева) до конца (направо).</li></ol><p>При генерации:</p><ol><li>Всегда должно быть несколько стартовых улов.</li><li>В определенный момент несколько узлов графа должны входить в один узел.</li><li>В определенный момент один узел должен разветвляться на строго определенное количество узлов.</li><li>Нужно полностью контроллировать, какими могут быть следущие узлы.</li></ol><h2>Минимальные графы</h2><p><a href="https://github.com/kreghek/CombatDicesTeam.Graphs">Моя библиотека</a> предоставляет единственный интерфейс для работы с графами IGraph, где TNodePayload – любой тип данных, которые будут содержать узлы графа. Интерфейс графа, на самом деле, одноклеточный:</p><ul><li>AddNode – добавляет узел в граф.</li><li>ConnectNodes – соединяет два узла ребром.</li><li>GetAllNodes – возвращает все узлы графа.</li><li>GetNext – возвращает узлы, соединенные с указанным узлом.</li></ul><p>Самая простая и наивная реализация для ориентированных графов – DirectedGraph.</p><p>Пример использования. Введем свой тип данных. У меня в игре это, например, граф локаций. Локации можно описать примерно так.</p><p>Создадим простой нецикличный граф вроде такого. Игрок должен начать бой. Затем у него есть выбор – легкий или сложный путь. И награда в конце.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/39281454-2a73-43ca-ae77-d92fc1ee697f.png" alt="" /><figcaption>Рисунок 1. Пример графа</figcaption></figure><h2>Раскладка графа</h2><h2>Алгоритм</h2><p>Давайте разберемся, как нарисовать этот граф! Я буду работать только с направленным нецикличным графом, чтобы упростить задачу. Итоговый граф будет визуализирован слева направо. Так же – для простоты.</p><p>Сначала получаем все корневые узлы и группируем их в нулевой уровень. Затем рекурсивно повторяем этот процесс для соседних узлов, выполняя обход графа в ширину.</p><p>BFS (Breadth First Search) – выполняет обход поуровнево: сначала проходит по всем ближайшим от начальной точки вершинам, потом спускается глубже</p><p>Получается массив массивов.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/1ee66266-450d-40b6-8b19-ca04e5fa9241.png" alt="" /><figcaption>Рисунок 2. Поуровневое представление графа в памяти</figcaption></figure><p>Далее нам нужно выдать координаты каждому узлу. Для получения x-координаты просто перемножаем уровень на ширину узла. Для получения y-координаты нам нужно индекс узла умножить на высоту узла. А так же нужно выровнять узел по центру по высоте.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/fdb16576-90ed-4002-a6ba-d80e3906cc53.png" alt="" /><figcaption>Рисунок 3. Выравнивание узлов графа по высоте</figcaption></figure><p>Для этого считаем отступ, который добавляем к y-координате. Отступ считается, как половина разницы между высотой графа и суммарной высотой всех узлов в уровне. А высота графа – это суммарная высота уровеня с самым большим количеством узлов.</p><p>Но тут есть нюанс. По контракту, граф не гарантирует порядок соседних узлов в методе GetNext().</p><figure><img src="https://media.tproger.ru/uploads/2023/06/9c01ef46-9ac4-4e79-8e44-fbf336cccfbe.png" alt="" /><figcaption>Рисунок 4. Проблема с пересечением ребер</figcaption></figure><p>Для того, чтобы “сгладить” эту проблему, выполним следующую доработку:</p><ol><li>Назначаем вес корневым узлам. Вес назначается по порядку.</li><li>Для каждого соседнего узла считаем вес, как среднее всех весов узлов, которые входят.</li><li>Упорядочиваем узлы по весу в рамках одного уровня.</li><li>Рекурсивно повторяем для всех уровней.</li></ol><p>Весь алгоритм в UML:</p><figure><img src="https://media.tproger.ru/uploads/2023/06/cfe4633b-feca-4279-b588-f32b89c1bb28.png" alt="" /><figcaption>Рисунок 5. Алгоритм раскладки в UML</figcaption></figure><h2>Реализация</h2><p><a href="https://github.com/kreghek/CombatDicesTeam.Graphs.Layout">Библиотека</a> содержит реализацию этого алгоритма. Разберем, как раскатать этот граф в плоскости.</p><p>Визуализатор возвращает набор объектов типа IGraphNodeLayout&lt;TNodePayload&gt;</p><p>с данным для отображения каждого узла.</p><ul><li>Node – ссылка на исходный узел графа.</li><li>Position – это целочисленные координаты (X, Y), где нужно отрисовать узел.</li><li>Size – это размер узла. Сейчас значения для всех узлов будут одинаковыми.</li></ul><p>Пример конфига для визуализатора:</p><p>Графы в линию – это конечно решение, но не для крутой игры. Поэтому были добавлены пост-процессоры раскладки графов, чтобы добавить некоторый хаос в граф.</p><ul><li>RetryTransformLayoutPostProcessor – Выполняет произвольную трансформацию узла графа и валидирует изменения. Если изменения не валидны, то повторяет трансформацию. Идея в том, чтобы случайно подвигать узлы графа. Но если узел после перемещения начинает пересекать другие узлы, то попробовать выбрать другую случайную позицию.</li><li>RepeatPostProcessor – Повторяет указанный набор постпроцессоров указанное число раз. Идея в том, чтобы если нам не удалось выбрать подходящую позицию для первых узлов (которые ближе у корню), то мы попробуем еще раз.</li><li>PushHorizontallyPostProcessor – Расталкивает все узлы по горизонтали на указанное значение. Этот процессор нужен, чтобы заранее дать простор для случайных перемещений по горизонтали. Таким образом, по горизонтали будет разное расстояние между узлами.</li><li>RotatePostProcessor – Поворачивает граф на указанный угол в радианах вокруг начала координат. В начале координат будет самый первый корень. В моей игре я поворачиваю на случайный угол от 0 до Pi. По соображениям Ui/UX. Чтобы для игрока движение по графу все еще было слева-направо сверху-вниз.</li></ul><p>Вот как это используется у меня:</p><p>Собственно, главная сцена. Исказим стройный граф!</p><h2>Генерация графов</h2><p>Генерация графов – это настоящее творчество. Чтобы локации были интереснее, мне нужно создать уникальные и интересные графы. Чтобы игроку каждый раз было интересно планировать новый маршрут. Но чтобы было больше контроля над локацией, нужно использовать какие-то шаблонные решения. Развивая эту идею, можно создать шаблон основных путей графа. По сути, это будет тоже направленный граф, только более высокого порядка. Алгоритм работы прост: мы обходим граф путей, материализуем шаблоны в конкретные узлы и соединяем начальные и конечные узлы ребрами. Поехали!</p><h2>Реализация</h2><p>Для генерации используется <a href="https://github.com/kreghek/CombatDicesTeam.Graphs.Generation">эта библиотека</a>.</p><p>Все начинается с создания путей. Чтобы создать путь, нужно создать экземпляр GraphWay. Путь – это набор шаблонов, которые являются реализаций интерфейса IGraphTemplate.</p><p>Пример:</p><p>Далее формируем граф путей</p><p>И, наконец, создаем граф по шаблону.</p><p>Далее worldGraph можно визуализировать так, как я рассказал в статье выше.</p><h2>Резюме</h2><figure><img src="https://media.tproger.ru/uploads/2023/06/0f8f1dbb-d628-4cfc-bda0-e62b994c94c2.jpg" alt="" /><figcaption>Рисунок 5. Пример использования библиотек</figcaption></figure><p>Я знаю, что код не идеален. Сейчас он решает очень узкую задачу. Но этот код используется в игре TESTAMENT. Для работы с локациями (о чем была статья), для дерева навыков и рецептов крафта. А если потребуется более серьезная работа с графами, лучше использовать один из инструментов выше.</p><p>Тем не менее, я бы хотел получить обратную связь, разумную критику и предложения по улучшению. Я надеюсь, мои библиотеки помогут другим независимым разработчикам в их небольших проектах. Я готов помочь и дать советы по использованию библиотек. А если вы хотите что-то доработать – я буду только рад и тоже готов помочь разобраться! Так что давайте сделаем этот код круче вместе!</p>]]></content:encoded>
    </item>
    <item>
      <title>5 логико-математических задач, которые поставят в тупик</title>
      <link>https://tproger.ru/articles/5-logiko-matematicheskih-zadach-kotorye-postavjat-v-tupik</link>
      <comments>https://tproger.ru/articles/5-logiko-matematicheskih-zadach-kotorye-postavjat-v-tupik?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/5-logiko-matematicheskih-zadach-kotorye-postavjat-v-tupik</guid>
      <description><![CDATA[<p>Собрали для вас пять интересных логико-математических задач, которые кажутся сложными лишь на первый взгляд. Сумеете решить?</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/5-logiko-matematicheskih-zadach-kotorye-postavjat-v-tupik">5 логико-математических задач, которые поставят в тупик</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 23 Mar 2023 12:52:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>А давайте отвлечёмся от кода и перещёлкаем 5 логико-математических задач. Попробуйте решить их в уме и напишите свои ответы в комментариях.</p><h2>1. Возраст мальчика</h2><p>Обилечивая человека, кондуктор поинтересовался, сколько лет его сыну. Человек ответил уклончиво:</p><p>– Моя дочь в пять раз младше моего сына, а моя жена — в 5 раз его старше. Я, в свою очередь, вдвое старше своей жены. Моя мама сегодня отмечает день рождения — ей исполнился 81 год — столько, сколько мне, жене, дочери и сыну вместе взятым.</p><p>Так сколько же лет мальчику?</p><h2>2. Вёдра с водой</h2><p>Стоит два ведра ёмкостью 5 л и 9 л. Из реки необходимо набрать 3 литра воды. Как это сделать, если в распоряжении есть только эти два ведра?</p><h2>3. Лампочки и переключатели</h2><p>Есть две комнаты с низкими потолками. В первой висит три лампы накаливания, а в другой установлено три переключателя. Можно сколько угодно раз щёлкать переключатели, но в комнату с лампочками разрешено перейти только один раз.</p><p>Как узнать, к какому переключателю подсоединена каждая из лампочек?</p><h2>4. Время по верёвкам</h2><p>А как насчёт такой логико-математической задачи? Предположим, у нас есть две верёвки и бесконечное множество спичек. Каждая из этих верёвок сгорает за один час. Но вот беда — горят они неравномерно, поэтому невозможно узнать наверняка, за какое время сгорит какая-то часть веревки.</p><p>Можно ли отмерить этими двумя верёвками 45 минут, и если да, то как это сделать?</p><h2>5. Баночки с таблетками</h2><p>Есть двадцать баночек с таблетками. Почти во всех таблетки весят по 1 г, и только в одной — по 1,1 г. У нас есть точные кухонные весы, с помощью которых нужно определить баночку, каждая таблетка которой весит 1,1 г. Как это сделать, если можно взвесить только 1 раз?</p><p>Понравилось решать логико-математические задачи? Тогда вас могут заинтересовать <a href="https://tproger.ru/articles/10-logicheskih-zadach-s-sobesedovanij-kotorye-zastavjat-zastrelitsja/">хитрые задания на логику с собеседований</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Логическая задача про бракованные батарейки</title>
      <link>https://tproger.ru/problems/logicheskaja-zadacha-pro-brakovannye-batarejki</link>
      <comments>https://tproger.ru/problems/logicheskaja-zadacha-pro-brakovannye-batarejki?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/logicheskaja-zadacha-pro-brakovannye-batarejki</guid>
      <description><![CDATA[<p>Анализируем и решаем логическую задачу про бракованные батарейки, которую любят задавать на собеседованиях.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/logicheskaja-zadacha-pro-brakovannye-batarejki">Логическая задача про бракованные батарейки</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 20 Jan 2023 08:30:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Эту логическую задачу про батарейки порой задают на собеседованиях по программированию, чтобы проверить умение кандидата находить правильное решение в стрессовых ситуациях. Также задача про батарейки попадается на ЕГЭ. Давайте разберём условие и решим её.</p><h2>Условие</h2><p>Перед программистом завода по производству батареек поставлена задача: разработать программное обеспечение, которое могло бы контролировать качество выпускаемой продукции. При этом есть два немаловажных нюанса:</p><ol><li>Каждая изготовленная батарейка может оказаться бракованной с вероятностью 2%.</li><li>Система контроля качества в 98% случаев обнаруживает неработающие батарейки и в 1% случаев бракует работающие.</li></ol><p>Разработчик должен определить среднее количество забракованных батареек на партию в 10 000 штук.</p><h2>Решение</h2><p>Сначала выясним, с какой вероятностью система забракует любую батарейку, а затем применим результат к десятитысячной партии.</p><ol><li>Вероятность брака = 0,02, тогда вероятность рабочей батарейки = 0,98.</li><li>Система контроля забракует рабочую батарейку с вероятностью 0,01 (вероятность ошибки) * 0,98 (вероятность изготовления рабочей батарейки) = 0,0098.</li><li>Система контроля забракует нерабочую батарейку с вероятностью 0,98 (вероятность обнаружения брака) * 0,02 (вероятность выпуска брака) = 0,0196.</li><li>Для нахождения вероятности отбраковки любой батарейки выполним сложение этих значений: 0,0098 + 0,0196 = 0,0294.</li></ol><p>Наша партия составляет 10 000 батареек. Применим к этому числу полученный результат:</p><p>10 000 * 0,0294 = 294</p><p>Это и есть среднее количество забракованных батареек на партию в 10 000 штук. Если в одной из таких партий объём отбракованной продукции будет сильно больше, следует проверить корректность работы оборудования.</p><p>Понравилось решение логической задачи про батарейки? Держите ещё несколько <a href="https://tproger.ru/problems/batteries-series-conferences/">задач для программистов</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Математическая модель предсказала лидера ЧМ по футболу в 2022 году</title>
      <link>https://tproger.ru/articles/matematicheskaja-model-predskazala-lidera-chm-po-futbolu-v-2022-godu</link>
      <comments>https://tproger.ru/articles/matematicheskaja-model-predskazala-lidera-chm-po-futbolu-v-2022-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/matematicheskaja-model-predskazala-lidera-chm-po-futbolu-v-2022-godu</guid>
      <description><![CDATA[<p>Построили математическую модель, которая предсказала победителя Чемпионата мира по футболу в 2022 году по данным побед на прошлых турнирах.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/matematicheskaja-model-predskazala-lidera-chm-po-futbolu-v-2022-godu">Математическая модель предсказала лидера ЧМ по футболу в 2022 году</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 03 Dec 2022 17:55:23 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пользователь Piero Paialunga <a href="https://towardsdatascience.com/2022-world-cup-simulator-using-data-science-with-python-6bf56a543436">провёл</a> математический эксперимент: он построил модель, которая предсказала победителя Чемпионата мира по футболу в 2022 году. Математическая модель учитывает данные прошлых лет и показатели сборных.</p><p>Дисклеймер: не используйте модель для ставок на спорт, ради бога! Это всего лишь математика, развлечение для гиков, а не оракул, которому можно безусловно доверять. Реальность куда более непредсказуема, поэтому поберегите свои деньги.</p><h2>Первые шаги</h2><p>Подготовим библиотеки для нашей модели:</p><p>Для построения математической модели используем данные о том, сколько раз каждая из сборных выигрывала Чемпионат мира или проходила групповой этап.</p><p>Начнём со статистики выигрышей:</p><p>Бразилия выигрывала Кубок мира 5 раз, Италия — 4 раза, Аргентина — 2 раза.</p><p>Теперь проанализируем, как часто сборным удавалось пройти через групповой этап:</p><p>Теперь мы можем предсказать, какие страны, скорее всего, не смогут пройти отбор в групповых матчах.</p><h2>Моделирование распределения вероятностей</h2><p>Теперь можно углубиться в детали и приступить непосредственно к симуляции Чемпионата мира.</p><p>Допустим, нам нужно смоделировать мачт между Командой-1 и Командой-2. Как выяснить, которая из них победит вторую?</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-23-47.png" alt="" /></figure><p>По этой формуле нужно рассчитать шансы для каждой сборной. Выше мы считаем вероятность победы Команды-1. То же самое нужно провернуть и для Команды-2.</p><p>Теперь о жеребьевке: конечно, две команды могут сыграть вничью в групповом этапе, но не в отборочном. О том, как с этим бороться, расскажем позже.</p><p>По аналогичной формуле мы можем найти шансы Команды-1 выиграть Чемпионат мира в целом:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-17-48.png" alt="" /></figure><p>Создадим таблицу с расчётами, чтобы их было удобнее сравнивать. Результаты занесем в столбец Результат — Result.</p><p>Выберем команды, которые принимают участие в Чемпионате мира 2022.</p><p>Теперь нужно сопоставить данные расчётов с данными по командам 2022 года. К примеру, данных по Катару, согласно нашей модели, у нас быть не может.</p><p>Вернёмся к расчёту вероятностей:</p><p>Проверим работу модели на случайных странах. К примеру, на сборных Уэльса, Камеруна, Кореи и Мексики.</p><p>Всё работает. Однако нам нужно высчитать вероятности для отдельных матчей, а не для целых сборных. Применим новое правило:</p><p>Такая модель будет работать только в том случае, если сборные уже играли между собой в прошлом. К примеру, вот что будет, если смодулировать матч Франция — Италия:</p><p>Но если сравнить Францию и Катар, возникнет проблема:</p><p>Теперь мы столкнулись с проблемой. У нас нет никаких данных, чтобы предсказать исход такого матча. В этом случае для сравнения предлагается использовать количество раз, когда команда проходила групповой этап.</p><p>Также будут учитываться разы, когда интересная нам сборная выигрывала Кубок мира.</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-18-03.png" alt="" /></figure><p>Теперь у нас есть две команды, и первая предположительно выигрывает в функции P(T_x1, T_x2). В этом случае преобразуем модель:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-18-19.png" alt="" /></figure><p>Та же модель для второй команды:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-18-23.png" alt="" /></figure><p>Сейчас модели могут рассчитывать только победу одной из команд, если нет данных по их прошлым играм. Но ведь они могут сыграть вничью, верно?</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-18-36.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-18-40.png" alt="" /></figure><p>Вероятность для них в целом выглядит так:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Snimok-jekrana-ot-2022-12-05-09-18-51.png" alt="" /></figure><p>Реализуем эту идею в коде.</p><p>Функция для предсказания результата одной команды:</p><p>Функция для предсказания результатов сразу двух команд:</p><p>Результат Катара, таким образом, будет равен 0.09. Это вполне справедливо при условии, что сборная никогда на играла на Кубке мира.</p><p>Полная функция:</p><p>К примеру:</p><p>Тогда результаты будут такими:</p><h2>Пора повеселиться!</h2><p>Пришло время запустить нашу модель. Построим группы Чемпионата мира в Катаре с вероятностями выигрыша, проигрыша и ничьей.</p><p>Также смоделируем отборочный этап, в котором вторые команды из групп будут играть с лидерами соседних групп.</p><p>Запустим алгоритм несколько раз и выберем победителя.</p><p>Объединим группы:</p><p>К примеру, вот результаты для второй группы:</p><p>Вот функция, которая позволяет задать название группы и определить результат:</p><p>Функция для всех групп:</p><p>Та же функция для всех групп:</p><p>Запускаем симуляцию для всех групп:</p><p>Взглянем на результаты:</p><p>Выглядит вполне реалистично!</p><p>Посмотрим, что покажет отборочный этап:</p><p>Запустим симуляцию для целого турнира:</p><p>Получаем результаты:</p><p>Запустим симуляцию 10 тысяч раз, чтобы результаты были максимально достоверными:</p><p>Вот диаграмма, на которой показано количество выигрышей для сборных:</p><p>В общем, с огромным отрывом должна победить Испания. Сенегал, Коста-Рика, Эквадор приятно удивляют. Испания, Германия и Англия остаются ожидаемыми лидерами.</p><p>Попытаемся определить вторую команду турнира:</p><p>Модель говорит, что второй командой окажутся Нидерланды!</p><h2>Заключение</h2><p>Теперь можно смотреть футбол и сравнивать наши результаты с реальными. ?</p><p>Повторяем, не используйте алгоритм для ставок на спорт. Тем более, что реальность уже немного отличается от предсказания математической модели.</p>]]></content:encoded>
    </item>
    <item>
      <title>7 заковыристых логико-математических задач</title>
      <link>https://tproger.ru/articles/7-zakovyristyh-logiko-matematicheskih-zadach</link>
      <comments>https://tproger.ru/articles/7-zakovyristyh-logiko-matematicheskih-zadach?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/7-zakovyristyh-logiko-matematicheskih-zadach</guid>
      <description><![CDATA[<p>Не самые сложные, но весьма запутанные логико-математические задачи. Сумеете решить все, не подглядывая в ответы?</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/7-zakovyristyh-logiko-matematicheskih-zadach">7 заковыристых логико-математических задач</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 25 Jul 2022 09:14:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Несколько логико-математических задач — это отличный способ скрасить досуг с пользой. Сумеете решить все, не подглядывая в ответы?</p><ol><li><a href="https://tproger.ru/#part1">Парадокс Монти Холла</a></li><li><a href="https://tproger.ru/#part2">Рукопожатия</a></li><li><a href="https://tproger.ru/#part3">Собеседование в Google</a></li><li><a href="https://tproger.ru/#part4">Бита и бейсбольный мяч</a></li><li><a href="https://tproger.ru/#part5">Эскалатор</a></li><li><a href="https://tproger.ru/#part6">Гнутая монета</a></li><li><a href="https://tproger.ru/#part7">Грузовики</a></li><li><a href="https://tproger.ru/#part8">Заключение</a></li></ol><h2>Парадокс Монти Холла</h2><p>Думаю, что многие знакомы с данным парадоксом. Но помните ли вы, как он объясняется?</p><p>Есть 3 пронумерованных ящика: «1», «2» и «3». В одном из них находится приз, а остальные пусты. Вы выбираете ящик «1». Ведущий знает, где лежит приз, специально открывает пустой ящик «2» и демонстрирует вам, что там приза нет. Теперь ведущий предлагает вам либо остаться при своем выборе, либо изменить его на ящик «3».</p><p>Стоит ли менять выбор? Аргументируйте.</p><h2>Рукопожатия</h2><p>А вот ещё одна популярная логико-математическая задача. Предположим, что каждый из участников хакатона единожды поздоровался с каждым. Всего получилось 78 рукопожатий. Сколько было участников?</p><h2>Собеседование в Google</h2><p>На листе бумаги написаны числа: 10, 9, 60, 90, 70, 66. Нужно написать следующее число.</p><p>Примечание Одна из любимых логических задач сотрудников Google, которую дают на собеседовании.</p><h2>Бита и бейсбольный мяч</h2><p>Держите лёгенькую логико-математическую задачку, которую можно решить в уме.</p><p>Комплект из биты и одного бейсбольного мяча стоит $13. Но бита дороже мяча на $3. Сколько стоит каждый предмет спортивного комплекта?</p><h2>Эскалатор</h2><p>Специалист по безопасности допустил ошибку, из-за чего началась утечка данных компании. Чтобы не потерять драгоценное время, он побежал в отдел разработчиков вниз по движущемуся эскалатору. Бзопасник насчитал 140 ступенек, спускаясь со скоростью 2 ступеньки в секунду. Через день ситуация повторилась, но теперь он бежал быстрее — 3 ступеньки в секунду, насчитав при этом на 28 ступеней больше.</p><p>Что ж это получается, чем быстрее бежишь, тем длиннее эскалатор? Сколько ступенек у эскалатора всего?</p><h2>Гнутая монета</h2><p>Вы играете в футбол и хотите подбросить монетку, чтобы решить, какой команде достанется мяч. Единственная монета, что у вас есть, является гнутой, и поэтому вносит явные искажения в результат при подбрасывании. Как вы тем не менее можете использовать такую монету, чтобы принять справедливое решение?</p><h2>Грузовики</h2><p>Держите последнюю заковыристую логико-математическую задачку. Предположим, вы держите парк из 50 грузовиков. Каждая из машин полностью заправлена и может проехать 100 км. Как далеко с их помощью вы сможете доставить определённый груз? Что будет, если в вашем распоряжении есть N грузовиков?</p><p>Учтите, что нет никаких заправочных станций. Единственное место, где можно найти горючее — это топливные баки грузовиков. Пересесть из грузовика в другой легковой автомобиль нельзя. Бросить грузовик без топлива, где бы это ни случилось, и без водителя — в порядке вещей. И единственное, что важно, — доставить ценный груз как можно дальше.</p><h2>Заключение</h2><p>Такие логико-математические задачи помогут с пользой скоротать время. Заметили неточность в решении? Напишите об этом в комментариях.</p><p>И на закуску держите интересную <a href="https://tproger.ru/problems/algoritmicheskaja-zadacha-pro-ostrova/">алгоритмическую задачку про острова</a> с несколькими вариантами решения.</p>]]></content:encoded>
    </item>
    <item>
      <title>Угадать число от 0 до 100 за 7 попыток — математический трюк</title>
      <link>https://tproger.ru/articles/matematicheskij-fokus-ugadat-chislo-ot-0-do-100-za-7-popytok</link>
      <comments>https://tproger.ru/articles/matematicheskij-fokus-ugadat-chislo-ot-0-do-100-za-7-popytok?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/matematicheskij-fokus-ugadat-chislo-ot-0-do-100-za-7-popytok</guid>
      <description><![CDATA[<p>Математический фокус, который способен удивить. Объясним алгоритм и напишем на Java простенькую программу для решения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/matematicheskij-fokus-ugadat-chislo-ot-0-do-100-za-7-popytok">Угадать число от 0 до 100 за 7 попыток — математический трюк</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 11 Feb 2022 08:30:41 GMT</pubDate>
      <content:encoded><![CDATA[<p>Этот математический фокус не так сложен, как может показаться на первый взгляд. Более того, решение мы реализуем программно на языке Java. Приступим?</p><h2>Условие</h2><p>Если расписать весь процесс поэтапно, выглядит это следующим образом:</p><ol><li>Вы загадываете число от 0 до 100.</li><li>Программа выводит целое число в рамках данного диапазона.</li><li>Вы отвечаете, ваше число больше, меньше или равно тому, что вывела программа.</li><li>Если число больше либо меньше, программа продолжает предлагать варианты.</li><li>За 7 или менее попыток число гарантированно угадывается.</li></ol><h2>Решение</h2><p>На самом деле, никакого особого секрета здесь нет, и решение строится на бинарном поиске. Это простая алгоритмическая задача, смысл которой в том, чтобы каждый раз делить оставшийся диапазон на 2. Таким образом мы с каждой попыткой вдвое сокращаем область поиска, увеличивая шансы на успех. Вот и весь математический фокус.</p><p>Допустим, первой догадкой алгоритма будет число 50, после чего становится понятно, в какую сторону исходного диапазона «шагать» дальше: это будет область 0–50 либо 51–100. Если первый вариант, то далее алгоритм предложит число 25 и так далее. Математические законы предполагают, что если число 100 делить вдвое 7 раз, мы гарантированно получим результат в районе единицы.</p><p>Можно найти число и в диапазоне побольше — от 0 до 127 или от 1 до 128. Всё потому, что 27=128. Соответственно, если у нас будет 8 попыток, область можно увеличить до 256, если 9 — до 512 и т. д. По этому же принципу работают <a href="https://tproger.ru/articles/dvoichnoe-binarnoe-derevo-sozdanie-i-obhod/">бинарные деревья</a>.</p><p>Но решать всё вручную с калькулятором наперевес — прошлый век. Давайте подключим код и посмотрим, как с этим справится программа.</p><h2>Решение кодом</h2><p>Воспроизведём решение с помощью Java без использования графического интерфейса. При желании всегда можно подключить Swing или JavaFX.</p><p>Для начала определимся с переменными, которые нам потребуются:</p><p>Поскольку мы будем работать с терминалом, подключим слушатель событий с помощью класса Scanner:</p><p>И объявим переменную слушателя:</p><p>Далее всё просто: программа выводит варианты, а пользователь отправляет +, - или =, в зависимости от того, больше загаданное число, меньше или идентично. Пока введённое значение не = (while (!strInput.equals("="))), продолжаем вычислять и делить заданный диапазон:</p><p>Понравилась задачка? Держите ещё один математический фокус в виде <a href="https://tproger.ru/articles/gipoteza-kollatca-samyj-krutoj-matematicheskij-fokus-vseh-vremjon/">гипотезы Коллатца</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>6 логико-математических задач, которые заставят хорошенько подумать</title>
      <link>https://tproger.ru/quiz/6-logiko-matematicheskih-zadach-kotorye-zastavjat-podumat</link>
      <comments>https://tproger.ru/quiz/6-logiko-matematicheskih-zadach-kotorye-zastavjat-podumat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/quiz/6-logiko-matematicheskih-zadach-kotorye-zastavjat-podumat</guid>
      <description><![CDATA[<p>Держите несколько логико-математических задач, которые помогут разнообразить досуг. Задачи идут в порядке усложнения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/quiz/6-logiko-matematicheskih-zadach-kotorye-zastavjat-podumat">6 логико-математических задач, которые заставят хорошенько подумать</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Викторины]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 06 Jan 2022 10:09:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Во время праздников как никогда хочется размяться, и поэтому мы подготовили для вас тест из 6 логико-математических задач. Кто-то посчитает их до невозможного простыми, а кому-то предстоит настоящий математический квест. Каждая следующая задача сложнее предыдущей. Готовы их пощёлкать?</p><p>Делитесь результатом в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>Зачем программисту математика, и причём тут аналитика</title>
      <link>https://tproger.ru/articles/zachem-programmistu-matematika-i-prichjom-tut-analitika</link>
      <comments>https://tproger.ru/articles/zachem-programmistu-matematika-i-prichjom-tut-analitika?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Виталий Цегельный]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/zachem-programmistu-matematika-i-prichjom-tut-analitika</guid>
      <description><![CDATA[<p>Математика помогает программисту работать с аналитикой и делать визуализацию бизнес-процессов интерактивнее. Ключевые аспекты: практические связи этих задач.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/zachem-programmistu-matematika-i-prichjom-tut-analitika">Зачем программисту математика, и причём тут аналитика</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 16 Nov 2021 08:40:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>Более 10 лет я занимаюсь преподаванием математики и программирования.</p><p>Многие программисты утверждают, что математика не так важна, как стек технологий, которые необходимо использовать для решения бизнес задач клиента. В большинстве случаев я соглашусь, и действительно, если человек не умеет программировать, не знает существующих бизнес-процессов, не понимает логики, то никакая математика ему не поможет. Данная статья адресована тем, кто желает анализировать свои данные, а визуализацию бизнес-процессов сделать более интерактивной и не только.</p><h2>Аналитика</h2><p>«Любой продукт, у которого есть аудитория, собирает данные. Аналитика есть везде: в банках, играх, консалтинге. Если сильно обобщить, то можно сказать так: там, где есть возможность сохранять данные о продукте и поведении пользователя, рано или поздно должен появиться аналитик.</p><p>Даже читая данную статью о вас собирают данные и через некоторое время ваш браузер заспамит вас рекламой от том, как стать великим аналитиком данных, а если у вас получится дочитать статью до конца, то это сделаю я и впихну вам какой-нибудь свой инфопродукт по обучению Data Science. Шутка. Мои курсы и так продаются хорошо, а научиться можно и без всяких курсов, ведь вся документация по популярным библиотекам находится в открытом доступе.</p><p>От вас только смогут спрятать технологии, с помощью которых эта аналитика делается намного быстрее, но поверьте мне, что и за большие деньги с Вами не поделятся данными технологиями. Высокими технологиями только делятся с теми, у которых есть подобные по масштабу технологии. Так что учитесь создавать свои продукты и анализируйте существующие, становитесь как программистом, так и аналитиком</p><p>Хороший аналитик данных не просто математик с навыками программиста. Он понимает бизнес-процессы и хорошо знает продукт. Такой специалист разбирается, на чем зарабатывает конкретный бизнес. В результате его работы компания может получать больше прибыли и делать своих пользователей счастливее. Сильный аналитик данных прежде чем взяться за работу всегда спрашивает руководителя о том, какую задачу хочет решить бизнес.</p><figure><img src="https://media.tproger.ru/uploads/2021/11/image.png" alt="" /></figure><p>Данные — очень важная информация для любой компании. По ним можно предсказать поведение клиентов, отследить спрос на определённый товар, улучшить сервис и повысить продажи. Обработка значений и показателей сформировала целую профессию — аналитик данных</p><p>Преобразование данных в полезную аналитику — это разница между борьбой за выживание и процветанием для самых разных предприятий и организаций. Чтобы максимального увеличить эффективность информации, требуется аналитика — процесс, при котором для получения выводов анализируются первичные данные.</p><p>Мой научный руководитель говорил: «Язык Python — это детский сад» и выступал всегда за системы компьютерной математики. Я с ним согласен, но на многих хакатонах я встречал ребят, которые делали прекрасную аналитику данных на Python с помощью библиотеки Pandas. Именно с изучения этого языка и библиотеки я вам и рекомендую начинать.</p><p>Пишите свои комментарии ведь это моя первая статья на tproger.ru и мне необходимо сделать аналитику о чём писать дальше, какие сервисы вам рекомендовать и какими кейсами делиться.</p>]]></content:encoded>
    </item>
    <item>
      <title>Вычисление чисел Фибоначчи</title>
      <link>https://tproger.ru/articles/chisla-fibonachchi</link>
      <comments>https://tproger.ru/articles/chisla-fibonachchi?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chisla-fibonachchi</guid>
      <description><![CDATA[<p>Что такое числа Фибоначчи и как написать программу вычисления последовательности? Разберём три примера на языке Java.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chisla-fibonachchi">Вычисление чисел Фибоначчи</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 03 Nov 2021 11:39:24 GMT</pubDate>
      <content:encoded><![CDATA[<p>Числа Фибоначчи — это числа такой последовательности, в которой первые два элемента — 0 и 1, а каждый последующий элемент равен сумме двух предшествующих. Выглядит это так:</p><p>Примечание Иногда 0 опускается, и в этом случае ряд начинается с 1, но мы будем использовать последовательность с 0 на первой позиции.</p><p>Формула записывается следующим образом:</p><p><a href="https://media.tproger.ru/uploads/2021/11/Fib_formula-1.jpg"></a></p><p>Вычисление ряда Фибоначчи — стандартная задача, которую задают на собеседованиях, чтобы проверить кандидата на понимание алгоритмов. Не так популярна, как сортировка, но всё же.</p><p>Давайте вычислим ряд и его отдельные элементы, использовав для этого язык Java.</p><ol><li><a href="https://tproger.ru/#part1">Цикл</a></li><li><a href="https://tproger.ru/#part2">Рекурсия</a></li><li><a href="https://tproger.ru/#part3">Stream</a></li><li><a href="https://tproger.ru/#part4">Тест</a></li></ol><h2>Вычислить ряд Фибоначчи циклом</h2><p>Предположим, что нам нужно вывести на экран первые десять чисел последовательности Фибоначчи. Мы помним, что:</p><ul><li>первый элемент ряда — 0, второй — 1;</li><li>каждый последующий — сумма двух предыдущих.</li></ul><p>Тогда наша последовательность будет иметь такой вид:</p><p>Но нам нужно вывести результат с использованием программы. Держите код с объяснениями в комментариях:</p><p>Выполнение завершится на десятом элементе. Количество элементов при этом можно менять, изменив значение в условиях цикла.</p><h2>Найти число Фибоначчи через рекурсию</h2><p>Рекурсивная функция — это такая функция, которая вызывает саму себя. Она также неплохо отрабатывает в алгоритмических задачах вроде чисел Фибоначчи, но ей требуется больше времени.</p><p>Почему так происходит? Всё дело в том, что рекурсивная функция приводит к многоразовому вызову одних и тех же операций. Именно из-за этого её не рекомендуется использовать, но если уж на собеседовании прозвучит такая задача, вы будете готовы.</p><p>Рассмотрим пример, в котором нам нужно получить n-ое число в ряде Фибоначчи:</p><p>Если в качестве num задать большое значение, программа зависнет.</p><p>Тип int в Java может хранить значения до 2147483647, так что вычислить получится лишь первые 46 чисел Фибоначчи. Тип long хранит до 9223372036854775807, а это 91 число Фибоначчи. Класс BigInteger призван работать с действительно большими значениями, вот только само выполнение программы это никак не ускорит.</p><h2>Использовать для вычисления Stream</h2><p>Stream в Java — это компонент для самостоятельной внутренней итерации своих же элементов. Подробнее о нём вы можете почитать в нашей <a href="https://tproger.ru/articles/chto-nuzhno-znat-o-java-stream-api/">статье о Java Stream API</a>.</p><p>И, разумеется, Stream подходит для вычисления элементов последовательности Фибоначчи:</p><p>В данном примере метод iterate() будет возвращать упорядоченный поток, ограниченный лимитом в num значений и созданный с применением функции к начальному массиву arr. В консоль будет выведено следующее:</p><p>А так мы получим сумму чисел последовательности по элемент num включительно:</p><h2>Математический тест</h2><p>Любите математику? Попробуйте решить наш математический тест:</p>]]></content:encoded>
    </item>
    <item>
      <title>Тест: 9 математических задач — от простого к сложному</title>
      <link>https://tproger.ru/quiz/test-9-matematicheskih-zadach-ot-prostogo-k-slozhnomu</link>
      <comments>https://tproger.ru/quiz/test-9-matematicheskih-zadach-ot-prostogo-k-slozhnomu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/quiz/test-9-matematicheskih-zadach-ot-prostogo-k-slozhnomu</guid>
      <description><![CDATA[<p>Подготовили для вас математический тест из девяти интересных задач. Сможете решить их все? Обязательно поделитесь результатом.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/quiz/test-9-matematicheskih-zadach-ot-prostogo-k-slozhnomu">Тест: 9 математических задач — от простого к сложному</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Викторины]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 03 Sep 2021 11:44:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>Предлагаем отдохнуть с пользой: решите девять математических задачек и поделитесь своим результатом в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>Книга «Байесовская статистика: Star Wars, LEGO, резиновые уточки и многое другое»</title>
      <link>https://tproger.ru/articles/kniga-bajesovskaya-statistika-star-wars-lego-rezinovye-utochki-i-mnogoe-drugoe</link>
      <comments>https://tproger.ru/articles/kniga-bajesovskaya-statistika-star-wars-lego-rezinovye-utochki-i-mnogoe-drugoe?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Neorus10]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kniga-bajesovskaya-statistika-star-wars-lego-rezinovye-utochki-i-mnogoe-drugoe</guid>
      <description><![CDATA[<p>Издательство «Питер» выпустило книгу о байесовской статистике: как принимать решения с помощью интуиции и простой математики на ярких примерах.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kniga-bajesovskaya-statistika-star-wars-lego-rezinovye-utochki-i-mnogoe-drugoe">Книга «Байесовская статистика: Star Wars, LEGO, резиновые уточки и многое другое»</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Статистика]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 25 May 2021 01:49:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Привет! От издательства «Питер» вышла новая интересная книга — «Байесовская статистика», при покупке с сайта издательства — электронная книга в подарок. Так же есть промокод на скидку в 25%.</p><p>Нужно решить конкретную задачу, а перед вами куча непонятных данных, в которой черт ногу сломит? «Байесовская статистика» расскажет, как принимать правильные решения, задействуя свою интуицию и простую математику.</p><p>Пора забыть про заумные и занудные университетские лекции! Эта книга даст вам полное понимание байесовской статистики буквально «на пальцах» — с помощью простых объяснений и ярких примеров.</p><p>Чтобы узнать, как применить байесовские подходы к реальной жизни, вы отправитесь на охоту за НЛО, поиграете в «Лего», рассчитаете вероятность выживания Хана Соло при полете через поле астероидов, а также узнаете, как оценить вероятность того, что вы не заболели (ковидом?!), несмотря на то, что нагуглили все симптомы родильной горячки.</p><p>Прикладные задачи и упражнения помогут закрепить материал и заложить фундамент для работы с широким спектром задач: от невероятных текущих событий до ежедневных сюрпризов делового мира.</p><p>Вашему внимаю предлагаю отрывок из главы.</p><h2>Оценка параметров с априорными вероятностями</h2><p>В этой главе вы увидите, как можно использовать наши предыдущие вероятности в сочетании с данными наблюдений, чтобы получить более точную оценку, которая сочетает существующие знания с собранными данными.</p><p><b>Прогнозирование коэффициентов конверсии рассылки</b></p><p>Чтобы понять, как изменяется бета-распределение при получении информации, посмотрим на другой коэффициент конверсии. В этом примере мы попытаемся выяснить, с какой скоростью подписчики нажимают на ссылку после того, как они открыли ваше письмо. Большинство компаний, предоставляющих услуги по управлению рассылкой, в реальном времени сообщают вам, сколько людей открыли сообщение и нажали на ссылку.</p><p>Наши данные пока говорят, что из первых пяти человек, открывших письмо, двое нажимают на ссылку. На рис. 14.1 показано бета-распределение этих данных.</p><figure><img src="https://media.tproger.ru/uploads/2021/05/3-2.png" alt="" /></figure><p>Рисунок 14.1 показывает распределение Beta(2,3). Мы использовали эти цифры, потому что два человека перешли по ссылке, а трое — нет. В отличие от предыдущей главы, где у нас был довольно узкий скачок возможных значений, здесь мы имеем огромный диапазон возможных значений для истинного коэффициента конверсии, потому что у нас очень мало информации для работы. Рисунок 14.2 показывает CDF для этих данных, чтобы помочь нам легче рассуждать об этих вероятностях.</p><p>95%-ный доверительный интервал (то есть 95%-ная вероятность того, что истинный коэффициент конверсии находится где-то в этом диапазоне) отмечен, чтобы его было легче увидеть. На данный момент наши данные говорят, что истинный коэффициент конверсии может располагаться где угодно между 0,05 и 0,8! Это отражение того, как мало информации мы на самом деле получили. Учитывая, что у нас было две конверсии, мы знаем, что истинная ставка не может быть равна 0, и, поскольку у нас было три не конверсии, мы также знаем, что она не может быть равна 1. Почти все остальное — справедливо.</p><figure><img src="https://media.tproger.ru/uploads/2021/05/4.png" alt="" /></figure><p><b>Использование широкого контекста с априорными вероятностями</b></p><p>Подождите секунду — вы можете ничего не знать о рассылках, но 80%-ный рейтинг переходов по ссылке — это маловероятно. Я подписываюсь на множество рассылок, но определенно не перехожу к контенту в 80% случаев, когда открываю письмо. Принимать эти 80% за чистую монету кажется наивным, когда я рассматриваю собственное поведение.</p><p>Оказывается, ваш провайдер тоже считает это подозрительным. Давайте посмотрим на более широкий контекст. По данным вашего провайдера, для блогов, относящихся к той же категории, что и ваш, только 2,4% людей, открывающих письма, переходят к контенту.</p><p>Из главы 9 вы узнали, как можно использовать полученную информацию, чтобы изменить убеждение в том, что Хан Соло может успешно перемещаться по астероидной области. Наши данные говорят одно, но исходная информация утверждает другое.</p><p>Как вы уже знаете, в байесовских терминах данные, которые мы наблюдали, являются нашей правдоподобностью, а информация внешнего контекста — в данном случае из личного опыта и от провайдера — априорной вероятностью. Наша задача сейчас состоит в том, чтобы выяснить, как моделировать априорные вероятности. К счастью, в отличие от случая с Ханом Соло у нас действительно имеются данные, чтобы упростить задачу.</p><p>Коэффициент конверсии от провайдера, равный 2,4%, дает отправную точку: теперь мы знаем, что нужно бета-распределение со средним значением примерно 0,024. (Среднее значение бета-распределения составляет α/(α + β).) Однако это все еще оставляет возможные варианты: Beta(1,41), Beta(2,80), Beta(5200), Beta(24 976) и т. д. Итак, что же из этого нужно использовать? Изобразим некоторые из них на графике (рис. 14.3).</p><figure><img src="https://media.tproger.ru/uploads/2021/05/5-1.png" alt="" /></figure><p>Как видите, чем меньше α + β, тем шире распределение. Проблема заключается в том, что даже самый свободный вариант, который мы имеем, Beta(1,41), кажется слишком пессимистичным, так как большая часть плотности вероятности помещается в очень низкие значения. Но мы будем придерживаться этого распределения, поскольку оно основано на 2,4%-ном коэффициенте конверсии в данных от провайдера и является самым слабым из приоритетов. «Слабая» априорная вероятность означает, что она будет легко переопределена фактическими данными, поскольку мы соберем еще больше информации. Более сильная априорная вероятность, такая как Beta(5200), потребовала бы больше доказательств для изменения (посмотрим, как это будет выглядеть дальше). Решение о том, следует ли использовать строгую априорную вероятность, является оценочным, исходя из того, насколько сильно вы ожидаете, что априорные данные описывают то, что вы делаете в данный момент. Как мы увидим, даже слабый априорный показатель может помочь сделать наши оценки более реалистичными при работе с небольшими объемами данных. Помните, что при работе с бета-распределением можно вычислить апостериорное распределение (сочетание нашей вероятности и априорной вероятности), просто сложив вместе параметры для двух бета-распределений:</p><p>Используя эту формулу, мы можем сравнить свои убеждения с априорной вероятностью и без априорной вероятности, как показано на рис. 14.4.</p><p>Ого! Выглядит довольно отрезвляюще. Несмотря на то что мы работаем с относительно слабой априорной вероятностью, мы видим, что это оказало огромное влияние на то, что мы считаем реалистичными коэффициентами конверсии.</p><p>Обратите внимание, что для правдоподобности без априорных данных мы считаем, что коэффициент конверсии может достигать 80%. Как уже упоминалось, это очень подозрительно; любой опытный маркетолог, работающий с электронной почтой, скажет вам, что 80%-ный коэффициент конверсии — это неслыханно. Добавление априорной вероятности к правдоподобности корректирует наши убеждения, так что они становятся намного более разумными.</p><p>Но я все еще думаю, что наши обновленные убеждения немного пессимистичны. Может быть, истинный коэффициент конверсии не равен 40%, но он все же может быть лучше, чем предполагает нынешнее апостериорное распределение.</p><figure><img src="https://media.tproger.ru/uploads/2021/05/6.png" alt="" /></figure><p>Как можно доказать, что блог имеет лучший коэффициент конверсии, чем сайты, указанные в данных провайдера, имеющие коэффициент 2,4%? Как бы поступил любой рациональный человек? Предоставил больше данных! Мы ждем несколько часов, чтобы получить больше результатов, и выясняем, что из 100 человек, открывших письмо, 25 перешли по ссылке! Давайте посмотрим на разницу между нашей новой апостериорной вероятностью и правдоподобностью (рис. 14.5).</p><figure><img src="https://media.tproger.ru/uploads/2021/05/7.png" alt="" /></figure><p>По мере того как мы продолжаем собирать данные, мы видим, что апостериорное распределение с использованием априорной вероятности начинает смещаться в сторону без априорной вероятности. Априорная вероятность по-прежнему контролирует наши данные, давая более консервативную оценку истинного коэффициента конверсии. Однако при добавлении доказательств к нашей правдоподобности она начинает оказывать большее влияние на то, как выглядят апостериорные убеждения. Другими словами, дополнительные наблюдаемые данные делают то, что и должны: медленно раскачивают наши убеждения, чтобы соответствовать реальности. Так что давайте подождем еще ночь и вернемся, имея на руках еще больше данных!</p><p>Утром мы видим, что 300 подписчиков открыли письма и 86 из них нажали на ссылку. На рис. 14.6 показаны наши обновленные убеждения.</p><figure><img src="https://media.tproger.ru/uploads/2021/05/8.png" alt="" /></figure><p>То, что мы наблюдаем здесь, является наиболее важным моментом в байесовской статистике: чем больше данных собирается, тем больше наши априорные убеждения уменьшаются в результате доказательств. Когда у нас почти не было доказательств, наша вероятность предложила некоторые варианты, которые, как мы знаем, абсурдны (например 80% переходов) как интуитивно, так и из личного опыта. В свете небольшого количества доказательств наши априорные убеждения опровергли все имеющиеся данные.</p><p>Но по мере того как мы продолжаем собирать данные, которые не согласуются с априорными вероятностями, последующие убеждения смещаются в сторону того, что говорят нам собранные данные, и отходят от первоначальной априорной вероятности.</p><p>Другим важным выводом является то, что мы начали с довольно слабой априорной вероятности. Даже тогда, после всего лишь одного дня сбора сравнительно небольшого набора данных, мы смогли найти апостериорную вероятность, которая кажется гораздо более разумной.</p><p>Распределение априорных вероятностей в этом случае очень помогло сделать оценку намного более реалистичной при отсутствии данных. Это априорное распределение вероятностей было основано на реальных данных, поэтому мы могли быть вполне уверены, что оно поможет приблизить оценку к реальности. Тем не менее во многих случаях никаких данных для сохранения априорных вероятностей обычно нет. Так что же делать?</p><p><b>Априорная вероятность как средство измерения опыта</b></p><p>Поскольку мы знали, что идея 80%-ного коэффициента конверсии смехотворна, то использовали данные провайдера, чтобы составить более точную оценку априорной вероятности. Но даже если бы у нас не было данных, которые могли бы помочь установить априорную информацию, то мы все равно могли бы попросить кого-то, имеющего маркетинговый опыт, помочь сделать хорошую оценку. Например, опытный маркетолог знает, что стоит ожидать, к примеру, около 20% коэффициента конверсии.</p><p>Учитывая эту информацию от опытного профессионала, можно выбрать относительно слабую априорную вероятность, такую как Beta(2,8), чтобы предположить, что ожидаемый коэффициент конверсии должен составлять около 20%. Это распределение является лишь предположением, но важно то, что мы можем количественно оценить это предположение. Почти для каждого бизнеса эксперты часто могут предоставить мощную априорную информацию, основанную просто на предыдущем опыте и наблюдениях, даже если у них нет специальной подготовки по определению вероятности.</p><p>Количественно оценивая этот опыт, мы можем получить более точные оценки и посмотреть, как они могут меняться от эксперта к эксперту. Например, если маркетолог уверен, что истинный коэффициент конверсии должен составлять 20%, мы можем смоделировать это убеждение как Beta(200 800). По мере сбора данных мы можем сравнивать модели и создавать несколько доверительных интервалов, которые количественно моделируют любые экспертные убеждения. Кроме того, по мере получения все большего и большего количества информации разница из-за этих априорных убеждений будет уменьшаться.</p><p>Более подробно с книгой «Байесовская статистика» можно ознакомиться на <a href="https://www.piter.com/collection/kompyutery-i-internet/product/bayesovskaya-statistika">сайте издательства</a>.</p><p>Для читателей Tproger скидка 25% по купону — <b>Байес.</b></p><p>По факту оплаты бумажной версии книги «Байесовская статистика» на e-mail высылается электронная книга.</p>]]></content:encoded>
    </item>
    <item>
      <title>7 логико-математических задач про бегемотов, которые заставят поломать голову</title>
      <link>https://tproger.ru/articles/7-logiko-matematicheskih-zadach-pro-begemotov-kotorye-zastavjat-polomat-golovu</link>
      <comments>https://tproger.ru/articles/7-logiko-matematicheskih-zadach-pro-begemotov-kotorye-zastavjat-polomat-golovu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Клименков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/7-logiko-matematicheskih-zadach-pro-begemotov-kotorye-zastavjat-polomat-golovu</guid>
      <description><![CDATA[<p>Семь несложных логических и математических задач про разумных цивилизованных бегемотов, которые живут на острове, с объяснениями решений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/7-logiko-matematicheskih-zadach-pro-begemotov-kotorye-zastavjat-polomat-golovu">7 логико-математических задач про бегемотов, которые заставят поломать голову</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачи повышенной сложности]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 09 Apr 2021 09:19:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Предлагаю вам для развлечения решить семь несложных логических и математических задач про разумных цивилизованных бегемотов, живущих на острове.</p><h2>1. Интегральное исчисление и мороженое</h2><p>Бегемоты знают интегральное исчисление. Все бегемоты любят мороженое. Какое из следующих утверждений является истинным?</p><ol><li>Бегемоты, которые знают интегральное исчисление, не любят мороженое.</li><li>Все, кто знает интегральное исчисление, любят мороженое.</li><li>Бегемоты, которые любят мороженое, не знают интегральное исчисление.</li><li>Некоторые знатоки интегрального исчисления любят мороженое.</li><li>Интегральное исчисление знают только бегемоты.</li><li>Все знатоки интегрального исчисления не любят мороженое.</li></ol><h2>2. Задача про апельсины</h2><p>Два бегемота съели 100 апельсинов. Первый бегемот потратил на это на 5 часов больше, чем второй, и съел за эти 5 часов 10 апельсинов. Но второй бегемот пожирал апельсины на 50 % быстрее. Сколько времени затратил каждый бегемот на поглощение апельсинов?</p><h2>3. Законы физики в бассейне</h2><p>После плотного перекуса бегемоты отдыхали у бассейна. Они решили устроить конкурс — кто из них самый толстый. Бассейн полон воды и достаточно большой, чтобы в нём поместились все бегемоты разом. Поблизости нет никаких измерительных инструментов. Что вы посоветуете бегемотам?</p><h2>4. Считаем кокосы</h2><p>После купания один из бегемотов задумчиво разглядывал пальмы и считал кокосы. На первой пальме было 11 кокосов, на второй — 16, на третьей — 7, на четвёртой — 21, на пятой вообще не было кокосов, а на шестой выросло целых 34 кокоса. «Какие-то неправильные пальмы», — подумал бегемот. Чем бегемоту не понравились пальмы?</p><h2>5. Задача про апельсиновый сок</h2><p>Устав от созерцания кокосов, бегемот захотел пить и заказал в интернет-магазине 230 литров апельсинового сока. Его доставили вертолётом в одной огромной бочке. Этот сок надо поделить между пятью бегемотами. Как за минимальное количество шагов поделить апельсиновый сок поровну между бегемотами, если у них есть только две ёмкости — 21 и 17 литров?</p><h2>6. Бегемоты программируют на Python</h2><p>Иногда полезно и поработать! Некоторые бегемоты программируют на Python. Все программисты на Python носят шляпы. Какие из следующих утверждений являются истинными:</p><ol><li>Все бегемоты носят шляпы.</li><li>Некоторые из тех, кто носят шляпы, — бегемоты.</li><li>Все те, кто носят шляпы, программируют на Python.</li><li>Все программисты на Python — бегемоты.</li><li>Некоторые бегемоты, которые не программируют на Python, могут носить шляпы.</li><li>Некоторые программисты на Python могут не носить шляпы.</li></ol><h2>7. Лотерея</h2><p>Заработав немного денег, наши бегемоты решили сыграть в лотерею. Лотерейные билеты имеют семизначные номера. Бегемоты решили купить такие билеты, у которых сумма цифр в номере будет равняться их любимому числу — 62. Сколько всего билетов смогут купить бегемоты, если все билеты пока есть в наличии?</p><p>Если хотите ещё немного размять мозги, посмотрите подборку <a href="https://tproger.ru/articles/10-logicheskih-zadach-s-sobesedovanij-kotorye-zastavjat-zastrelitsja/">10 логических задач с собеседований, которые заставят застрелиться</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Теория вероятностей для самых маленьких</title>
      <link>https://tproger.ru/translations/teorija-verojatnostej-dlja-samyh-malenkih</link>
      <comments>https://tproger.ru/translations/teorija-verojatnostej-dlja-samyh-malenkih?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/teorija-verojatnostej-dlja-samyh-malenkih</guid>
      <description><![CDATA[<p>Основы статистики и вероятностей, которые нужны при изучении машинного обучения и лежат в основе data science — простое объяснение с нуля.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/teorija-verojatnostej-dlja-samyh-malenkih">Теория вероятностей для самых маленьких</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Статистика]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 31 Mar 2021 11:56:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой статье мы рассмотрим основы статистики, полезные изучающим машинное обучение, а также желающим освежить свои знания. Понятия, о которых пойдет речь ниже, встречаются в очень разнообразных контекстах, а также лежат в основе всеми любимого data science. Всегда полезно повторить азы теории, так как зачастую это помогает открыть для себя что-то новое, на что раньше не обращали внимание. Поэтому, начнем.</p><h2>Вероятности</h2><p>Зачем нам нужны вероятности, когда мы обладаем таким мощным математическим инструментарием? У нас есть матанализ для работы с функциями на бесконечно малых величинах и оценки их динамики.  У нас есть алгебра для решения уравнений, а также десятки других областей математики, с помощью которых мы можем решить едва ли не любую задачу.</p><p>Проблема в том, что мы живем в хаотичной вселенной, где точные измерения чаще всего невозможны. Изучая реальные процессы, происходящие в мире, мы хотим понять, какие случайные события влияют на наши эксперименты. Нас окружает неопределенность, и важно уметь «обуздать» и использовать ее в своих целях. Именно в такие моменты в ход идет теория вероятностей и статистика.</p><p>В наш век именно эти дисциплины лежат в основе искусственного интеллекта, физики элементарных частиц, обществознания, биоинформатики.</p><p>Перед тем как говорить о статистике, необходимо определиться с понятием вероятности. Как ни странно, однозначного ответа нет. Рассмотрим несколько теоретических подходов к определению вероятности.</p><h3>Частотная вероятность</h3><p>Представим, что нам дали монету, и мы хотим определить является ли она честной. Как это можно сделать? Подбросим ее несколько раз и запишем как 1, если выпадет орёл, 0 – если выпадет решка. Повторим этот эксперимент 1000 раз, и подсчитаем все 0 и 1. Допустим, по результатам этого утомительного процесса мы насчитали 600 орлов (1) и 400 решек (0). Если мы посчитаем частоту, с которой нам выпадал орёл или решка, мы получим 60% и 40%, соответственно. Эти частоты могут интерпретироваться как вероятности того, что, подбросив монету, нам выпадет орёл или решка. Такой подход к вероятностям называется <a href="https://en.wikipedia.org/wiki/Frequentist_probability">частотным</a>.</p><h3>Условные вероятности</h3><p>Зачастую нам нужно узнать вероятность наступления события при условии, что произошло другое событие. В этом случае, мы указываем условную вероятность события A при условии, что произошло событие B как P (A | B). Рассмотрим это на примере дождя:</p><ul><li>Какова вероятность дождя, если мы слышим раскаты грома?</li><li>Какова вероятность дождя, если на улице солнце?</li></ul><figure><img src="https://media.tproger.ru/uploads/2021/03/1-5.png" alt="" /></figure><p>Из этой <a href="https://en.wikipedia.org/wiki/Euler_diagram">диаграммы Эйлера</a> мы видим, что P (Дождь | Гром) = 1: дождь идет всегда, когда мы слышим раскаты грома и видим молнии (в реальности это не всегда так, но примем условности для целей нашего примера).</p><p>А что насчет P (Дождь | Солнце)? На глаз, эта вероятность достаточно мала, но есть ли способ рассчитать ее точно? Условная вероятность определяется как:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/2-1.png" alt="" /></figure><p>Иными словами, мы должны поделить вероятность наступления обоих событий – Дождя и Солнечной погоды на вероятность события Солнечная погода.</p><h3>Зависимые и независимые события</h3><p>События называются независимыми, если вероятность наступления любого из них никак не зависит от наступления других событий. Например, рассмотрим вероятность того, чтобы бросить игральные кости и выкинуть две двойки подряд. Это независимые события. Иными словами,</p><figure><img src="https://media.tproger.ru/uploads/2021/03/3.png" alt="" /></figure><p>Но почему эта формула работает? Для начала обозначим броски №1 и №2 как A и B, чтобы упростить формулу, а далее перепишем вероятность бросания костей как вероятность появления двух независимых событий:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/4-2.png" alt="" /></figure><p>Затем умножим P(A) на P(B) / P(B), а далее вспомним определение условной вероятности:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/5.png" alt="" /></figure><p>Если формулу выше прочитать справа налево, мы увидим, что P (A | B) = P(A). По сути, это означает, что событие A не зависит от события B. Такая же логика справедлива и в отношении P(B).</p><h3>Байесовский подход к вероятности</h3><p>Существует еще один подход к определению вероятностей, который называется <a href="https://en.wikipedia.org/wiki/Bayesian_probability">Байесовским</a>. Частотный подход к статистике предполагает существование одной оптимальной и конкретной комбинации параметров для модели. Частотная статистика работает с неопределенностью через достаточно сложные для понимания доверительные интервалы (confidence interval). К примеру, 95% доверительный интервал в частотной статистике означает, что если бы мы проводили измерение бесконечное количество раз, то истинное значение параметра попадало бы в этот интервал в 95% случаев. Сбивает с толку, да?</p><p>С другой стороны, Байесовская теорема подходит к параметрам с вероятностных позиций и рассматривает их как случайные величины. В Байесовской статистике каждый параметр обладает собственным распределением вероятности, которое отражает, насколько вероятны данные параметры, учитывая имеющиеся в наличии данные. Математически это можно представить как:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/6-1.png" alt="" /></figure><p>В отличие от частотного подхода, Байесовская статистика работает с неопределенностью через достоверные интервалы (credible interval), которые интуитивно понятны. 95% достоверный интервал означает, что значение измеряемого параметра попадает в него с 95% вероятностью.</p><p>В этой ветке статистики все крутится вокруг теоремы, позволяющей рассчитать условные вероятности исходя из накопленных знаний:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/7.png" alt="" /></figure><p>Несмотря на кажущуюся простоту, Теорема Байеса имеет огромную ценность, она применяется в различных областях, и даже существует отдельная ветвь статистики, которая называется Байесовская статистика. Если интересно понять, как выводится эта формула, то вот ссылка на <a href="https://www.countbayesie.com/blog/2015/2/18/bayes-theorem-with-lego">отличный пост, посвященный Теореме Байеса</a>.</p><h2>Распределения</h2><p>Распределение вероятностей – это закон, описывающий вероятности наступления всех возможных исходов какой-либо случайной величины, выраженных в виде математической функции. Как и любая функция, распределение может обладать параметрами, позволяющими скорректировать его характеристики.</p><p>Когда мы измеряли относительную частоту исходов такого события как подбрасывание монеты, мы на самом деле рассчитали так называемое <a href="https://en.wikipedia.org/wiki/Empirical_probability">эмпирическое распределение вероятностей</a>. Многие процессы, отличающиеся неопределенностью, могут быть описаны в терминах распределения вероятностей. Так, например, подбрасывание монеты описывается <a href="https://en.wikipedia.org/wiki/Bernoulli_distribution">распределением Бернулли</a>, а если бы мы захотели рассчитать вероятность, что после n попыток выпадет орел, мы можем прибегнуть к<a href="https://en.wikipedia.org/wiki/Bernoulli_distribution"> Биномиальному распределению</a>.</p><p>Для удобства работы с вероятностями введем новое понятие, аналогичное переменной, — случайная переменная. Каждая случайная переменная соответствует определенному распределению. Случайные величины принято обозначать заглавной буквой, а также мы можем использовать символ ~, чтобы обозначить, какому распределению соответствует переменная.</p><figure><img src="https://media.tproger.ru/uploads/2021/03/8-2.png" alt="" /></figure><p>Это означает, что случайная переменная X описывается распределением Бернулли, при этом вероятность успеха (выпадение орла) равна 0,6.</p><h3>Непрерывное и дискретное распределение вероятностей</h3><p>Распределения вероятностей бывают двух типов. Дискретное распределение описывает случайные величины, которые принимают конечное число значений, как это было в примере с монетой и распределением Бернулли. Дискретные распределения определяются Функцией распределения масс (Probability Mass Function).  Непрерывное распределение описывает непрерывные случайные величины, которые (в теории) могут принимать бесчисленное число значений. Например, когда мы измеряем скорость и ускорение датчиками с высокими шумами. Непрерывные распределения определяются Функцией плотности распределения вероятности (Probability Density Function).</p><p>При расчете статистик для дискретного распределения вероятностей применяется суммирование ∑, а для непрерывного – интегралы ∫. Например, математическое ожидание будет иметь следующий вид:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/9-2.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2021/03/10.png" alt="" /></figure><h2>Выборки и статистики</h2><p>Представим, что мы хотим измерить рост людей в своем городе. Чтобы измерения были независимыми, мы оценивали рост случайных прохожих на улице. Процесс случайного отбора подмножества данных из общей (генеральной) совокупности называется выборкой.</p><p>Выборка сама по себе достаточно сложна для понимания. Для того, чтобы описать ее более понятным для человека способом используются статистические показатели – обобщающие математические функции.</p><p>С одним таким показателем вы скорее всего уже сталкивались – это арифметическое среднее.</p><figure><img src="https://media.tproger.ru/uploads/2021/03/11-1.png" alt="" /></figure><p>Другой пример – это дисперсия выборки:</p><figure><img src="https://media.tproger.ru/uploads/2021/03/12-1.png" alt="" /></figure><p><a href="https://en.wikipedia.org/wiki/Variance#Sample_variance">Данная формула</a> характеризует разброс значений в массиве данных относительно среднего.</p><h2>А если я хочу узнать больше?</h2><p>Знания статистики могут пригодиться в самых неочевидных ситуациях. Как сказал известный статист Джон Тьюки: «The best thing about being a statistician is that you get to play in everyone’s backyard».</p><p>Вот небольшая подборка ресурсов для продолжения изучения математической статистики:</p><ul><li>Начинающие: <a href="https://www.khanacademy.org/math/statistics-probability">Академия Khan</a> – это отличный бесплатный ресурс. Их курс даст вам представление об основах теории вероятностей и статистики простым и понятным языком.</li><li>Средний уровень: Учебник Ларри Вассермана All of the statistics представляет собой отличный обзор всех наиболее важных вопросов статистики в сжатой форме. Но имейте в виду, эта книга рассчитана на читателей, уже знакомых с линейной алгеброй и математическим анализом.</li><li>Продвинутый уровень: Предположу, что, дойдя до этого этапа, вы уже составите свой собственный список литературы ?. Однако, вот несколько полезных источников, о которых не всем известно:Computer Age Statistical Inference (https://web.stanford.edu/~hastie/CASI/), Trevor Hastie and Bradley Efron – книга о современных статистических методах.Statistical Rethinking (https://xcelab.net/rm/statistical-rethinking/) – книга по Байесовской статистике.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Муравей Лэнгтона — загадочный клеточный автомат</title>
      <link>https://tproger.ru/articles/muravej-ljengtona-zagadochnyj-kletochnyj-avtomat</link>
      <comments>https://tproger.ru/articles/muravej-ljengtona-zagadochnyj-kletochnyj-avtomat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Клименков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/muravej-ljengtona-zagadochnyj-kletochnyj-avtomat</guid>
      <description><![CDATA[<p>Муравей Лэнгтона — математическая абстракция и модель динамической системы, которая перемещается по клеткам бесконечной белой плоскости.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/muravej-ljengtona-zagadochnyj-kletochnyj-avtomat">Муравей Лэнгтона — загадочный клеточный автомат</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 29 Mar 2021 11:07:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>В мире существует около 14 000 видов муравьёв, каждый из которых имеет собственное название. Но, даже если вы зададитесь такой целью, вы не найдёте ни в одном биологическом справочнике муравья Лэнгтона. Дело в том, что этот муравей — математическая абстракция, модель для описания поведения динамической системы. Иногда складывается впечатление, что математики вообще неравнодушны к муравьям — вспомним хотя бы уже ставший классическим <a href="https://tproger.ru/articles/kak-muravi-reshajut-problemy-kommivojazhjorov/">муравьиный алгоритм</a>. Да и во всяких логических моделях и задачах муравьи встречаются довольно часто.</p><h2>От хаоса к строгому порядку</h2><p>Познакомимся с муравьём Лэнгтона поближе. Он живёт на бесконечной плоскости, состоящей из белых клеток. У него есть два неиссякаемых ведёрка — одно с белой краской, другое с чёрной. Муравей перемещается по клеткам плоскости от одной клетки к другой. При этом он выполняет несложный алгоритм:</p><ol><li>Если клетка белая, то муравей перекрашивает её в чёрный цвет, поворачивает на 90° направо (по часовой стрелке) и делает шаг вперёд.</li><li>Если клетка чёрная, то муравей перекрашивает её в белый цвет, поворачивает на 90° налево (против часовой стрелке) и делает шаг вперёд.</li></ol><p>Вот, собственно, и всё. Невесёлая жизнь у муравья Лэнгтона, но, как мы увидим, он не готов мириться с такой возмутительной ситуацией и всеми силами старается сбежать.</p><p>Написать программу, которая моделирует поведение муравья Лэнгтона, — это несложная задача. В сети есть много примеров реализации этого алгоритма: <a href="http://www.langtonant.com/">попроще</a> и <a href="https://josephpetitti.com/ant">посложнее</a> — с набором дополнительных настроек.</p><p>Попробуйте понаблюдать за перемещениями этого муравья по его клетчатой плоскости. На первый взгляд, его шаги полностью хаотичны — никакого порядка не наблюдается. Но, перефразируя известную поговорку, если долго наблюдать за муравьём, можно увидеть, как он убегает. Где-то после 10 000 шагов муравей вдруг осознаёт тщетность бытия и предпринимает попытку сбежать — он начинает строить периодическую конструкцию, каждые 104 шага перемещают его на две клетки по диагонали. После этого эти шаги повторяются. Эта конструкция уже никогда не станет хаотичной — теперь муравей так и будет двигаться по широкой диагональной полосе-магистрали, состоящей из чёрных и белых клеток.</p>]]></content:encoded>
    </item>
    <item>
      <title>Гипотеза Коллатца — самый крутой математический фокус всех времён</title>
      <link>https://tproger.ru/articles/gipoteza-kollatca-samyj-krutoj-matematicheskij-fokus-vseh-vremjon</link>
      <comments>https://tproger.ru/articles/gipoteza-kollatca-samyj-krutoj-matematicheskij-fokus-vseh-vremjon?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Клименков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/gipoteza-kollatca-samyj-krutoj-matematicheskij-fokus-vseh-vremjon</guid>
      <description><![CDATA[<p>Одна из нерешённых проблем математики формулируется просто и выглядит как фокус с загаданным числом, хотя никакого подвоха в ней нет.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/gipoteza-kollatca-samyj-krutoj-matematicheskij-fokus-vseh-vremjon">Гипотеза Коллатца — самый крутой математический фокус всех времён</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 10 Mar 2021 08:52:15 GMT</pubDate>
      <content:encoded><![CDATA[<p>В книгах и в Интернете часто можно встретить разные математические фокусы. В таких фокусах вас просят задумать какое-то число, затем выполнить с ним ряд арифметических действий. После этого собеседник точно называет вам получившееся у вас число. Большинство этих фокусов основано на том, что исходное число в ходе преобразований незаметно подменяется другим, а затем за несколько шагов сводится к известному ответу. Такие фокусы, например, можно встретить в книгах Якова Перельмана.</p><p>Гипотеза Коллатца оставляет все <a href="https://tproger.ru/articles/matematicheskij-fokus-ugadat-chislo-ot-0-do-100-za-7-popytok/">подобные фокусы</a> позади. На первый взгляд может показаться, что это тоже какой-то фокус с подвохом. Однако при внимательном рассмотрении оказывается, что никакого подвоха нет. Вы загадываете число и несколько раз повторяете для него одно из двух арифметических действий. Удивительно, что результат этих действий будет всегда одним и тем же. Или не всегда? Этого пока наверняка никто не знает, но получить что-то другое пока никому не удалось.</p><p>Давайте попробуем. Итак, загадайте любое целое положительное число. Дальше следуйте простому алгоритму:</p><p>1. Если число чётное, разделите его на 2. Иначе умножьте его на 3 и прибавьте 1.<br />2. Повторите шаг 1 с полученным числом.</p><p>Как вы думаете, что мы получим в итоге, если будем много раз выполнять шаги 1 и 2?</p><p>Немецкий математик Лотар Коллатц считает, что для любого целого положительного числа мы рано или поздно получим сначала 4, потом закономерно — 2, а потом 1. И после этого мы будем ходить по кругу, вновь и вновь получая цепочку 4–2–1. Самое удивительное в том, что мы придём к такому результату, с какого бы числа мы ни начали.</p><p>Не верите? Это не сложно проверить, тем более, что условия задачи очень просты. Пожалуй, на данный момент это простейшая формулировка нерешённой математической задачи — умножать и складывать умеет каждый. Справедливости ради стоит заметить, что для некоторых исходных чисел считать придётся долго. Так что для загадывания в дружеской компании этот «фокус» если и подойдёт, то только для небольших исходных чисел. Но мы всегда можем написать маленькую программку — куда уж проще: цикл с одним условием. Вот мой вариант простейшей программы на любимом мною Delphi (да, такой я динозавр):</p><p>Попробуйте написать такую программу на своём языке программирования и поэкспериментировать с этой гипотезой. Кстати, в сети можно найти много интересных визуализаций, показывающих распределение решений и шагов для разных исходных данных. А ещё для ленивых в сети есть <a href="http://rosettacode.org/wiki/Hailstone_sequence">сайт</a>, который содержит варианты реализации этой задачи для множества языков программирования.</p><p>Знаете, что ещё интересно? Утверждение Коллатца не зря называется гипотезой — пока никто так и не смог придумать её логическое доказательство. Лотар Коллатц сформулировал свою гипотезу ещё в 30-х годах 20 века и с тех пор предпринимались многочисленные попытки доказать или опровергнуть это утверждение с помощью строгой математической логики. Но всё, чего смогли добиться математики, — это просто проверить гипотезу экспериментально. В этой задаче программный поиск решения по сути ничем не ограничен, кроме вычислительных мощностей. Пока гипотеза не опровергнута — даже для огромных исходных чисел рано или поздно алгоритм достигает 1. Для решения этой задачи даже был организован проект добровольных распределённых вычислений. Но для классической математики этого недостаточно. Числа иногда бывают очень коварны. Где-то среди неимоверно огромных исходных чисел может скрываться такое исходное число, для которого гипотеза не подтвердится.</p><p>Кстати, у гипотезы Коллатца есть ещё несколько менее известных названий:<br />– дилемма 3n+1 — это вариант шага для нечётных чисел;<br />– гипотеза градины — графики последовательностей чем-то напоминают траектории движения града в атмосфере;<br />– гипотеза Улама — по имени польского математика Станислава Улама;<br />– проблема Какутани — по имени японского математика Сидзуо Какутани;<br />– гипотеза Туэйтса — по имени английского математика Брайна Туэйта;<br />– алгоритм Хассе — по имени немецкого математика Хельмута Хассе;<br />– сиракузская проблема.</p><p>По количеству разнообразных наименований видно, что математиков всерьёз заинтересовала эта проблема. Однако оказалось, что это одна из тех «вредных» задач, которые очень легко формулируются, но чрезвычайно тяжело решаются. Прямо как Великая теорема Ферма.</p><p>Числа в этой задаче ведут себя крайне странно: в некоторых случаях вычисления доходят до единицы очень быстро, а иногда промежуточный итог добирается до довольно большого числа, а затем быстро «срывается» вниз — до самой единицы. Например, для начального числа 27 промежуточный итог достигает 9232, а затем за несколько шагов быстро спускается до 1. В итоге количество шагов для 27 равно 111. И это при том, что для 26 оно равно 10 (максимальное промежуточное число — 40), а для 28 — 18 (максимальное промежуточное число — 52).</p><p>Хоть математикам и не удалось полностью логически подтвердить или опровергнуть гипотезу, они всё же кое-чего достигли. Как это часто бывает, учёные подбираются к решению постепенно. Совсем недавно, 8 сентября 2019, математик из Калифорнийского университета Теренс Тао опубликовал доказательство, где показано, что гипотеза Коллатца, по меньшей мере, «почти» верна «почти» для всех чисел. История того, как математики штурмовали эту проблему и о том, чего удалось достичь Теренсу Тао подробно описана в этой <a href="https://habr.com/ru/post/482812/">статье</a>.</p><p>В журналах и в сети уже неоднократно появлялись варианты доказательства гипотезы Коллатца. Однако, к большому сожалению, все они либо содержали ошибки, либо были неполными. Так что гипотеза пока остаётся гипотезой, а ещё — самым красивым и крутым математическим фокусом.</p>]]></content:encoded>
    </item>
    <item>
      <title>Придумываем дюжину новейших задач для собеседований в IT-компаниях</title>
      <link>https://tproger.ru/problems/pridumyvaem-djuzhinu-novejshih-zadach-dlja-sobesedovanij-v-it-kompanijah</link>
      <comments>https://tproger.ru/problems/pridumyvaem-djuzhinu-novejshih-zadach-dlja-sobesedovanij-v-it-kompanijah?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Клименков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/pridumyvaem-djuzhinu-novejshih-zadach-dlja-sobesedovanij-v-it-kompanijah</guid>
      <description><![CDATA[<p>Незнакомые логические и математические задачи помогают оценить сообразительность кандидата, знание логики и умение рассуждать.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/pridumyvaem-djuzhinu-novejshih-zadach-dlja-sobesedovanij-v-it-kompanijah">Придумываем дюжину новейших задач для собеседований в IT-компаниях</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Собеседование]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 01 Mar 2021 13:50:28 GMT</pubDate>
      <content:encoded><![CDATA[<p>Знаете, какой самый эффективный способ на время остановить работу целого отдела в IT-компании или научном коллективе? Подкинуть сотрудникам интересную, незнакомую математическую или логическую задачку. А какой самый простой и распространённый способ оценить кандидата на должность программиста или аналитика в ходе короткого собеседования? Предложить ему интересную, незнакомую математическую или логическую задачку. Самая популярная статья на сайте Tproger за всё время его существования — материал под названием «<a href="https://tproger.ru/articles/problems/">123 задачи с IT-собеседований с разбором решений</a>».</p><p>В сети, в книгах, в журналах мы все периодически встречаем задачи различного типа сложности. Задачи попроще — немного размять мозговые извилины или же посложнее — на многочасовое или даже многодневное обдумывание. Удовольствие от успешного решения какой-нибудь особенно непростой задачи, пожалуй, сравнимо с чувством, когда твоя сложная программа наконец заработала без ошибок и стала выдавать правильный результат. Подобные задачи — это своего рода тренажёр для мозга. Они позволяют отвлечься от трудовой рутины и поразмышлять над какой-нибудь нестандартной проблемой.</p><p>Работодатели давно взяли на заметку, что несложные логические или математические задачи — это хороший способ проверить сообразительность, знание законов логики и умение рассуждать. Именно поэтому такие задачи называют «типовыми» для собеседований.</p><p>В статье «<a href="https://tproger.ru/articles/16-tricky-interview-questions/">16 вопросов с собеседований, которые означают не то, что вы думаете</a>» Елена Лыбина, руководитель отдела найма и адаптации <a href="https://bercut.com/">Bercut</a>, рассказывает:</p><p>Прежде всего скажу, что мы ведём открытую коммуникацию с кандидатами. У нас нет цели создать стрессовую ситуацию, кого-то на чём-то «поймать» или что-то выведать. Мы изучаем опыт и мотивацию кандидата в процессе свободной доброжелательной беседы и ловушек никому не устраиваем. Но для некоторых позиций, особенно Junior, в Bercut важна способность мыслить нестандартно. Это сложно определить в ходе стандартного интервью. Поэтому мы используем логические задачки. Нам интересен ход размышлений кандидата, и мы просим озвучивать его процесс решения. Иногда ход решения важнее правильного результата. А иногда способность решить простую логическую задачу является для нас показателем того, что кандидат может собраться и в стрессовой ситуации выдать быстрый результат. Если такие качества обязательны для позиции, на которую мы ищем кандидата, то задачка становится вопросом с подвохом.</p><p>В ноябре 2019 года Bercut выступил партнером конференции SECR (Software Engineering Conference Russia), где специалисты Bercut <a href="https://www.facebook.com/CEE.SECR/posts/2561917010523450">предложили</a> посетителям выставки поучаствовать в квестах по решению задач. Хотя, с решением полного набора задач справилось всего несколько человек, сама викторина <a href="https://vk.com/bercut_team?w=wall-186803833_16">вызвала</a> большой интерес .</p><p>Также часто работодатели предлагают задачи на составление программ по заранее заданным условиям, но в этой статье мы их рассматривать не будем — здесь интересны лишь те, которые можно решить за непродолжительное время, не прибегая к программированию. Именно такие задачи лучше всего подходят для получасового собеседования, а задачи на составление программ идеальны для тестовых заданий.</p><p>В сети есть много сборников математических и логических задач. Проблема в том, что эти сборники читают не только работодатели, но и их потенциальные работники. Зачастую бывает так, что решение какой-нибудь интересной задачи уже известно многим. Так не годится, ведь нужно проверять не только способность хорошо запоминать прочитанное, но и умение решать новые, неизвестные кейсы. Да и вы, наверное, не захотите, чтобы вас снова спросили, как взвесить Боинг-747 или сколько будет 2 в степени 64. Правильные ответы на подобные популярные вопросы выучили наизусть даже офисные пальмы и фикусы в «переговорках», где проводятся собеседования. Нужно больше новых интересных задач.</p><p>О том, как составлять новые задачи, и написана эта статья. Давайте подойдём к этому вопросу творчески, но системно: попробуем придумать алгоритмы для создания новой задачи того или иного типа, а потом, воспользовавшись этими алгоритмами, составим абсолютно новые, ещё никому не известные задачи. Для каждого типа задач я буду приводить примеры уже известных — из журнала «Наука в фокусе», из книги Якова Перельмана «Занимательные задачи и опыты» и из других источников. Вообще, книги по математике и научно-популярные журналы (например, многие могут вспомнить журнал «Квант» для школьников, интересующихся математикой) — это неиссякаемые источники интересных задач.</p><p>Я опишу алгоритм сочинения новых задач для каждого типа и приведу примеры тех, которые составил, пользуясь этим алгоритмом. Думаю, задачи, приведённые в этой статье, покажутся вам не сложными. Главное — это понять принцип и разложить процесс на составляющие. А дальше — уже дело техники.</p><h2>1. Задачи с конечным множеством чисел</h2><p>Первый тип задач, о котором я хочу рассказать, про числа в реальном мире. Нас окружает множество устройств, предметов и объектов, на которых нарисованы или отображаются цифры. Это и часы, и календари, и номера машин. Обычно значение чисел или количество цифр в таких объектах конечно. Почему бы не сделать это предметом размышлений? Вот пример двух таких задач.</p><h3>Задача о неточных часах</h3><p>В доме трое часов. 1 января все они показывали верное время. Но верно идут только первые часы. Вторые отстают на 1 минуту в сутки. Третьи спешат на 1 минуту в сутки. Если часы будут продолжать так идти, через какое время все вместе будут снова показывать верное время?</p><h3>Задача о годе рождения профессора</h3><p>Профессор Кумле в 1971 году сообщил своим студентам: «Мне было n лет в n² году». В каком году родился профессор?</p><p>Алгоритм составления задач с конечным множеством чисел:</p><ol><li>Берём любое распространённое устройство или объект, на котором отображаются или написаны цифры.</li><li>Выбираем характерное, однозначно определяемое число из множества допустимых чисел, отображаемых на этом устройстве или объекте. Например, максимальное или минимальное возможное число. Также можно описать какую-то характерную комбинацию цифр.</li><li>Просим назвать устройство, рассчитать количество комбинаций или определить какой-то вариант числа, обладающих характерными особенностями.</li></ol><p>Давайте попробуем придумать такие задачи. Для начала возьмём какой-нибудь объект, опишем характерную особенность его чисел и попросим угадать, что это за объект.</p><h3>Новая задача 1</h3><p>В нём бывает разное количество чисел. Разница между минимальной и максимальной суммой чисел в нём равна 90. Его традиционно делят на части, в первой из которых бывает до четырёх простых чисел. Что это такое?</p><p>Теперь давайте попробуем придумать новую задачу про цифровые часы.</p><h3>Новая задача 2</h3><p>Винни-Пух посмотрел на свои цифровые часы: было 12:45. «Все цифры разные, самое время перекусить», — подумал он. Сколько раз за сутки Винни-Пуху можно перекусить? На цифровых часах Винни-Пуха отображаются четыре цифры — только часы и минуты.</p><p>Ещё один неиссякаемый источник задач — это телефонные номера. Для нас в Bercut это вообще «родная» тема, ведь большинство продуктов Bercut предназначены для автоматизации и решения различных бизнес-задач операторов мобильной связи.</p><h3>Новая задача 3</h3><p>У оператора сотовой связи есть новый пул семизначных телефонных номеров. Пока ещё все номера этого пула доступны. В офис оператора пришёл клиент с необычной просьбой: подобрать ему телефонный номер, в котором сумма всех семи цифр равна его счастливому числу 62. Сотрудник оператора предложил клиенту распечатать все такие номера на выбор. Сколько номеров будет в распечатке?</p><h2>2. Задачи с поиском закономерностей в последовательностях</h2><p>Следующий тип задач — на поиск закономерностей. Их великое множество и сочинить новый вариант совсем не сложно. Последовательность можно придумать самостоятельно или взять из реального мира. Приведу пару примеров ранее опубликованных задач этого типа.</p><h3>Задача о первой загадочной последовательности</h3><p>Каким будет сотый член в последовательности, которая начинается числами: 81, 73, 52, 42, 34, 22, 18, …?</p><h3>Задача о второй загадочной последовательности</h3><p>Дана последовательность чисел: 11, 7, 5, 7, 7, 7. Продолжите последовательность ещё одним числом.</p><p>Алгоритм составления задач с поиском закономерностей в последовательностях:</p><ol><li>Берём любую последовательность с чётко заданными правилами изменения элементов. Правила не обязательно должны быть связаны с математикой.</li><li>Вносим в эту последовательность одно, и только одно, изменение. Этот шаг можно пропустить.</li><li>Просим восстановить или продолжить последовательность.</li></ol><p>Попробуем воспользоваться этим алгоритмом и сочинить новые задачи.</p><h3>Новая задача 4</h3><p>Математик Матвей, работая над диссертацией, задумчиво глядел в окно и считал ворон на крышах соседних домов. На первой крыше сидело 11 ворон, на второй — 16, на третьей — 7, на четвёртой — 21, на пятой вообще не было ворон, а на шестой сидело 34 вороны. «Глупые птицы», — подумал Матвей. За что Матвей критиковал ворон?</p><p>В следующей задаче придумаем более сложную последовательность. Пусть это будут связанные пары чисел. На этот раз сама последовательность достаточно сложна, чтобы ещё и угадывать место, в которое нужно вставить недостающий член. Поэтому попросим просто её продолжить.</p><h3>Новая задача 5</h3><p>Финский программист Юкка, стоя в пробке, от нечего делать разглядывал номера встречных машин. Сначала проехала машина с номером 22-34, потом с номером 42-28, дальше были машины с номерами 34-50, 58-40 и 46-66. «Однако, тенденция», — подумал Юкка. Какой номер будет у следующей машины?</p><h2>3. Задачи на элементарную логику</h2><p>Логика — это важнейший инструмент любого человека интеллектуальной профессии. Самый простой способ проверить знание логики — это задачи с оценкой истинности утверждений. Вот пример одной такой задачи из теста на логическое мышление. Я немного перефразировал её условие.</p><h3>Задача про пингвинов</h3><p>Некоторые пингвины — птицы. Каждая птица имеет три крыла. Какое из следующих утверждений является истинным:</p><ol><li>Пингвины с двумя крыльями не являются птицами.</li><li>Птицы, которые являются пингвинами, иногда имеют три крыла.</li><li>Птицы с двумя крыльями иногда являются пингвинами.</li><li>Пингвинов не птиц, с тремя крыльями не бывает.</li><li>Пингвины имеют три крыла, потому что они птицы.</li><li>Ни одно из вышеперечисленного.</li></ol><p>Алгоритм составления задач на элементарную логику</p><ol><li>Придумываем набор любых не очень сложных логических утверждений, задающих условия пересечения нескольких множеств.</li><li>Заменяем объекты множеств другими объектами, делающими заданные утверждение абсурдным на уровне житейской логики.</li><li>Придумываем ряд утверждений, которые с учётом заданных условий являются ложными. И одно или несколько утверждений, которые являются истинными.</li><li>Просим указать истинные утверждения.</li></ol><p>По такому алгоритму можно придумать огромное количество весёлых оригинальных задачек.</p><h3>Новая задача 6</h3><p>Коты знают информатику. Все коты любят музыку. Какое из следующих утверждений является истинным:</p><ol><li>Все, кто знают информатику, любят музыку.</li><li>Информатику знают только коты.</li><li>Коты, которые знают информатику, не любят музыку.</li><li>Некоторые знатоки информатики любят музыку.</li><li>Все знатоки информатики не любят музыку.</li><li>Коты, которые любят музыку, не знают информатику.</li></ol><h2>Новая задача 7</h2><p>Некоторые астрофизики любят апельсины. Все любители апельсинов живут на Кипре. Какие из следующих утверждений являются истинными:</p><ol><li>Все астрофизики живут на Кипре.</li><li>Некоторые жители Кипра — астрофизики.</li><li>Все жители Кипра любят апельсины.</li><li>Все любители апельсинов — астрофизики.</li><li>Некоторые астрофизики, которые не любят апельсины, могут жить на Кипре.</li><li>Некоторые любители апельсинов могут жить не на Кипре.</li></ol><h2>4. Задачи на выполнение расчётов и решение уравнений</h2><p>Этот тип задач, пожалуй, самый распространённый. Ещё с глубокой древности подобные задачи были включены в книги и учебники по арифметике. Многим они покажутся довольно простыми, на уровне школьной программы. Но не забывайте, что наша цель — проверить умение рассуждать и оперировать некоторым количеством цифр, а не открыть в соискателе гениального математика.</p><p>Вот пример такой задачи.</p><h3>Задача про кенгуру</h3><p>В австралийском зоопарке 35% всех кенгуру серые. 13% всех животных зоопарка — кенгуру, но не серые. Сколько процентов от всех животных в зоопарке составляют кенгуру?</p><p>Вот ещё одна весьма любопытная задача.</p><h3>Задача об основном вопросе Вселенной</h3><p>Из книги «Автостопом по Галактике» мы знаем формулировку основного вопроса жизни, Вселенной и всего остального: «Что получится, если умножить шесть на девять?» Известен также и знаменитый ответ на этот вопрос — 42. В какой системе счисления этот ответ будет верным?</p><p>Алгоритм составления задач на выполнение расчётов и решение уравнений</p><ol><li>Придумываем один или несколько ответов — целые числа.</li><li>Составляем систему из одного или нескольких уравнений, решением которых будут числа, полученные на шаге 1, или выполняем ряд несложных математических или иных преобразований с этими числами. В итоге получаем коэффициенты уравнений или результаты математических преобразований.</li><li>Придумываем историю, описывающую коэффициенты или результаты преобразований.</li><li>Просим решить задачу, не упоминая при этом, что она связана с уравнением или преобразованиями.</li></ol><h3>Новая задача 8</h3><p>Перед выпуском нового релиза системы два тестировщика — Фаддей и Фиона — проверили 100 тестов. Тестировщик Фаддей работал на 5 часов дольше Фионы и проверил на 10 тестов больше. Но Фиона работает быстрее Фаддея на 50%. Сколько времени работал каждый тестировщик?</p><h3>Новая задача 9</h3><p>В магазине электроники новая модель телефона сначала подорожала на 10%, а потом подешевела на 10%. После этого телефон стал стоить 93555 рублей. Сколько телефон стоил до подорожания?</p><h2>5. Задачи на поиск оптимального алгоритма действий</h2><p>Этот тип, пожалуй, наиболее интересный. Это именно те задачи, которые гуляют по сети и знакомы почти всем: задача про три лампочки и три выключателя, задача про маляров и перчатки, задача про мост и фонарик. Приведу два давно известных примера.</p><h3>Задача о варке яиц</h3><p>Как проще всего отмерить 15 минут, необходимые для варки яиц, имея под рукой семи- и одиннадцатиминутные песочные часы?</p><h3>Задача об автоматах с мороженым</h3><p>Перед вами три автомата с мороженым. Первый выдаёт ванильное мороженое, второй — шоколадное. Третий автомат действует случайно — выдаёт ванильное или шоколадное мороженое. Мороженое стоит одну монету. На всех трёх автоматах есть надписи: «Ванильное», «Шоколадное», «Случайное». Но надписи перепутаны — все три надписи неправильные. Сколько нужно потратить монет, чтобы выяснить, где какой автомат?</p><p>Алгоритм составления задач на поиск оптимального алгоритма действий:</p><ol><li>Придумываем систему, в которой есть несколько элементов с разными значениями одного и того же параметра. Например, время, вес или объём.</li><li>Придумываем искусственные ограничения, накладываемые на систему.</li><li>Придумываем показатель, который нужно минимизировать.</li><li>Просим найти оптимальный алгоритм решения задачи.</li></ol><p>Кстати, когда вы сочините задачу на поиск оптимального алгоритма действий, может так случиться, что вы и сами не будете знать лучший ответ на свою же задачу. Сами сочиняете, сами решаете — замечательное развлечение для субботнего вечера! При этом нет никакой гарантии, что вы найдёте самое оптимальное решение. Бывают такие задачи, над которыми можно размышлять неделями.</p><p>Следующие две задачи могут показаться вам достаточно простыми. Однако я столкнулся с некоторыми трудностями в процессе придумывания этих «творческих» задачек. С уточнением условий новой задачи под номером 10 мне помог один мой коллега — мудрый и рассудительный человек, тоже любящий разные логические задачи.</p><h3>Новая задача 10</h3><p>У бассейна в зоопарке отдыхают пять бегемотов. Бассейн полон воды и достаточно большой, чтобы в нём поместились все бегемоты разом. У вас нет никаких измерительных инструментов. Вы — главный начальник бегемотов и можете решать, кому из них что нужно сделать. Как найти самого толстого бегемота?</p><h3>Новая задача 11</h3><p>Жители одного тропического острова в Тихом океане приплыли к жителям другого острова на лодках. Гости привезли груз манго и хотят обменять его на такой же по объёму груз авокадо. Как им это сделать, если у островитян под рукой нет ни весов, ни линеек, ни других средств точного измерения? И ещё одно важное условие: верования туземцев не позволяют им рыть ямы.</p><p>Следующая задача уже посложнее.</p><h3>Новая задача 12</h3><p>На далёкую планету роботов «Железяка» прилетел грузовой транспорт с 230 литрами машинного масла на борту. На данный момент на планете проживает 5 роботов. Как за минимальное количество шагов поделить машинное масло поровну между роботами, если у них на планете остались только две канистры ёмкостью 17 и 21 литр?</p><p>В этой статье описаны только пять типов задач. Безусловно, их гораздо больше. Да и алгоритмы составления можно придумать гораздо более сложные и разветвлённые. Важен сам принцип сочинения: в обратном направлении — от готового решения к интересному и загадочному условию. Кстати, должен вам признаться, что автор этой статьи непосредственно в режиме собеседования может и не решил бы некоторые из приведённых здесь задач — как известных, так и новых. Но я уверен, что читатели умеют легко решать подобные задачки, как на собеседованиях, так и для развлечения!</p><p>Составление новых задач лично для меня оказалось даже интереснее их решения. Для новой задачи нужно не только придумать её математическую или логическую основу, но и изобрести вокруг неё свою историю и персонажей, чтобы её захотелось тут же решить. Вполне возможно, что при составлении новых задач вы почувствуете себя автором детективного жанра, который заранее знает ответ на загадку, но должен искусно скрыть этот ответ от читателя, выстраивая ловушки и ложные тупиковые линии. Если всё это сделать как следует, то получится по-настоящему интересная задача. Предлагаю вам заняться составлением и публикацией собственных задач — это не только полезное, но и очень захватывающее занятие. Пусть у нас будет больше новых интересных задач!</p><p>Тем, кто дочитал статью до конца — небольшой бонус: три задачки с реальных собеседований в Bercut.</p><h3>Бонусная задача 1</h3><p>Рядом с офисом Bercut стоят два дома. Высота каждого — 10 метров. Между ними с крыши на крышу перекинут телекоммуникационный кабель длиной 12 метров. Кабель прогибается под своей тяжестью и в месте максимального прогиба расстояние от кабеля до земли составляет 4 метра. Найдите расстояние между домами.</p><h3>Бонусная задача 2</h3><p>На одном этаже офиса Bercut есть сотрудники без мониторов, с одним монитором и с двумя мониторами. У всех вместе 100 мониторов. Сотрудников без монитора столько же, сколько сотрудников с двумя мониторами. Сколько всего сотрудников работает на этом этаже?</p><h3>Бонусная задача 3</h3><p>1,5 разработчика за 1,5 минуты пишут 1,5 строки кода. Сколько строк напишут 2 разработчика за 2 минуты?</p>]]></content:encoded>
    </item>
    <item>
      <title>7 логико-математических задач: от простого к сложному</title>
      <link>https://tproger.ru/quiz/7-logiko-matematicheskih-zadach</link>
      <comments>https://tproger.ru/quiz/7-logiko-matematicheskih-zadach?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/quiz/7-logiko-matematicheskih-zadach</guid>
      <description><![CDATA[<p>Устали программировать? Отвлекитесь и попробуйте решить 7 коротеньких задачек на логическое мышление и знание математики.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/quiz/7-logiko-matematicheskih-zadach">7 логико-математических задач: от простого к сложному</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Викторины]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 19 Feb 2021 12:22:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы подготовили для вас небольшой тест, который позволит скоротать время и заодно прокачать математические навыки на интересных задачках. А если этого окажется недостаточно, попытайте удачу в решении ещё ряда <a href="https://tproger.ru/articles/7-zakovyristyh-logiko-matematicheskih-zadach/">заковыристых логико-математических задач</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Математика для Data Science: 3 полезных закона</title>
      <link>https://tproger.ru/translations/matematika-dlja-data-science-3-poleznyh-zakona</link>
      <comments>https://tproger.ru/translations/matematika-dlja-data-science-3-poleznyh-zakona?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Олег Борисенков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/matematika-dlja-data-science-3-poleznyh-zakona</guid>
      <description><![CDATA[<p>Закон Бенфорда и другие математические закономерности, разобранные на реальном датасете песен из Spotify для тех, кто изучает Data Science.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/matematika-dlja-data-science-3-poleznyh-zakona">Математика для Data Science: 3 полезных закона</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Data Science]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 13 Feb 2021 09:35:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой статье я хочу изложить некоторые интересные законы математики, которые пригодятся изучающим Data Science.</p><h2>Закон Бенфорда</h2><p>Закон Бенфорда — это математический закон в котором говорится о первой цифре числа из набора реальных данных.</p><p>Если мы представим случайное число, то было бы логично предположить, что его первая цифра также будет случайной. То есть вероятность того, что это будет число от 1 до 9, одинакова для каждого из этих чисел, и составляет около 11,1%. Однако это не так.</p><p>Закон Бенфорда утверждает, что первая цифра числа чаще будет меньшей, в большинстве реально встречающихся коллекций чисел.</p><p>Давайте попробуем применить этот закон к реальному датасету. Для этой статьи я использовал данные из Kaggle о длительности песен в Spotify с 1921 по 2020 год. Вот график того, как часто та или иная цифра является первой:</p><figure><img src="https://media.tproger.ru/uploads/2021/02/spotify.png" alt="" /></figure><p>Из данного графика видно, что число 1 встречается чаще всех. И последующие числа плавно уменьшаются в количестве. Это и есть закон Бенфорда.</p><p>Точное определение закона Бенфорда гласит, что набор чисел подчиняется закону Бенфорда, если первая цифра d (?∈1,…,9) подходит к этому равенству:</p><figure><img src="https://media.tproger.ru/uploads/2021/02/benford_law.png" alt="" /></figure><p>Из этого равенства мы можем получить такое распределение вероятностей:</p><figure><img src="https://media.tproger.ru/uploads/2021/02/benford3.png" alt="" /></figure><p>Существует множество применений этого закона, например для определения махинаций с налогами, результатами выборов, экономическими и бухгалтерскими показателями.</p><h2>Закон больших чисел</h2><p>Закон больших чисел гласит, что с возрастанием количества испытаний, средний результат будет стремиться к математическому ожиданию. Этот закон математики является фундаментальным для Data Science.</p><p>Например, игральная кость имеет 6 граней со значениями от 1 до 6. Следовательно, среднее значение для него будет 3,5. При броске кости будут выпадать числа от 1 до 6. И чем больше будет число попыток, тем ближе средний результат будет приближаться к 3,5 — это и есть закон больших чисел.</p><p>Закон больших чисел отличается от закона средних чисел, который используется для того чтобы описать ожидание того,  что результаты случайного события «выровняются» в пределах небольшой выборки. Это называют ошибкой игрока, когда мы рассчитываем на результат близкий к математическому ожиданию, в меньшей выборке.</p><h2>Закон Зипфа</h2><p>Закон Зипфа был создан для квантитативной лингвистики. Квантитативная лингвистика это раздел лингвистики, который занимается изучением языка с помощью статистических методов. Закон гласит, что для некоторого набора данных естественного языка, частота любого слова обратно пропорциональна его рангу в таблице частот. Таким образом, наиболее частое слово будет встречаться примерно в два раза чаще, чем второе по частоте, и в четыре раза чаще, чем третье по частоте и так далее.</p><p>Например, в предыдущем наборе данных Spotify, я попытался бы разделить все слова и знаки препинания чтобы подсчитать их. Ниже приведены топ-12 наиболее распространенных слов и их частота.</p><figure><img src="https://media.tproger.ru/uploads/2021/02/zipf.png" alt="" /></figure><p>Узнайте насколько хорошо вы разбираетесь в Data Science в <a href="https://tproger.ru/quiz/data-science-test-megafon/">нашем тесте</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>В поисках числа лучше, чем у Шелдона Купера</title>
      <link>https://tproger.ru/articles/v-poiskah-chisla-luchshe-chem-u-sheldona-kupera</link>
      <comments>https://tproger.ru/articles/v-poiskah-chisla-luchshe-chem-u-sheldona-kupera?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Клименков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/v-poiskah-chisla-luchshe-chem-u-sheldona-kupera</guid>
      <description><![CDATA[<p>Любимое число героя «Теории Большого взрыва» — 73 из-за ряда занимательных особенностей, и есть смысл поискать число, у которого их окажется больше.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/v-poiskah-chisla-luchshe-chem-u-sheldona-kupera">В поисках числа лучше, чем у Шелдона Купера</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 26 Jan 2021 06:29:44 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Шелдон Купер — человек, который обожает свой разум</h2><p>Сериал «Теория Большого взрыва» мало кого оставил равнодушным, как и его главный герой Шелдон Купер — гениальный физик-теоретик и доктор наук, программист с эйдетической памятью и интроверт, большой любитель правил и систематизации, идеального порядка и чистоты. Кстати, в нашей нынешней реальности зацикленность Шелдона на гигиене, обработка рук санитайзером и распыление антисептика на своих коллег и знакомых с малейшими признаками простуды нам уже не кажутся такими уж эксцентричными действиями.</p><p>Шелдон не только влюблён в науку, но и как истинный последователь Ричарда Фейнмана, постоянно изобретает множество увлекательных вещей, игр и занятий. Например, он придумал игру «Камень — ножницы — бумага — ящерица — Спок», трёхмерные шахматы и карнавальный костюм эффекта Доплера (его, правда, на той вечеринке все принимали за зебру).</p><p>Ещё Шелдон обожает пошутить (вспомним его «Бугагашеньку!» — Bazinga!), и по всем вопросам во Вселенной у него есть своё оригинальное мнение. Например: «Когда мы убиваем в детях способность критически мыслить, говоря, что кролики появляются из шляп, мы создаём взрослых, которые верят в астрологию и гомеопатию». Или как тут не вспомнить его замечательное высказывание «На моём новом компьютере стоит Windows 7. В ней более дружелюбный интерфейс, чем в Windows Vista. Мне это не нравится…».</p><p>Естественно, Шелдон, как и любой настоящий учёный, обожает математику и числа. Однажды он сказал, что «чувствует себя как функция арктангенса, которая приближается к асимптоте». В сериале есть множество смешных моментов, посвященных науке, и конечно же математических шуток. Одна из них — про любимое число Шелдона Купера.</p><h2>Лучшее число — 73</h2><p>Давайте вспомним, какие аргументы привёл Шелдон в защиту этого смелого утверждения. Итак:</p><ul><li>73 — это 21-е простое число;</li><li>зеркальные отражения, или переставленные местами разряды, 73 и 21 — это 37 и 12;</li><li>при этом 37 — это 12-е простое число;</li><li>перемножив цифры 73, можно получить 21;</li><li>двоичное представление 73 — это 1001001, что является палиндромом.</li></ul><p>В сериале это звучит эффектно, особенно в исполнении харизматичного Шелдона. Но, если это напечатать и перечитать внимательно, то аргументы выглядят не особо убедительно. Сразу возникает вполне резонный вопрос: почему сценаристы сериала выбрали именно это число в качестве любимого числа Шелдона? Неужели такой умный и гениальный учёный, в будущем лауреат Нобелевской премии, не смог найти число поинтереснее?</p><p>Ответ на этот вопрос я нашёл в книге Дэйва Зобеля «Теория Большого взрыва: наука в сериале». Оказывается, таким нехитрым способом сценаристы решили отметить 73-ий эпизод сериала, а заодно и упомянуть год рождения исполнителя главной роли Джима Парсонса — 1973. Всё встало на свои места, но число 73 от этого не стало более уникальным. Конечно, сами свойства числа выглядят занимательными. Более того, математики <a href="https://nplus1.ru/blog/2019/04/22/Sheldon-number-73">доказали</a>, что 73 — это единственное число, обладающее указанными Шелдоном свойствами. Но можно ли подобрать более интересное число, у которого будет еще больше особенностей?</p><h2>Лучшее число — 89</h2><p>Новогодние каникулы — самое подходящее время для того, чтобы решать подобные задачи. Сначала у меня возникла идея написать программу, которая последовательно проверяла бы все числа на соответствие разным гипотезам. Гипотезы могли бы быть самыми разными. Самые простые: это вхождение числа в известные последовательности. Например, в ряд простых чисел или чисел Фибоначчи. Можно было придумать и что-нибудь посложнее. Например, сумма цифр числа является простым числом. Также интересно проверить на «особенность» первые вхождения рассматриваемого числа в дробную часть чисел e и pi. Таких гипотез можно придумать очень много. В итоге самым интересным будет число, для которого подтвердится наибольшее число гипотез.</p><p>Но неожиданно программу писать не пришлось. Чтобы поэкспериментировать с числами, я взял первое попавшееся число до 100, которое одновременно является простым числом и числом Фибоначчи. Им оказалось число 89. Для него я начал проверять разные пришедшие в голову гипотезы, и вот, что у меня получилось:</p><ol><li>89 — это простое число.</li><li>89 — это 11-е число Фибоначчи. 11 — это тоже простое число.</li><li>Сумма цифр 8 + 9 = 17 — это тоже простое число.</li><li>89² = 7921 — это число, хоть и не простое, но сумма его чисел — простое число 19.</li><li>Но, что интереснее, если число 7921 записать наоборот, то получится число 1297 — оно тоже простое.</li><li>В дробной части числа e число 89 впервые встречается на месте 218. Сумма цифр этого числа — тоже простое число 11. Кстати, про число 11 — смотри пункт 2.</li><li>Угадайте, на каком месте число 89 впервые встречается в дробной части числа π? На 11-м!</li><li>В двоичной форме число 89 записывается как 1011001. Если прочитать это двоичное число наоборот, то получится 1001101. Это число 77, которое является суммой первых восьми простых чисел. Согласен, по сравнению с предыдущими, этот пункт выглядит натянутым, но всё равно интересно.</li></ol><p>Это те гипотезы, которые я проверил сразу. На моё удивление, все они дали положительный результат. Если само полученное число было ничем не примечательным, то я прибегал к уже испытанному Шелдоном способу — придумывал различные производные от числа (как, например, в случае с квадратом числа 89). Осечка случилась только в одной гипотезе — перемножение цифр 8 и 9 дало число 72. С ним я ничего такого сделать не смог. Хотя, постойте, давайте проверим, какое там 72-е простое число. Нет, опять мимо — 359 нам никак не подходит.</p><p>На этом идеи у меня кончились, и я пошёл в Википедию за дополнительной информацией. Оттуда я почерпнул ещё два пункта:</p><ol><li>89 равняется сумме 8 в первой степени и 9 во второй степени.</li><li>89 — это число Маркова — вместе с числами 1 и 34 оно является решением уравнения x²+y²+z²=3xyz.</li></ol><p>Думаю, моё число является гораздо более замечательным, чем число Шелдона Купера! Заметьте, я специально не выбирал число, просто взял первое, показавшееся мне интересным. Как сказал Леонард Хофстедтер, сосед и лучший друг Шелдона в сериале, это было настоящее «чудо сатурналий».</p><p>Так что теперь моё любимое число теперь — 89. Пока я не нашёл другое, ещё более интересное.</p><h2>Лучшее число — x</h2><p>На самом деле, таким образом можно экспериментировать практически с любыми числами. У многих есть такое любимое или «счастливое» число с детства, например, удачный номер билета на экзамене. Можно поупражняться в преобразовании этого числа. В результате тех или иных изменений с этим числом будут получаться всякие интересные результаты, которые можно записать в список. Например, можно проверить число 42, которое, как известно, является «ответом на главный вопрос жизни, вселенной и всего такого». Причины «интересности» числа могут быть самыми неожиданными. Мир чисел — это вообще крайне загадочная и захватывающая вещь, как и вся математика в целом.</p><p>Я думаю, что если всё же написать программу проверки разных гипотез, то можно найти и ещё более интересные числа. Для простых гипотез можно использовать обычные программные вычисления, а для проверки более сложных гипотез подойдут уже готовые массивы чисел в текстовых файлах. Например, такие:</p><ul><li>Огромные списки простых чисел от 10 тысяч до 2 миллиардов штук.</li><li><a href="https://apod.nasa.gov/htmltest/rjn_dig.html">Число e</a> с точностью от 2 до 10 миллионов знаков.</li><li><a href="http://mit.edu/afs.new/sipb/contrib/pi">Число π</a> с точностью до миллиардного знака.</li></ul><p>Только нужно учесть, что файлы будут немаленькими. Например, текстовый файл с числом π (последний в списке) имеет размер 954 мегабайта.</p><p>Последовательность чисел Фибоначчи можно получить с помощью несложной программы. Кстати, Tproger недавно <a href="https://tproger.ru/articles/populjarnye-zadachi-dlja-nachinajushhih-programmistov-s-kotorymi-mozhno-stolknutsja-v-rabote/">описывал</a> получение такой последовательности как одну из задач для начинающих программистов.</p><p>Идеи для разных гипотез можно почерпнуть на ещё одном интересном ресурсе: онлайн-энциклопедии целочисленных последовательностей (сокращённо OEIS) — <a href="http://oeis.org/">oeis.org</a>. В этой энциклопедии собрано множество разных последовательностей, в которые складываются целые числа. В ней есть не только известные последовательности, такие как простые числа или числа Фибоначчи, но и менее известные, как, например, числа Белла.</p><p>Кстати, гипотезы для проверки чисел не обязательно забивать напрямую в программный код. Возможно, их можно было бы генерировать случайным образом.</p><h2>Лучшее число — дата рождения</h2><p>Поиск закономерностей в числах — это вообще очень результативное и интересное занятие. Такие закономерности встречаются далеко не так редко, как может показаться на первый взгляд. Для примера рассмотрим даты рождения. Ведь для многих дата рождения — это и есть то самое счастливое любимое число. Например, красивая дата 22.02.77 выглядит очень лаконично и легко преобразуется в простое число 22277, входящее во множество чисел-близнецов.</p><p>Наверняка, вы найдете для «своих» чисел много интересных особенностей. Например, в дробной части числа π можно найти не только ответы на все «главные вопросы жизни», но и <a href="https://habr.com/ru/company/wolfram/blog/306420/">любую дату</a>. Кстати, это весьма оригинальный способ бросить жребий. Записываем дни рождения каждого участника в заранее оговорённом формате. Можно использовать любой: хоть ДДММГГГГ, хоть ГГГГММДД, а можно сократить год до двух цифр. Затем просто ищем, чьё число встречается раньше в дробной части числа π. Или позже — это уж как договоритесь. Для этого можно использовать готовый текстовый файл (см. выше) или, например, <a href="http://mypiday.com/">этот сайт</a>.</p><p>Конечно, метод дат рождения срабатывает только один раз. В последующих розыгрышах нужно либо называть другие даты, либо использовать любые другие достаточно большие числа с заданным числом цифр. Главное, чтобы среди загадывающих не было того, кто знает большое количество цифр числа π наизусть.</p><p>Ещё одна закономерность, связанная с датами, называется «парадокс дней рождения». Он формулируется следующим образом: в группе, состоящей из 23 или более человек, вероятность совпадения числа и месяца рождения хотя бы у двух людей превышает 50%. На первый взгляд это утверждение противоречит здравому смыслу: в голове не укладывается, что в такой маленькой группе настолько вероятно появление одинаковых чисел из ряда от 1 до 365. А знаете, какова вероятность этого события для группы из 57 человек? Наверное, вы мне не поверите, но она равна 99 процентам. Подробный разбор этого парадокса есть в <a href="https://ru.wikipedia.org/wiki/Парадокс_дней_рождения">Википедии</a>. Кстати, если у вас есть доступ к достаточно большому массиву дат рождений (например, список сотрудников вашей компании), то вы можете проверить этот парадокс экспериментально. В компании Bercut, на нашем корпоративном портале размещено много полезной информации для сотрудников. Например, у нас есть удобная страница для просмотра дней рождения сотрудников (конечно, без указания года рождения). Проверка по этому списку полностью подтвердила существование парадокса дней рождения.</p><h2>В математике нет ничего неважного</h2><p>Оказывается, в мире чисел совпадения и закономерности — это не такое редкое событие, как может показаться на первый взгляд. Главное — не забывать о бритве Оккама и не делать далеко идущих выводов в стиле нумерологии, астрологии или новой хронологии. Не будем множить сущности без необходимости.</p><p>Исследование различных числовых множеств — это не просто интересная задача и еще один подходящий повод заняться программированием. Возможно, очередная найденная закономерность приведёт к появлению нового интересного алгоритма. Вот как об этом пишет в своей книге Дэйв Зобель:</p><blockquote>У многих чисел есть подобные странные свойства, которые оказались полезными в неожиданных ситуациях. […] Однажды кто-нибудь превратит [их] в сложный шифр, или в отличный способ упаковки предметов в твёрдые контейнеры…</blockquote><p>Так, например, стало с простыми числами, которые теперь широко используются в криптографии. Математика — такая наука, в которой любое развлечение приносит свою пользу. Надо только немного пораскинуть мозгами, чтобы эту пользу отыскать.</p>]]></content:encoded>
    </item>
    <item>
      <title>Четырёхлетний курс обучения Computer Science воссоздали при помощи 1079 видео с YouTube</title>
      <link>https://tproger.ru/news/chetyrjohletnij-kurs-obuchenija-computer-science-vossozdali-pri-pomoshhi-1-079-video-s-youtube</link>
      <comments>https://tproger.ru/news/chetyrjohletnij-kurs-obuchenija-computer-science-vossozdali-pri-pomoshhi-1-079-video-s-youtube?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/chetyrjohletnij-kurs-obuchenija-computer-science-vossozdali-pri-pomoshhi-1-079-video-s-youtube</guid>
      <description><![CDATA[<p>Авторы Laconic Machine Learning воссоздали программу американского университета: 40 курсов, 4 года по два семестра и 1079 обучающих роликов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/chetyrjohletnij-kurs-obuchenija-computer-science-vossozdali-pri-pomoshhi-1-079-video-s-youtube">Четырёхлетний курс обучения Computer Science воссоздали при помощи 1079 видео с YouTube</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 13 Jan 2021 08:22:52 GMT</pubDate>
      <content:encoded><![CDATA[<figure><img src="https://media.tproger.ru/uploads/2021/01/2-14.jpg" alt="" /></figure><p>На Laconic Machine Learning появился огромный <a href="https://laconicml.com/computer-science-curriculum-youtube-videos/">материал</a> на тему Computer Science. В нём авторы ресурса попытались воссоздать четырёхлетний курс обучения компьютерным наукам при помощи видео с YouTube. В общей сложности для этих целей было использовано 1079 обучающих видеоролика.</p><p>Материал разделён на сегменты, соответствующие учебному плану в типичном американском университете: 40 курсов, 4 академических года по 2 семестра в каждом.</p><p>На первом курсе предлагается изучить основы структурного программирования (при помощи языка Си), дискретную математику, математический анализ и т.д — в общем-то, те самые дисциплины, которые даются студентам первого курса в большинстве вузов даже нашей страны.</p><p>Стоит отметить, что в рамках предлагаемого плана обучения можно найти изучение машинного обучения, создание мобильных приложений под iOS и Android, робототехнику, компьютерное зрение и много чего ещё интересного.</p><p>Сами авторы материала отмечают, что их подборка хоть и является крайне полезной, всё же не заменит полноценного обучения в университете. Но при этом она может помочь разобраться в Computer Science как студентам, так и тем, кто так и не поступил в вуз.</p><p>Источник: <a href="https://laconicml.com/computer-science-curriculum-youtube-videos/">Laconic Machine Learning</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Популярные задачи для начинающих программистов, с которыми можно столкнуться в работе</title>
      <link>https://tproger.ru/articles/populjarnye-zadachi-dlja-nachinajushhih-programmistov-s-kotorymi-mozhno-stolknutsja-v-rabote</link>
      <comments>https://tproger.ru/articles/populjarnye-zadachi-dlja-nachinajushhih-programmistov-s-kotorymi-mozhno-stolknutsja-v-rabote?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Олег Борисенков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/populjarnye-zadachi-dlja-nachinajushhih-programmistov-s-kotorymi-mozhno-stolknutsja-v-rabote</guid>
      <description><![CDATA[<p>Когда решаешь задачи для начинающих программистов, не всегда понятно, применяется ли такой код в реальной жизни. Рассказываем, что может быть полезно.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/populjarnye-zadachi-dlja-nachinajushhih-programmistov-s-kotorymi-mozhno-stolknutsja-v-rabote">Популярные задачи для начинающих программистов, с которыми можно столкнуться в работе</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 13 Jan 2021 08:06:42 GMT</pubDate>
      <content:encoded><![CDATA[<p>В задачах для начинающих программистов часто нужно реализовать какой-нибудь простой алгоритм или математическую операцию. Такие задачи не всегда являются полностью искусственными. В этой статье расскажем, какие популярные учебные задания пригодятся в настоящей работе.</p><h2>Факториал</h2><figure><img src="https://media.tproger.ru/uploads/2021/01/fact.png" alt="" /></figure><p>Факториал n — это произведение всех натуральных чисел от 1 до n включительно. Он используется в комбинаторике, теории вероятности, оценке сложности алгоритмов, и во множестве точных наук. Например с помощью нахождения факториала можно узнать сколько вариантов перестановок может быть в последовательности P: .</p><h2>Числа Фибоначчи</h2><p>Ряд Фибоначчи это последовательность чисел, которая начинается с 0, 1 или 1, 1 и каждое последующее число равно сумме двух предыдущих. Несмотря на кажущуюся абстрактность, данная последовательность встречается не только в задачах для начинающих программистов, но и в <a href="https://www.youtube.com/watch?v=kkGeOWYOFoA&amp;feature=emb_logo">природе</a>, она описывает, например, расположение листьев некоторых видов растений.</p><p>Последовательность применяется в криптографии, трейдинге и не только. В частности, в трейдинге используются линии Фибоначчи.</p><h2>Сортировка пузырьком</h2><p>Это <a href="https://tproger.ru/translations/sorting-for-beginners/">простейшая сортировка</a>, которая сейчас используется в основном в задачах для начинающих программистов. Её суть проста — повторяющиеся проходы по массиву, в результате которые сравниваются соседние элементы, и если порядок в паре не верный, меняются местами. Сложность данного алгоритма . Хотя сортировка пузырьком и лежит в основе более совершенных алгоритмов, вы не столкнётесь с ней в реальном коде.</p><h2>Связный список</h2><p>Это базовая структура данных, состоящая из узлов, каждый из которых содержит собственно данные, и одну, или две ссылки на предыдущий/следующий узел списка. <a href="https://tproger.ru/translations/linked-list-for-beginners/">Связный список</a> может содержать произвольное количество элементов.</p><p>Он широко использовался во времена появления языка Си. В настоящее время, связный список имеет смысл применять когда: необходимо обеспечить одинаковое время вставки/удаления элемента, неизвестно количество элементов, не требуется произвольный доступ к элементам, требуется возможность вставки элементов в середину списка.</p><h2>Стек и очередь</h2><p><a href="https://tproger.ru/translations/stacks-and-queues-for-beginners/">Стек и очередь</a> — это два типа коллекций которые отличаются способом доступа к элементам. В стеке вам доступен только последний добавленный элемент. В очереди доступен первый добавленный элемент.</p><p>Пример использования стеков — операция «Отмена» в любой программе. Очередь, как и стек, применяется тогда, когда нужен буфер для каких либо операций или объектов. Кроме того, эти типы коллекций применяются в асинхронном программировании.</p>]]></content:encoded>
    </item>
    <item>
      <title>Выживут ли мудрецы: задача по теории вероятностей, у которой нет единственного правильного решения</title>
      <link>https://tproger.ru/problems/zadacha-po-teorii-verojatnostej</link>
      <comments>https://tproger.ru/problems/zadacha-po-teorii-verojatnostej?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/zadacha-po-teorii-verojatnostej</guid>
      <description><![CDATA[<p>Злой дух бесконечно бросает монету и раздаёт двум пленникам результаты чётных и нечётных бросков. Головоломка допускает несколько верных решений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/zadacha-po-teorii-verojatnostej">Выживут ли мудрецы: задача по теории вероятностей, у которой нет единственного правильного решения</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 23 Dec 2020 06:27:32 GMT</pubDate>
      <content:encoded><![CDATA[<p>Злой Дух поймал двух мудрецов и посадил их в разные комнаты своего страшного дома. Затем злой дух подбросил симметричную монету бесконечное количество раз. Все результаты чётных бросков он сообщил одному мудрецу, а все результаты нечётных — второму мудрецу.</p><p>После этого Дух предложил каждому мудрецу назвать номер броска из серии другого мудреца. Мудрецу, которому известны результаты чётных бросков, нужно назвать номер любого нечётного броска. Мудрецу, которому известны результаты нечётных бросков, нужно назвать номер любого чётного броска.</p><p>Если результаты бросков, названные мудрецами, одинаковые, то Злой Дух подарит мудрецам свободу. Если же результаты отличаются, то казнит их.</p><p>Оба мудреца знают о повадках Злого Духа и могли заранее договориться о стратегии.</p><p>Какую стратегию им выбрать, чтобы вероятность спасения была больше 50%?</p><p>У этой задачи есть много интерпретаций в интернете: мудрецы, принцессы, путешественники, но не в этом суть. Первое, что вызывает интерес, это отсутствие единственного правильного решения. А второе — то, что многие (включая меня), когда первый раз видят эту задачу, неверно понимают условия. Эта задача по теории вероятности, но часто воспринимается как обычная задача на логику. Многие думают, что при озвучивании ответов мудрецы слышат друг друга. Если вы из условий это поняли, вы — молодец! Но я всё равно рассмотрю оба варианта. ?</p><h2>Вариант 1. Мудрецы слышат друг друга</h2><p>Да, условия задачи этого не предусматривают, но явным образом также не говорится об обратном. Так почему бы не рассмотреть и такой вариант? Ведь при этом мы с можем вероятностью 100% сохранить жизни нашим мудрецам, мы ведь не желаем им зла.</p><p>Для начала представим, что у нас есть бесконечная последовательность бросков. Вот пример начала такой последовательности:</p><figure><img src="https://media.tproger.ru/uploads/2020/12/table1-2.png" alt="" /></figure><p>Мы понимаем, что в ответе один из мудрецов должен каким-то образом закодировать и передать второму мудрецу информацию о последовательности результатов, которые ему известны. То есть мы должны придумать такую стратегию, в которой первый мудрец, называя цифру неизвестного ему броска второго мудреца, одновременно сообщал ему о том, какой результат броска нужно искать.</p><p>Перед нами симметричная монета, а значит, вероятность выпадения орла и решки всегда 50/50 и не зависит от числа подбрасываний. При этом мы подбрасываем её бесконечно много раз. Значит, по закону больших чисел, фактическое среднее будет стремиться к теоретическому, то есть мы получим примерно в 50% бросков орла и в 50% — решку. Случаи, когда выпадают только орлы или только решки, мы рассматривать не будем, как варианты с очень низкой вероятностью.</p><p>Таким образом, наши мудрецы должны договориться о формате сообщения, о каком-то паттерне, который они будут искать в последовательности своих бросков. Один из вариантов такого паттерна: последовательное выпадение орла и решки у первого мудреца.</p><p>Алгоритм действий будет следующим:</p><ol><li>Первый мудрец находит в известной ему последовательности идущие подряд броски, в которых выпал сначала орёл, потом решка.</li><li>Первый мудрец называет Злому Духу (и второму мудрецу) порядковый номер первого из этих двух бросков. Здесь речь идёт не о чётном или нечётном номере броска в общей серии, а о его порядковом номере у конкретного мудреца. Например, бросок с чётным номером 4 у первого мудреца будет иметь порядковый номер 2. У второго мудреца бросок с порядковым номером 2 будет третьим в общей серии бросков.</li><li>Второй мудрец проверяет в своей последовательности бросок под названным порядковым номером. Он понимает, что у первого мудреца под этим же номером значится результат броска орёл, а под следующим — решка.</li><li>Если у первого мудреца под этим номером тоже орёл, то он смело повторяет тот же номер Злому Духу. Если решка, то для того, чтобы результаты у обоих мудрецов совпали, увеличивает номер, который он сообщит Злому Духу, на единицу.</li></ol><p>В примере, который приведён в таблице выше, действия мудрецов будут следующими:</p><ol><li>Первый мудрец находит в серии своих бросков последовательную пару «Орёл — Решка». Это броски 4 (порядковый номер 2) и 6 (порядковый номер 3). Он сообщает Злому Духу порядковый номер броска 2.</li><li>Второй мудрец, услышав сообщение первого мудреца, проверяет результат из своей серии бросков под порядковым номером 2. Это бросок 3. Его результат — решка. Значит, чтобы результаты совпали, второй мудрец должен сообщить номер броска из серии первого мудреца с результатом — решка. По паттерну он точно знает, что это результат с порядковым номером 3. Этот номер второй мудрец и сообщает Злому Духу.</li></ol><p>Таких паттернов можно придумать сколько угодно. Если заранее договориться о нужной последовательности результатов бросков, то шанс остаться в живых у мудрецов будет равняться 100%.</p><h2>Вариант 2. Мудрецы не слышат друг друга (классический вариант)</h2><p>Теперь мы подобрались к тому решению, которое ждал от нас автор задачи. Здесь мы уже не можем гарантировать 100% выживаемость мудрецов.</p><p>Подходов к решению много. Ходят слухи, что кому-то удалось найти такое решение, которое обеспечивает вероятность спасения более 70%. Если вы знаете, как добиться такого результата, напишите об этом в комментариях!</p><p>Вот один из вариантов решения задачи в классическом варианте. Для упрощения рассмотрим только первые 4 броска. У каждого мудреца — по два броска.</p><p>Стратегия мудрецов будет направлена на то, чтобы увеличить шансы на совпадение результатов. Для этого нужно продумать алгоритм выбора первого или второго броска для каждого из мудрецов в зависимости от результатов этих бросков.</p><p>Рассмотрим такой алгоритм:</p><ol><li>Если у первого мудреца результат первого броска — решка, то он сообщает Злому Духу номер 1. Иначе — номер 2.</li><li>Если у второго мудреца в первом броске выпала решка, а во втором — орёл, то он сообщает Злому Духу номер 1. Во всех остальных случаях — номер 2.</li></ol><p>Давайте сведём все возможные варианты работы такого алгоритма в таблицу. В столбцах — результаты первого мудреца, в строках — второго. В скобках указан бросок, который называет мудрец по нашему алгоритму.</p><figure><img src="https://media.tproger.ru/uploads/2020/12/table2-2.png" alt="" /></figure><p>В ячейках таблицы — сравнение результатов. Если результаты мудрецов совпали, то указан плюс, если не совпали, то минус.</p><p>Нам удалось обеспечить очень неплохой результат — 10 успешных исходов из 16. Мудрецы выживут в 62,5% случаев.  Для нашей задачи можно придумать довольно много последовательностей, которые обеспечат такой же или лучший результат. Чем больше бросков мы включим в нашу стратегию, тем с большей вероятностью мудрецам удастся выжить.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как Гомер Симпсон почти решил уравнение Великой теоремы Ферма</title>
      <link>https://tproger.ru/problems/kak-gomer-simpson-pochti-reshil-uravnenie-velikoj-teoremy-ferma</link>
      <comments>https://tproger.ru/problems/kak-gomer-simpson-pochti-reshil-uravnenie-velikoj-teoremy-ferma?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Клименков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/kak-gomer-simpson-pochti-reshil-uravnenie-velikoj-teoremy-ferma</guid>
      <description><![CDATA[<p>Великая теорема Ферма, Гомер Симпсон и Дональд Кнут в одной задаче: она посильна начинающему программисту и позволяет проверить героя.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/kak-gomer-simpson-pochti-reshil-uravnenie-velikoj-teoremy-ferma">Как Гомер Симпсон почти решил уравнение Великой теоремы Ферма</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 17 Dec 2020 10:14:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Казалось бы, что может быть общего между одной из самых популярных математических теорем, Гомером Симпсоном и Дональдом Кнутом? Как и многие другие интересные идеи и задачи, их объединяет математика. Иногда даже кажется, что почти всё в этом мире сводится к математике и программированию.</p><p>Задача, о которой я хочу рассказать, совсем не сложная. Думаю, её без труда сможет решить даже начинающий программист. Но эта задача интересна и весьма необычна. Согласитесь, ведь не каждый день предоставляется возможность проверить вычисления героя культового мультсериала Гомера Симпсона?</p><h2>Что это за теорема?</h2><p>Большинство читателей Tproger, конечно же, неоднократно слышали о Великой теореме Ферма. О ней написано множество научных статей, она упоминается в книгах, рассказах, фильмах и мультсериалах. Не удивлюсь, если ей даже посвящена какая-нибудь басня.</p><p>Для тех, кто подзабыл, что это за теорема, приведу краткий экскурс в историю:</p><ol><li>В третьем веке до нашей эры Диофант Александрийский пишет труд по арифметике, в котором предлагает читателям найти решение уравнения x2 +y2 = z2 в целых числах.</li><li>В 1637 году Пьер Ферма изучает книгу Диофанта Александрийского. Ферма без труда понимает, что у предложенного уравнения бесконечное количество решений и предлагает гораздо более интересную задачу: найти целочисленные решения для уравнения x3+ y3 = z3. Эта задача оказалась уже не такой простой, как предыдущая. Ферма смог найти только тривиальные решения, вроде 03 + 73 = 73. Это, конечно, математически верно, но совершенно неинтересно. В итоге Ферма решает, что для целых степеней p &gt; 2 уравнение xp + yp = zp не имеет целочисленных решений. Это и есть та самая Великая теорема Ферма. Причём это была не просто гипотеза: Ферма удалось строго математически доказать это утверждение (не будем тут останавливаться на версии, что Ферма просто пошутил). Однако он не стал записывать доказательство, вместо этого он написал на полях книги Диофанта такую фразу: «Я нашёл этому поистине чудесное доказательство, но поля книги слишком узки для него». Кстати, вам это не напоминает некоторые технические задания: «Тут и так всё ясно — нечего и записывать»?</li><li>С 1637 года до нашего времени математики пытались доказать Великую теорему Ферма. Некоторым удалось найти доказательство для отдельных малых степеней (3, 5, 7 и некоторых других). Но доказать теорему полностью не удавалось никому.</li><li>В 1995 году математик Эндрю Уайлс из Принстонского университета наконец опубликовал полное доказательство теоремы. Текст доказательства занимает 130 страниц математических формул. Хотя теорема и доказана, многие математики сомневаются, что сам Ферма имел в виду именно такое громоздкое доказательство. Кроме того, Уайлс использовал множество современных математических методов, которые ещё не существовали во времена Ферма.</li></ol><p>При чём здесь Гомер Симпсон?</p><p>В 1998 году на экраны вышла очередная серия десятого сезона «Симпсонов» — «Волшебник вечнозелёной аллеи». В ней Гомер Симпсон соревнуется в изобретательском таланте с самим Томасом Эдисоном. Как и у каждого заправского изобретателя у Гомера есть грифельная доска, на которой он пишет разные формулы и рисует чертежи будущих изобретений. В течение нескольких секунд мы видим в кадре эту доску, на которой написано равенство: 378712 + 436512 = 447212. Там есть другие надписи и рисунки, но нас сейчас интересует именно эта запись. Выглядит так, будто Гомер написал решение уравнения Великой теоремы Ферма. Но к этому мы ещё вернёмся.</p><p>Доска изобретателя Гомера — это одна из многочисленных математических шуток в «Симпсонах». В сериале они появляются постоянно: в виде особенных чисел, формул, чертежей, фраз героев, кодов и шифров. Некоторые из них видны в кадре всего на мгновение, но внимательные зрители их находят и стараются разгадать.</p><p>В таком обилии математических отсылок и аллюзий в сериале нет ничего удивительного: многие сценаристы «Симпсонов» имеют математическое образование. Например, один из сценаристов серии «Волшебник вечнозелёной аллеи» Дэвид Коэн — это математик и программист, который в какой-то момент увлёкся написанием весёлых историй для популярного сериала. Интересно, что в школе Дэвид был типичным «гиком», организатором группы программистов Glitchmaster («Мастера глюков»), которая занималась программированием. Например, они разработали собственный язык программирования FLEET для разработки ускоренной графики на компьютере Apple II Plus. Затем он одновременно закончил Гарвард (получив степень бакалавра по физике) и Беркли (получив степень магистра по компьютерным наукам).</p><p>Нет ничего удивительного, что в сериале, написанном программистами, физиками и математиками, периодически появляются математические шутки и загадки. Этой теме посвящена очень интересная книга «Симпсоны и их математические секреты», написанная Саймоном Сингхом в 2016 году. Там среди прочего описана и шутка про Великую теорему Ферма.</p><p>Кстати, похожее равенство появлялось в сериале и раньше — в серии, посвящённой Хэллоуину в 1995 году. Там есть эпизод, в котором Гомер из своего привычного плоского мира попадает в трёхмерное пространство. В странном мире трёхмерных моделей вокруг Гомера летает множество неких загадочных научных объектов и формул. Одна из них выглядит так: 178212 + 184112 = 192212. Кстати, автор этого эпизода — уже знакомый нам Дэвид Коэн.</p><h2>Чем особенны именно эти цифры?</h2><p>Давайте разберёмся, чем же так примечательны эти равенства. Напомню, что интересующие нас серии «Симпсонов» вышли в 1995 и 1998 годах — время начала расцвета «Симпсонов». В эти же годы появились одноимённые Windows 95 и 98, но до появления первой версии Android оставалось ещё 10 лет. Да и сама компания Google была основана только осенью 1998 года. В то время у инженеров, учёных и математиков ещё были в ходу инженерные (или научные) калькуляторы, на которых можно было делать довольно сложные вычисления. Поэтому зрители проверяли равенство, написанное Гомером, скорее всего, с помощью такого калькулятора.</p><p>Я решил повторить этот эксперимент и отыскал свой старый добрый CASIO FX-911W, который верой и правдой служил мне на бесконечных лабораторных работах по физике и электротехнике, а потом и в аспирантуре. Как ни удивительно, спустя 20 лет калькулятор всё ещё прекрасно функционирует. Проверить уравнение несложно. Набираем:</p><p>(3987 [xy] 12 + 4365 [xy] 12) [xy] (1÷12) =</p><p>Получаем ответ: 4472.</p><p>Что примечательно, ответ целый, дробная часть полностью отсутствует. Всё выглядит так, как будто Гомер Симпсон успешно нашёл решение уравнения Великой теоремы Ферма в целых числах.</p><p>Аналогично можно проверить и второе равенство:</p><p>(1782 [xy] 12 + 1841 [xy] 12) [xy] (1÷12) =</p><p>Ответ: 1922.</p><p>Если у вас тоже есть инженерный калькулятор, вы можете разыграть своих друзей, интересующихся математикой. Секрет заключается в том, что числа 4472 и 1922 настолько близки к решению, что десяти разрядов калькулятора уже недостаточно, чтобы показать первый отличный от нуля разряд дробной части.</p><p>Современные компьютерные программы-калькуляторы уже считают гораздо точнее, с ними такой фокус не пройдёт. Например, калькулятор Google для первого выражения выдаст ответ 4472,00000001. Так что чуда не произошло — в математике «почти» не считается. Но на инженерном калькуляторе действительно выглядит эффектно.</p><h2>Постановка задачи</h2><p>В книге Саймона Сингха не только рассказывается вся эта история, но и упоминается, что Дэвид Коэн написал программу для нахождения решения уравнения, наиболее близкого к целому числу. Прочитав это, я захотел сам написать аналогичную программу, чтобы не только воспроизвести равенства Гомера Симпсона, но и найти другие варианты решения. Понятно, что никакой реальной пользы от такой программы не будет, но задач с практическим смыслом нам всем и так хватает в повседневной жизни. Иногда хочется написать что-то страшно непрактичное.</p><p>Написать такую программу — задача совсем не сложная. Её решение доступно любому начинающему программисту. Нам потребуется просто перебрать значения из определённого диапазона и найти наилучшее решение.</p><p>Сформулирую задачу. Нужно найти решение Великой теоремы Ферма в целых числах (шутка!). На самом деле нужно найти целые числа a и b и целую степень p, которые дают наиболее близкое к целому число c в выражении: ap + bp = cp.</p><p>У задачи есть важное ограничение, о котором нужно не забыть. Программа не должна выдавать тривиальные решения. Например, решение 100050 + 50050 = 100050 не подходит. Понятно, что второе слагаемое настолько меньше первого, что им вообще можно пренебречь.</p><p>Кстати, в сети пишут, что Дональд Кнут в первом издании своего «Искусства программирования» (1968 год) предложил читателям написать программу, которая доказывала бы Великую теорему Ферма. Он оценил решение этой задачи по максимуму: в 50 баллов. Также пишут, что в разделе ответов он указал, что один из читателей «нашёл потрясающее доказательство, но места для него недостаточно». Дональд Кнут тоже не прочь был пошутить.</p><h2>Самый простой вариант решения</h2><p>Приведу здесь самый простой вариант решения. Поскольку в «Симпсонах» в обоих равенствах используются четырёхзначные числа, попробуем решить задачу именно для них. При этом будем проверять степени от 3 до 20. Чтобы избежать тривиальных решений, ограничим значение b. Пусть оно будет отличаться от a не больше, чем на 500. Отдельно найдём решение для чисел, которые чуть больше и чуть меньше требуемого целого. Выведем на экран не только варианты решения с минимальной и максимальной дробной частью, но и те, у которых дробная часть меньше 0,0000001 или больше 0,9999999.</p><p>Вот как выглядит мой вариант программы на Delphi:</p><p>Даже такой простейший вариант программы выдаст нам много чего интересного. Итак, для начала посмотрим на варианты решения с минимальной дробной частью. Решения расположены в порядке уменьшения дробной части. В таблице выделена строка с решением Гомера Симпсона.</p><figure><img src="https://media.tproger.ru/uploads/2020/12/table1.png" alt="" /></figure><p>Похоже, в этом случае Гомер Симпсон нашёл самый подходящий ответ для четырёхзначных чисел.</p><p>Теперь посмотрим на аналогичную таблицу, содержащую варианты решения с максимальной дробной частью. Решения расположены в порядке возрастания дробной части.</p><figure><img src="https://media.tproger.ru/uploads/2020/12/table2.png" alt="" /></figure><p>Здесь решение Гомера Симпсона только на втором месте. Похоже, Дэвид Коэн в своей программе не дошёл до степени 20. Это уже интересный результат.</p><p>Если в нашей программе увеличить максимальную степень до 30, то лучший результат в первой таблице останется неизменным, а во второй таблице появится новый максимум: 672724 + 698424 = 708424. Остаток — 0,999999982255980857. А вот увеличение максимальной степени до 50 этот результат уже не поменяет.</p><p>Для трёхзначных чисел и степеней от 3 до 20 лучшие решения будут такими:</p><figure><img src="https://media.tproger.ru/uploads/2020/12/table3.png" alt="" /></figure><p>Только вот на калькуляторе они уже выглядят не так феерично: отображается дробная часть. Так что выбор четырёхзначных чисел был вполне оправдан.</p><p>В итоге нам удалось не только повторить решение Гомера Симпсона, но и найти несколько других подходящих вариантов. И один вариант оказался даже лучше, чем у Гомера!</p><p>Предлагаю вам попробовать написать более универсальную программу, которая бы выполняла поиск оптимального решения в произвольном диапазоне чисел и степеней. При этом она должна уметь самостоятельно отсеивать тривиальные решения. И, конечно, нужно не забыть про оптимизацию — не следует дважды вычислять решение для каждой пары чисел. Наверняка, у вас получится значительно лучше, чем у меня.</p>]]></content:encoded>
    </item>
    <item>
      <title>13 математических задач: попробуйте решить их все</title>
      <link>https://tproger.ru/quiz/math-test</link>
      <comments>https://tproger.ru/quiz/math-test?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/quiz/math-test</guid>
      <description><![CDATA[<p>Математические задачи, с помощью которых можно проверить свои знания: проходного балла нет, потому что это не экзамен, а добровольная проверка.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/quiz/math-test">13 математических задач: попробуйте решить их все</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Викторины]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 11 Jun 2020 13:39:52 GMT</pubDate>
      <content:encoded><![CDATA[<p>Здесь лежат математические задачи, которые вам по плечу. Ну наверное. Лучше проверить, чтоб наверняка. Проходной балл — нисколько: это ж не экзамен, да и мы не Марь Ванна.</p>]]></content:encoded>
    </item>
    <item>
      <title>Сможете ли вы получить наследство, решив головоломку со шкафчиками?</title>
      <link>https://tproger.ru/problems/lockers-and-inheritance-riddle</link>
      <comments>https://tproger.ru/problems/lockers-and-inheritance-riddle?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Чуватова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/lockers-and-inheritance-riddle</guid>
      <description><![CDATA[<p>Чудаковатый дядюшка оставил загадку: 100 родственников решают её одновременно и делят деньги, а тот, кто справится раньше, забирает всё.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/lockers-and-inheritance-riddle">Сможете ли вы получить наследство, решив головоломку со шкафчиками?</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 03 Feb 2020 12:32:18 GMT</pubDate>
      <content:encoded><![CDATA[<p>Ваш богатый чудаковатый дядюшка только что скончался. Вы и ещё 99 родственников были приглашены на чтение завещания. Дядюшка хотел оставить все деньги вам, но знал, что тогда ваши родственники будут докучать вам всю жизнь. Поэтому он решил поставить всё на то, что он обучил вас всему, что сам знал о головоломках.</p><p>Ваш дядюшка оставил в завещании записку:</p><p>«Я придумал головоломку. Если вы все ответите на неё одновременно, вы разделите деньги поровну. Но если кто-то решит задачу раньше и даст ответ без лишней беготни, он получит всё наследство целиком. Успехов.»</p><p>Юрист привёл вас и 99 ваших родственников в секретную комнату в поместье. Там стояли 100 шкафчиков, в каждом из которых была записка с одним-единственным словом. Юрист объяснил: каждому родственнику присвоен номер от 1 до 100. Первый откроет все дверцы шкафчиков. Второй закроет каждый второй шкафчик. Третий изменит состояние каждого третьего шкафчика — откроет дверцу, если она закрыта, и закроет, если открыта. Так будет продолжаться до тех пор, пока все 100 родственников не выполнят действие. Слова в шкафчиках, которые в итоге останутся открытыми, подскажут вам код от сейфа. Ещё до того, как первый родственник начал открывать шкафчики, вы вышли вперёд и сказали юристу, что знаете, какие шкафчики останутся открытыми. Как вы это поняли?</p>]]></content:encoded>
    </item>
    <item>
      <title>Маленькая девочка считает до 1000 — на каком пальце она закончит?</title>
      <link>https://tproger.ru/problems/girl-counts-on-fingers</link>
      <comments>https://tproger.ru/problems/girl-counts-on-fingers?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Чуватова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/girl-counts-on-fingers</guid>
      <description><![CDATA[<p>Девочка считает от 1 до 1000 на пальцах левой руки туда и обратно. Полный цикл занимает восемь счётов, а ответ находится через остаток.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/girl-counts-on-fingers">Маленькая девочка считает до 1000 — на каком пальце она закончит?</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 10 Jan 2020 15:48:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>Маленькая девочка считает от 1 до 1000 на пальцах левой руки следующим образом.</p><p>Она начинает с большого пальца — это 1. Указательный — 2. Средний — 3. Безымянный — 4. Мизинец — 5.</p><p>И продолжает в обратную сторону: безымянный — 6, средний — 7, указательный — 8, большой — 9. Потом указательный — 10 и так далее.</p><p>Если она продолжит считать таким образом, на каком пальце она закончит?</p>]]></content:encoded>
    </item>
    <item>
      <title>Математика для ИИ: теория вероятностей</title>
      <link>https://tproger.ru/translations/math-for-ai-probability</link>
      <comments>https://tproger.ru/translations/math-for-ai-probability?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Ринг]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/math-for-ai-probability</guid>
      <description><![CDATA[<p>Основные понятия теории вероятностей: вероятность, дополнение события. Эти знания необходимы для работы с искусственным интеллектом и машинным обучением.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/math-for-ai-probability">Математика для ИИ: теория вероятностей</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 04 Oct 2019 14:05:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Машинное обучение, глубокое обучение и ИИ — интересные и широко обсуждаемые темы по всему миру. Но как и в разработке ПО, разобраться в этой области сможет не каждый. Многие думают, что если у них за плечами годы разработки различных приложений, то они имеют преимущество над простыми новичками. В какой-то степени они правы, но «не говори гоп, пока не перепрыгнешь», особенно когда дело касается математики.</p><p>В <a href="https://tproger.ru/translations/math-for-ai-linear-algebra/">предыдущей статье</a> вы познакомились с базовыми концепциями линейной алгебры. Эта статья поведает вам о теории вероятностей. Учитывайте, что цель статьи — не заменить курс в университете, а познакомить читателя с темой, чтобы дальше он уже сам решил, стоит ли ему углубляться.</p><h2>Базовые термины</h2><p>Может быть немного странно работать с вероятностями в информатике, так как большинство ветвей имеют дело с детерминированными и определёнными сущностями. Но когда речь идёт об искусственном интеллекте, неопределённость и хаотичность проявляется во многих формах. Безусловно, данные являются основным источником неопределённости, но источником может быть и модель. И теория вероятностей обеспечивает методы для моделирования и работы с неопределённостью, её используют для анализа частоты возникновения событий.</p><p>Вероятность — возможность осуществления чего-либо. По сути, это число от 0 до 1, где 0 указывает на невозможность возникновения события, а 1 указывает на достоверность его возникновения. Вероятность возникновения события A будет обозначаться  P(A) или p(A). То есть, если P(A) = 1, то можно сказать, что событие A точно произойдёт, а если P(A) = 0, то событие точно не произойдёт. В связи с этим, можно вывести P(Ac), дополнение события. Оно имеет значение P(Ac) = 1 – P(A) и обозначает вероятность того, что событие A никогда не произойдёт.</p><p>Когда речь идёт о вероятностях нескольких событий и взаимодействиях между ними, используется термин совместная вероятность. Она представляет собой вероятность того, что произойдут оба события. Если эти события независимы, совместную вероятность можно определить так:</p><figure><img src="https://media.tproger.ru/uploads/2019/08/image-1.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/08/image-2.png" alt="" /></figure><p>Однако, если эти события являются взаимоисключающими, формула усложняется:Теперь будут приведены некоторые термины, которые используются при вычислении вероятности. Какова вероятность события A, если произошло событие B? Для того, чтобы узнать, нужно вычислить условную вероятность.</p><figure><img src="https://media.tproger.ru/uploads/2019/08/image-5.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/08/image-6.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/08/image-7-1.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/08/image-8-1.png" alt="" /></figure><p><br />Очень интересно, что совместная вероятность по нескольким случайным переменным может быть разделена на условные распределения по одной переменной — такое преобразование называют цепным правилом:Также следует упомянуть простое, но основополагающее правило Байеса. Оно описывает вероятность события, базируясь на знании условий или других событий, связанных с главным событием:Или же его упорядоченная версия:<br />P(A) — априорная вероятность гипотезы <i>A</i>, P(A|B) – вероятность гипотезы <i>A</i> при наступлении события <i>B</i> (апостериорная вероятность), а P(B|A) – вероятность наступления события <i>B</i> при истинности гипотезы <i>A</i>. Когда мы говорим о машинном обучении, глубоком обучении или искусственном интеллекте, мы используем правило Байеса для обновления параметров нашей модели.</p><h2>Случайные величины и распределение вероятностей</h2><figure><img src="https://media.tproger.ru/uploads/2019/09/image-9.png" alt="" /></figure><p>Случайной величиной называется такая величина, которая случайно принимает какое-то значение из множества возможных значений. Или более точно — это функция, которая конвертирует результат какого-либо изменяющегося процесса в числовое значение. В математике обозначается так:</p><p>Здесь Ω — это набор возможных исходов, а Е — некоторое измеримое пространство. Однако, случайная величина — лишь шаблон, она содержит возможные значения процесса. И чтобы она стала по-настоящему полезной, её стоит объединить с распределением вероятностей. В итоге вы узнаете, насколько вероятно каждое значение. Случайные величины могут быть как дискретными, так и непрерывными, и как следствие, существуют два способа описания распределения вероятностей.</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-10-1.png" alt="" /></figure><p>Дискретная случайная величина имеет конечное число значений. Их можно рассматривать в качестве категориальных переменных или перечислений. Распределение вероятностей по этому типу случайных величин описывается с помощью функции вероятностной массы (англ. probability mass function — PMF). Эта функция определяет вероятность  того, что дискретная случайная величина равняется тому или иному значению. Предполагается, что Х: Ω → [0, 1] — это дискретная случайная величина, содержащая набор возможных исходов Ω для пространства со значениями 0 и 1:</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-11-1.png" alt="" /></figure><p>Непрерывная случайная величина имеет значения из множества действительных чисел (а их бесконечное множество). Распределение вероятностей случайной величины этого типа определяется при помощи функции плотности вероятности (англ. probability density function — PDF). Эта функция должна чётко соответствовать условиям: во-первых, область р — это набор всех возможных значений х. Стоит уточнить: функция принимает только значения больше или равные 0. Во-вторых, функция должна удовлетворять следующему условию:</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-12-1.png" alt="" /></figure><p>Но проблема в том, что эта функция не определяет вероятность конкретного значения, а даёт вероятность нахождения этого значения в бесконечно малой области значений. И всё потому, что вероятность того, что распределение вероятности примет какое-либо конкретное значение, равна 0, так как существует бесконечное множество возможных значений. Вероятность того, что х находится где-то в промежутке [a, b], определяется так:</p><h2>Математическое ожидание, дисперсия и ковариация</h2><p>В теории вероятностей математическое ожидание определяется как среднее значение повторения некоторого события. То есть ожидаемое значение некоторой функции f(x) над распределением вероятностей P(x) является средним значением f, когда x берётся из P. Для дискретных случайных величин оно определяется следующим образом:</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-13-1.png" alt="" /></figure><p>А для непрерывных случайных величин вот так:</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-14-1.png" alt="" /></figure><p>Можно сказать, что данное значение является мерой так называемого «центра» распределения вероятностей. Но также хотелось бы узнать, как меняются значения функции f(x) случайной величины x, когда мы берём разные значения из её распределения вероятностей P(x). Это называется дисперсией. Она представляет собой среднеквадратическое отклонение значений f(x) от среднего значения f(x):</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-15.png" alt="" /></figure><p>А корень этого выражения будет называться стандартным отклонением. Исходя из этого можно определить ковариацию. По сути, это мера линейной зависимости двух случайных величин. Она показывает, насколько сильно два числа линейно связаны:</p><figure><img src="https://media.tproger.ru/uploads/2019/09/image-16-1.png" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>Математика для ИИ: линейная алгебра</title>
      <link>https://tproger.ru/translations/math-for-ai-linear-algebra</link>
      <comments>https://tproger.ru/translations/math-for-ai-linear-algebra?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Ринг]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/math-for-ai-linear-algebra</guid>
      <description><![CDATA[<p>Векторы, скаляры, тензоры и матрицы — базовые понятия линейной алгебры, которые нужны, чтобы начать разбираться в машинном обучении и ИИ.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/math-for-ai-linear-algebra">Математика для ИИ: линейная алгебра</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 13 Jul 2019 13:31:24 GMT</pubDate>
      <content:encoded><![CDATA[<p>В мире IT сейчас часто можно услышать о машинном обучении, нейронных сетях и искусственном интеллекте. И не удивительно — эти отрасли быстро развиваются и используются для решения различного рода задач.</p><p>Большинство концепций были открыты ещё 50 лет назад, и множество из них основаны на математических принципах. Поэтому у людей, пытающихся войти в данную нишу, часто возникает вопрос: «На каком уровне нужно знать математику?». Эта статья даст представление о некоторых необходимых основах, в частности, о базовых концепциях линейной алгебры.</p><h2>Базовые термины</h2><p>По сути, вся линейная алгебра вертится вокруг нескольких понятий: векторы, скаляры, тензоры и матрицы, — всё это очень важно для машинного обучения, ведь благодаря им можно абстрагировать данные и модели. Например, каждая запись в каком-нибудь наборе данных может быть представлена в виде вектора в многомерном пространстве, а параметры нейронных сетей абстрагируются как матрицы. Каждое из понятий по своему специфично, так что рассмотрим их подробнее.</p><h3>Скаляр</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-7.png" alt="" /></figure><p>Скаляр — это просто число, в отличие от вектора или матрицы. Скаляры определены как элементы поля, предназначенные для описания пространства вектора. Несколько скаляров образуют вектор. Скаляры могут быть представлены разными типами чисел: вещественными, действительными или натуральными. Обозначаются скаляры строчными и прописными буквами латинского и греческого алфавита:</p><h3>Вектор</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-8.png" alt="" /></figure><p>Вектор — это упорядоченный массив скаляров. Скаляры выступают в роли координат точек в пространстве. Скопление векторов становится так называемым векторным пространством. Векторы можно складывать вместе, перемножать друг на друга и масштабировать. Они обозначаются жирным шрифтом. Каждый элемент вектора имеет индекс.</p><h3>Матрица</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-10.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/07/image-11.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/07/image-12.png" alt="" /></figure><p>Матрица — это двумерный массив скаляров. Обозначается жирным шрифтом в верхнем регистре. Например, если говорить о матрице из вещественных чисел, где m рядов и n столбцов, записывается такая матрица вот так:Поскольку матрица — двумерный массив, элементы матрицы имеют два индекса:Две матрицы могут быть сложены или вычтены одна из другой, только если у матриц одинаковое количество рядов и столбцов. Две матрицы могут быть перемножены только тогда, когда количество столбцов первой матрицы соответствует количеству рядов второй. Например, вы можете умножить матрицу A размера m, n на матрицу B размера n, p. В результате вы получите матрицу C размера m, p. Формула умножения выглядит вот так:</p><p>Важно заметить, что матричное произведение дистрибутивно и ассоциативно:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image-13.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/07/image-14.png" alt="" /></figure><p>Однако, иногда может понадобиться перемножить элементы матриц между собой. Такую операцию называют произведением Адамара (обозначается  A ∘ B). Матрицы также можно умножать на векторы и на скаляры. Интересно, что произведением матрицы и вектора будет вектор:</p><h3>Тензор</h3><p>Тензор — это многомерный массив чисел. Обычно в нём больше двух измерений, так что он может быть изображён как многомерная сетка, состоящая из чисел. На самом деле, матрицы — те же тензоры, только они двухмерные, вот и все их отличия. Тензоры получили известность благодаря фреймворку для машинного обучения <a href="https://rubikscode.net/2019/04/22/ultimate-guide-to-tensorflow-2-0-in-python/">TensorFlow</a>.</p><h2>Операции</h2><p>Есть несколько операций, которые можно производить с матрицами, и знание которых пригодится для понимания принципов работы ИИ.</p><h3>Транспонирование матрицы</h3><p>В результате выполнения этой операции появляется так называемая <a href="https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0">транспонированная матрица</a>. По сути, это зеркальное отображение матрицы по главной диагональной линии, которая начинается в верхнем левом и идёт в правый нижний угол. Транспонированной матрицей от матрицы A будет матрица AT (также A′, Atr, tA или At). Кроме того, транспонированную матрицу можно получить, записав ряды матрицы A как столбцы матрицы AT, а столбцы матрицы A — как ряды матрицы AT.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/200px-Matrix_transpose.gif" alt="" /></figure><h3>Умножение единичной матрицы на вектор</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-17.png" alt="" /></figure><p>Существует такое понятие как единичная матрица. Если умножить её на вектор, значения вектора не меняются. Элементы главной диагонали единичной матрицы имеют значение 1, а все остальные равны 0:</p><p>Перед тем, как вы продолжите, немного информации о диагональной матрице (она очень похожа на единичную). Все элементы матрицы, за исключением тех, что находятся на главной диагонали, равны нулю. Но, в отличие от единичной, на главной диагонали диагональной матрицы элементы имеют значение, не равное 1. Получается, единичная матрица — это вид диагональной матрицы. Они очень полезны для некоторых алгоритмов.</p><h3>Умножение на обратную матрицу</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-16.png" alt="" /></figure><p>Обратная матрица определяется следующим образом:</p><p>Если умножить матрицу A на обратную ей матрицу A-1, получится единичная матрица. Обратная матрица похожа на обратное число. То есть для a обратным числом будет 1/a. Если обычное число умножить на обратное ему, получится единица: a * 1/a = 1. Здесь то же самое, только с матрицами. Но, увы, это работает только с квадратными матрицами.</p><h3>Псевдоинверсия Мура-Пенроуза</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-18.png" alt="" /></figure><p>Для неквадратных матриц нужно применять <a href="http://ru.knowledgr.com/00216140/%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%B8%D0%BD%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%9C%D1%83%D1%80%D0%B0%D0%9F%D0%B5%D0%BD%D1%80%D0%BE%D1%83%D0%B7%D0%B0">псевдоинверсию Мура-Пенроуза</a>:Где U, D и V — сингулярное разложение матрицы A. Псевдоинверсия D+ матрицы D создаётся путём взятия элементов, обратных элементам матрицы, и её дальнейшим транспонированием. Но будьте осторожны с концепцией обратной матрицы A-1, потому что пока что она больше используется в теории, чем на практике. Это обусловлено тем, что вычислительные способности современных компьютеров позволяют дать лишь приблизительный ответ.</p><h3>Преобразование матрицы в скаляр</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image-19.png" alt="" /></figure><p>Бывает, что нужно преобразовать матрицу в скаляр, для этого нужно найти определитель, он обозначается det(A) или |A|. Так как преобразование возможно только с ними, вот пример с матрицей 2×2:Напоследок про линейную зависимость. Набор векторов будет линейно зависим, если хотя бы один вектор может быть представлен как комбинация других векторов из набора. Иначе набор будет линейно независим. Обычно векторы x и y будут линейно независимы, только если значения для скаляров a и b, удовлетворяющих ax + by = 0, будут равны a = b = 0.</p><h2>Нормы</h2><figure><img src="https://media.tproger.ru/uploads/2019/07/image-20.png" alt="" /></figure><p>Иногда для работы с вектором нужно знать его размер. Для этого существуют специальные функции, которые называют нормами — Ln. Маленькая буква n обозначает количество измерений, в которых находится вектор. В зависимости от того, сколько измерений в вашем векторном пространстве, нормы будут разными. Наиболее известная норма — норма двумерного пространства (Евклидова норма). Чаще всего она представляет собой Евклидово расстояние от начала вектора до точки в пространстве, находящейся на конце этого вектора. При обобщении пространства на несколько измерений используют глобальную норму:На самом деле, нормой может быть любая функция, удовлетворяющая следующим требованиям:</p><ol><li>f(x + y) ≤ f(x) + f(yv) (удовлетворяет неравенству треугольника).</li><li>f(ax) = |a| f(x) (является абсолютно масштабируемой).</li><li>Если f(x) = 0, то x = 0 (определена положительно).</li></ol><figure><img src="https://media.tproger.ru/uploads/2019/07/image-23.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/07/image-24.png" alt="" /></figure><p>Часто, когда вы создаёте ИИ-приложение, очень важно различать элементы, равные 0, и элементы, имеющие значение, близкое к 0. Для этого используется норма L1. Она проста и растёт с одинаковой скоростью во всех точках векторного пространства. Если любой элемент вектора x движется от 0 к a — эта функция вырастает на a:Как упоминалось выше, в глубоком обучении параметры нейронных сетей абстрагируются как матрицы. Следовательно, нужно знать размер матрицы, и с этим нам поможет норма Фробениуса:</p><h2>Заключение</h2><p>В этой статье мы затронули основы линейной алгебры, которые пригодятся, чтобы понять, что же происходит в мире нейронных сетей и искусственного интеллекта. Надеемся, эта статья поможет вам начать свой путь в этой сфере. Успехов!</p>]]></content:encoded>
    </item>
    <item>
      <title>Огурцы, богатства, бочки — подборка задач для программистов</title>
      <link>https://tproger.ru/problems/cucumbers-treasures-barrels</link>
      <comments>https://tproger.ru/problems/cucumbers-treasures-barrels?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Приб]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/cucumbers-treasures-barrels</guid>
      <description><![CDATA[<p>Головоломки для программистов с условиями на русском и английском: сколько весят сто килограммов огурцов, потерявших за жаркий день часть воды.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/cucumbers-treasures-barrels">Огурцы, богатства, бочки — подборка задач для программистов</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 05 Dec 2018 12:05:00 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Огурцы под жарким солнцем</h2><p>Ранним утром бакалейщик выставил 100 килограмм огурцов на улицу перед своим магазином. Огурцы на 99 % состоят из воды. День был жарким и часть воды из огурцов испарилась. В конце дня огурцы состояли из воды на 98 %. Сколько килограммов эти огурцы весили в конце дня (если бакалейщик не продал ни одного огурца)?</p><h2>Города и богатства</h2><p>Дано n городов: x1, x2, …… xn — у каждого своё богатство T[i] и цвет C[i]. Вы можете выбрать между посещением города или его пропуском. Разрешено только движение вперёд. При посещении города вы получаете следующую сумму денег:</p><ul><li>A*T[i], если цвет города совпадает с цветом ранее посещённого города;</li><li>B*T[i], если это первый посещённый город такого цвета, или цвет отличается от цвета предыдущего города.</li></ul><p>Значения T[i], A и B могут быть отрицательными, в то время как C[i] может быть от 1 до n.</p><p>Задача: Необходимо составить алгоритм получения максимально возможной прибыли.</p><p>Примеры:</p><p>Вход: A = -5, B = 7<br />Богатство = {4, 8, 2, 9}<br />Цвет = {2, 2, 6, 2}<br />Выход: 133<br />Посетить города 1, 2 и 3. Прибыль = 8 * 7 + 2 * 7 + 9 * 7 = 133.</p><p>Вход: A = 5, B = -7<br />Богатство = {4, 8, 2, 9}<br />Цвет = {2, 2, 6, 2}<br />Выход: 57<br />Посетить города 1, 2, 4. Прибыль = (-7) * 4 + 8 * 5 + 9 * 5 = 57.</p><h2>Заполненность бочки</h2><p>Два рабочих на заводе спорят о том, сколько пива находится в бочке. Один оптимистично считает, бочка заполнена больше, чем наполовину, а другой заявляет, что пива в ней меньше половины. Как они могут проверить, кто из них прав, без использования измерительных приборов?</p><p>Примечание: крышку бочки можно снять.</p>]]></content:encoded>
    </item>
    <item>
      <title>Батарейки, ряды и конференции — подборка задач для программистов</title>
      <link>https://tproger.ru/problems/batteries-series-conferences</link>
      <comments>https://tproger.ru/problems/batteries-series-conferences?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Приб]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/batteries-series-conferences</guid>
      <description><![CDATA[<p>Подборка задач для программистов: рабочие батарейки для фонарика, сумма рядов и посетители конференции, а также разбор решения задачи о батарейках.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/batteries-series-conferences">Батарейки, ряды и конференции — подборка задач для программистов</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 16 Nov 2018 13:46:19 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Батарейки и фонарик</h2><p>У вас есть 8 батареек, но работают только 4 из них. Вам необходимо вставить 2 рабочие батарейки в фонарик. Какое минимальное количество пар батареек придётся проверить, чтобы фонарик точно включился?</p><h2>Найти сумму ряда 1-2+3-4+5-6+7</h2><p>Дано число N. Необходимо написать программу для поиска суммы последовательности из n чисел по следующему алгоритму:<br />1 − 2 + 3 − 4 + 5 − 6 + …</p><p>Пример:</p><p>Вход: N = 8<br />Выход: −4</p><p>Вход: N = 10001<br />Выход: 5001</p><h2>Сколько людей на конференции?</h2><p>Каждый гость на конференции обменялся рукопожатием с другим. Всего было 66 рукопожатий. Сколько гостей прибыло на научную конференцию?</p>]]></content:encoded>
    </item>
    <item>
      <title>Ищем правду, решаем судоку и генерируем числа: подборка задач для программистов</title>
      <link>https://tproger.ru/problems/truth-sudoku-rand</link>
      <comments>https://tproger.ru/problems/truth-sudoku-rand?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Приб]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/truth-sudoku-rand</guid>
      <description><![CDATA[<p>Головоломка из ста утверждений: каждое сообщает, сколько утверждений ложны. Последовательное рассуждение даёт 50 истинных и 50 ложных.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/truth-sudoku-rand">Ищем правду, решаем судоку и генерируем числа: подборка задач для программистов</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 12 Aug 2018 18:00:39 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Правильные и неправильные предложения</h2><p>Имеется сотня следующих утверждений:</p><p>1-е гласит: по меньшей мере, одно утверждение ложно.<br />2-е гласит: по меньшей мере, два утверждения ложны.<br />3-е гласит: по меньшей мере, три утверждения ложны.<br />4-е гласит: по меньшей мере, четыре утверждения ложны.<br />…<br />100-е гласит: по меньшей мере, сто утверждений ложны.</p><p>Сколько утверждений ложны и сколько истинны?</p><h2>Проверка поля Судоку</h2><p>Дана конфигурация доски судоку, необходимо написать программу для проверки корректная она или нет.</p><p>Пример:</p><p>Вход:</p><p>Выход: корректна.</p><h2>Генератор равной вероятности</h2><p>Напишите метод для генерации случайного числа от 1 до 8, если имеется метод, возвращающий случайное число 1 до 3. Распределение чисел должно быть равномерным.</p>]]></content:encoded>
    </item>
    <item>
      <title>Задачи на логику: помогите таракану, посчитайте множители и побудьте диспетчером</title>
      <link>https://tproger.ru/problems/airplane-cockroach-numbers</link>
      <comments>https://tproger.ru/problems/airplane-cockroach-numbers?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Приб]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/airplane-cockroach-numbers</guid>
      <description><![CDATA[<p>Подборка головоломок с ответами и разбором: за сколько часов таракан заберётся на десятиметровую стену, как посчитать множители и справиться с диспетчерской.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/airplane-cockroach-numbers">Задачи на логику: помогите таракану, посчитайте множители и побудьте диспетчером</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 10 Jul 2018 14:23:41 GMT</pubDate>
      <content:encoded><![CDATA[<h3>Таракан на стене</h3><p>Маленький таракан карабкается по стене высотой 10 метров. Таракан начал путь с подножия стены. Каждый час он может проползти 1 метр в высоту и затем немедленно скатывается на ⅔ метра вниз. Сколько часов понадобится таракану, чтобы достичь вершины стены?</p><h3>Найдите количество простых множителей для каждого числа в диапазоне [0, K]</h3><p>Вход: N = 4<br />Выход : 0 1 1 1<br />Количество простых множителей для 1 — 0<br />Количество простых множителей для 2 — 1<br />Количество простых множителей для 3 — 1<br />Количество простых множителей для 4 — 1</p><p>Вход: 6<br />Выход: 0 1 1 1 1 2<br />Количество простых множителей для 1 — 0<br />Количество простых множителей для 2 — 1<br />Количество простых множителей для 3 — 1<br />Количество простых множителей для 4 — 1<br />Количество простых множителей для 5 — 1<br />Количество простых множителей для 6 — 2<br />2, 3 и 5 сами являются простыми. Для 4 единственный простой множитель — 2. Для 6 простых множителей два — 2 и 3.</p><h3>Минимальное количество самолётов</h3><p>На удаленном острове находится аэропорт. Этот аэропорт является базой для неограниченного количества одинаковых самолетов. Топливная емкость каждого самолета позволяет облететь ровно ½ земного шара вдоль большого круга. Самолеты имеет возможность дозаправки в воздухе без потери скорости и горючего. Хотя количество топлива тоже неограничено, едиственным его источником является этот остров.</p><p>Какое минимальное количество самолетов нужно, чтобы облететь земной шар, с учетом того, что каждый самолет должен безопасно вернуться в аэропорт?</p><p>Обратите внимание:</p><ol><li>Можно игнорировать затраты горючего на ускорение, потери при испарении топлива и пр.</li><li>Поскольку все самолеты должны вернуться в аэропорт — нельзя передать все топливо с одного самолета на другой.</li><li>Предполагается, что дозаправка — чрезвычайно быстрый процесс.</li></ol>]]></content:encoded>
    </item>
    <item>
      <title>Математика для программистов: теория вероятностей</title>
      <link>https://tproger.ru/articles/probability-theory</link>
      <comments>https://tproger.ru/articles/probability-theory?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/probability-theory</guid>
      <description><![CDATA[<p>Базовые понятия для тех, кто идёт в машинное обучение и анализ данных: определение вероятности, распределения и несколько простых примеров.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/probability-theory">Математика для программистов: теория вероятностей</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 08 Jul 2018 08:16:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Некоторые программисты после работы в области разработки обычных коммерческих приложений задумываются о том, чтобы освоить машинное обучение и стать аналитиком данных. Часто они не понимают, почему те или иные методы работают, и большинство методов машинного обучения кажутся магией. На самом деле, машинное обучение базируется на математической статистике, а та, в свою очередь, основана на теории вероятностей. Поэтому в этой статье мы уделим внимание базовым понятиям теории вероятностей: затронем определения вероятности, распределения и разберем несколько простых примеров.</p><p>Возможно, вам известно, что теория вероятностей условно делится на 2 части. Дискретная теория вероятностей изучает явления, которые можно описать распределением с конечным (или счетным) количеством возможных вариантов поведения (бросания игральных костей, монеток). Непрерывная теория вероятностей изучает явления, распределенные на каком-то плотном множестве, например на отрезке или в круге.</p><p>Можно рассмотреть предмет теории вероятностей на простом примере. Представьте себя разработчиком шутера. Неотъемлемой частью разработки игр этого жанра является механика стрельбы. Ясно, что шутер в котором всё оружие стреляет абсолютно точно, будет малоинтересен игрокам. Поэтому, обязательно нужно добавлять оружию разброс. Но простая рандомизация точек попадания оружия не позволит сделать его тонкую настройку, поэтому, корректировка игрового баланса будет сложна. В то же время, используя случайные величины и их распределения можно проанализировать то, как будет работать оружие с заданным разбросом, и поможет внести необходимые корректировки.</p><h2>Пространство элементарных исходов</h2><p>Допустим, из некоторого случайного эксперимента, который мы можем многократно повторять (например, бросание монеты), мы можем извлечь некоторую формализуемую информацию (выпал орел или решка). Эта информация называется элементарным исходом, при этом целесообразно рассматривать множество всех элементарных исходов, часто обозначаемое буквой Ω (Омега).</p><p>Структура этого пространства целиком зависит от природы эксперимента. Например, если рассматривать стрельбу по достаточно большой круговой мишени, — пространством элементарных исходов будет круг, для удобства размещенный с центром в нуле, а исходом — точка в этом круге.</p><p>Кроме того, рассматривают множества элементарных исходов — события (например, попадание в «десятку» — это концентрический круг маленького радиуса с мишенью). В дискретном случае всё достаточно просто: мы можем получить любое событие, включая или исключая элементарные исходы за конечное время. В непрерывном же случае всё гораздо сложнее: нам понадобится некоторое достаточно хорошее <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%BE_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F)">семейство множеств</a> для рассмотрения, называемое алгеброй по аналогии с простыми вещественными числами, которые можно складывать, вычитать, делить и умножать. Множества в алгебре можно пересекать и объединять, при этом результат операции будет находиться в алгебре. Это очень важное свойство для математики, которая лежит за всеми этими понятиями. Минимальное семейство состоит всего из двух множеств — из пустого множества и пространства элементарных исходов.</p><h2>Мера и вероятность</h2><p>Вероятность — это способ делать выводы о поведении очень сложных объектов, не вникая в принцип их работы. Таким образом, вероятность определяется как функция от события (из того самого хорошего семейства множеств), которая возвращает число — некоторую характеристику того, насколько часто может происходить такое событие в реальности. Для определённости математики условились, что это число должно лежать между нулем и единицей. Кроме того, к этой функции предъявляются требования: вероятность невозможного события нулевая, вероятность всего множества исходов единичная, и вероятность объединения двух независимых событий (непересекающихся множеств) равна сумме вероятностей. Другое название вероятности — вероятностная мера. Чаще всего используется <a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%80%D0%B0_%D0%9B%D0%B5%D0%B1%D0%B5%D0%B3%D0%B0">Лебегова мера</a>, обобщающая понятия длина, площадь, объём на любые размерности (n-мерный объем), и таким образом она применима для широкого класса множеств.</p><p>Вместе совокупность множества элементарных исходов, семейства множеств и вероятностной меры называется вероятностным пространством. Рассмотрим, каким образом можно построить вероятностное пространство для примера со стрельбой в мишень.</p><p>Рассмотрим стрельбу в большую круглую мишень радиуса R, в которую невозможно промахнуться. Множеством элементарных событий положим круг с центром в начале координат радиуса R. Поскольку мы собираемся использовать площадь (меру Лебега для двумерных множеств) для описания вероятности события, то будем использовать семейство измеримых (для которых эта мера существует) множеств.</p><p>Примечание На самом деле, это технический момент и в простых задачах процесс определения меры и семейства множеств не играет особой роли. Но понимать, что эти два объекта существуют, необходимо, ведь во многих книгах по теории вероятности теоремы начинаются со слов: «Пусть (Ω,Σ,P) — вероятностное пространство …».</p><p>Как уже сказано выше, вероятность всего пространства элементарных исходов должна равняться единице. Площадь (двумерная мера Лебега, которую мы обозначим λ2 (A), где А — событие) круга по хорошо известной со школы формуле равна π *R2. Тогда мы можем ввести вероятность P(A) = λ2 (A) / (π *R2), и эта величина уже будет лежать между 0 и 1 для любого события А.</p><p>Если предположить, что попадание в любую точку мишени равновероятно, поиск вероятности попадания стрелком в какую-то то область мишени сводится к поиску площади этого множества (отсюда можно сделать вывод, что вероятность попадания в конкретную точку нулевая, ведь площадь точки равна нулю).</p><p>Например, мы хотим узнать, какова вероятность того, что стрелок попадёт в «десятку» (событие A — стрелок попал в нужное множество). В нашей модели, «десятка» представляется кругом с центром в нуле и радиусом r. Тогда вероятность попадания в этот круг P(A) = λ2/(A)π *R2 = π * r2/(π R2)= (r/R)2.</p><p>Это одна из самых простых разновидностей задач на «геометрическую вероятность», — большинство таких задач требуют поиска площади.</p><h2>Случайные величины</h2><p>Случайная величина — функция, переводящая элементарные исходы в вещественные числа. К примеру, в рассмотренной задаче мы можем ввести случайную величину ρ(ω) — расстояние от точки попадания до центра мишени. Простота нашей модели позволяет явно задать пространство элементарных исходов: Ω = {ω = (x,y) такие числа, что x2+y2 ≤ R2}. Тогда случайная величина ρ(ω) = ρ(x,y) = x2+y2.</p><h2>Средства абстракции от вероятностного пространства. Функция распределения и плотность</h2><p>Хорошо, когда структура пространства хорошо известна, но на самом деле так бывает далеко не всегда. Даже если структура пространства известна, она может быть сложна. Для описания случайных величин, если их выражение неизвестно, существует понятие функции распределения, которую обозначают Fξ(x) = P(ξ &lt; x) (нижний индекс ξ здесь означает случайную величину). Т.е. это вероятность множества всех таких элементарных исходов, для которых значение случайной величины ξ на этом событии меньше, чем заданный параметр x.</p><p>Функция распределения обладает несколькими свойствами:</p><ol><li>Во-первых, она находится между 0 и 1.</li><li>Во-вторых, она не убывает, когда ее аргумент x растёт.</li><li>В третьих, когда число -x очень велико, функция распределения близка к 0, а когда само х большое, функция распределения близка к 1.</li></ol><p>Вероятно, смысл этой конструкции при первом чтении не слишком понятен. Одно из полезных свойств — функция распределения позволяет искать вероятность того, что величина принимает значение из интервала. Итак, P (случайная величина ξ принимает значения из интервала [a;b]) = Fξ(b)-Fξ(a). Исходя из этого равенства, можем исследовать, как изменяется эта величина, если границы a и b интервала близки.</p><p>Пусть d = b-a, тогда b = a+d. А следовательно, Fξ(b)-Fξ(a) = Fξ(a+d) - Fξ(a). При малых значениях d, указанная выше разность так же мала (если распределение непрерывное). Имеет смысл рассматривать отношение pξ(a,d)= (Fξ(a+d) - Fξ(a))/d. Если при достаточно малых значениях d это отношение мало отличается от некоторой константы pξ(a), не зависящей от d, то в этой точке случайная величина имеет плотность, равную pξ(a).</p><p>Примечание Читатели, которые ранее сталкивались понятием производной, могут заметить что pξ(a) — производная функции Fξ(x) в точке a. Во всяком случае, можно изучить понятие производной в посвященной этой теме <a href="http://mathprofi.ru/opredelenie_proizvodnoi_smysl_proizvodnoi.html">статье</a> на сайте Mathprofi.</p><p>Теперь смысл функции распределения можно определить так: её производная (плотность pξ, которую мы определили выше) в точке а описывает, насколько часто случайная величина будет попадать в небольшой интервал с центром в точке а (окрестность точки а) по сравнению с окрестностями других точек. Другими словами, чем быстрее растёт функция распределения, тем более вероятно появление такого значения при случайном эксперименте.</p><p>Вернемся к примеру. Мы можем вычислить функцию распределения для случайной величины, ρ(ω) = ρ(x,y) = x2+y2, которая обозначает расстояние от центра до точки случайного попадания в мишень. По определению Fρ(t) = P(ρ(x,y) &lt; t). т.е. множество {ρ(x,y) &lt; t)} — состоит из таких точек (x,y), расстояние от которых до нуля меньше, чем t. Мы уже считали вероятность такого события, когда вычисляли вероятность попадания в «десятку» — она равна t2/R2. Таким образом, Fρ(t) = P(ρ(x,y) &lt; t) = t2/R2, для 0&lt;t.</p><p>Мы можем найти плотность pρ этой случайной величины. Сразу заметим, что вне интервала [0,R] она нулевая, т.к. функция распределения на этом промежутке неизменна. На концах этого интервала плотность не определена. Внутри интервала её можно найти, используя таблицу производных (например из [PDF] на сайте Mathprofi) и элементарные правила дифференцирования. Производная от t2/R2 равна 2t/R2. Значит, плотность мы нашли на всей оси вещественных чисел.</p><p>Ещё одно полезное свойство плотности — вероятность того, что функция принимает значение из промежутка, вычисляется при помощи интеграла от плотности по этому промежутку (ознакомиться с тем, что это такое, можно в статьях о <a href="http://mathprofi.ru/opredelennye_integraly_primery_reshenij.html">собственном</a>, <a href="http://mathprofi.ru/nesobstvennye_integraly.html">несобственном</a>, <a href="http://mathprofi.ru/integraly_primery_reshenij.html">неопределенном</a> интегралах на сайте Mathprofi).</p><p>При первом чтении, интеграл по промежутку [a; b] от функции f(x) можно представлять себе как площадь криволинейной трапеции. Ее сторонами являются фрагмент оси Ох, промежуток [a,b] (горизонтальной оси координат), вертикальные отрезки, соединяющие точки (a,f(a)), (b,f(b)) на кривой с точками (a,0), (b,0) на оси Ох. Последней стороной является фрагмент графика функции f от (a,f(a)) до (b,f(b)). Можно говорить об интеграле по промежутку (-∞; b], когда для достаточно больших отрицательных значений, a значение интеграла по промежутку [a;b] будет меняться пренебрежимо мало по сравнению с изменением числа a. Аналогичным образом определяется и интеграл по промежуткам [a;+∞), (-∞,∞).</p><p>Следующее важное свойство плотности — интеграл от плотности любой случайной величины равен единице. Трактовка этого свойства такова: вероятность того, что функция принимает любое значение равна единице. Кроме того, при вычислении интегралов от плотностей случайных величин, значения которых лежат в ограниченном промежутке, нужно брать интеграл только по этому промежутку.</p><p>Итак, мы разобрались с несколькими важными понятиями: со строгим построением вероятностного пространства и построением случайных величин на нём. Кроме того, мы научились абстрагироваться от конкретного вероятностного пространства при помощи функции распределения и плотности.</p>]]></content:encoded>
    </item>
    <item>
      <title>Посчитайте вероятность коллизии хеш-функции</title>
      <link>https://tproger.ru/problems/hash-collision-probability</link>
      <comments>https://tproger.ru/problems/hash-collision-probability?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/hash-collision-probability</guid>
      <description><![CDATA[<p>Задача на расчёт вероятности коллизии хеш-функции: h(x)=x mod p для n случайных чисел. Решение и условие 100% вероятности.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/hash-collision-probability">Посчитайте вероятность коллизии хеш-функции</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 08 Jun 2018 15:50:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Дана хеш-функция h(x) = x mod p (то есть остаток от целочисленного деления x на p). Для данного n посчитайте вероятность, что для каких-нибудь двух чисел из набора n случайных целых чисел хеш-функция совпадёт. Для каких значений n вероятность будет равна 100%?</p><h2>Решение</h2><p>Для начала заметим, что результатом функции могут быть только значения от 0 до p-1, а это означает, что мы можем заменить числа в наборе остатками от их деления на p. Теперь мы можем переформулировать задачу следующим образом: какова вероятность, что в наборе из n целых чисел c возможным значением от 0 до p-1 два числа совпадут. Для решения сначала посчитаем вероятность того, что они все будут различными. Обратимся к формулам комбинаторики: всего наборов может быть pⁿ (<a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9A.D0.BE.D0.BB.D0.B8.D1.87.D0.B5.D1.81.D1.82.D0.B2.D0.BE_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.89.D0.B5.D0.BD.D0.B8.D0.B9_.D1.81_.D0.BF.D0.BE.D0.B2.D1.82.D0.BE.D1.80.D0.B5.D0.BD.D0.B8.D1.8F.D0.BC.D0.B8">количество размещений с повторениями</a>), а наборов, где все числа будут различны (то есть благоприятных исходов), — p ⋅ (p-1) ⋅ (p-2) ⋅ … ⋅ (p-n+1) = p! / (p-n)! (<a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B5">количество размещений</a>). Таким образом, вероятность того, что все числа в наборе будут различны — p! / (pⁿ ⋅ (p-n)!), а значит, вероятность того, что какие-нибудь два из них совпадут — 1 – p!/(pⁿ ⋅ (p-n)!). Осталось ответить на последний вопрос: для каких значений n вероятность станет равна 100%? Очевидно, что для n ≥ p+1. Тогда по <a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%94%D0%B8%D1%80%D0%B8%D1%85%D0%BB%D0%B5_%28%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0%29">принципу Дирихле</a> хотя бы одному значению на интервале 0 .. p-1 будут соответствовать два числа из набора.</p><h2>Немного истории</h2><p>Эта задача является обобщением знаменитого <a href="https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%B4%D0%BD%D0%B5%D0%B9_%D1%80%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F">парадокса дней рождения</a>, согласно которому в группе из 23 или более человек вероятность того, что день рождения у каких-нибудь двоих из них придется на один день, превышает 50%. Впрочем, парадоксом в классическом смысле этого слова это не является — как видите, мы только что вывели формулу вероятности и даже можем её проверить с помощью длинной арифметики в языке Java.  Если же вы все еще не верите, можете проверить это на своих знакомых, или, например, в комментариях к этой статье — просто напишите дату своего дня рождения.</p>]]></content:encoded>
    </item>
    <item>
      <title>Король и 1000 бутылок вина: как найти одну отравленную?</title>
      <link>https://tproger.ru/problems/the-king-and-1000-bottles-of-wine</link>
      <comments>https://tproger.ru/problems/the-king-and-1000-bottles-of-wine?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/the-king-and-1000-bottles-of-wine</guid>
      <description><![CDATA[<p>Десять заключённых помогут найти отравленную бутылку: ёмкости нумеруют в двоичной системе и сопоставляют флаги с результатом через 10–20 часов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/the-king-and-1000-bottles-of-wine">Король и 1000 бутылок вина: как найти одну отравленную?</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 19 Apr 2018 11:33:02 GMT</pubDate>
      <content:encoded><![CDATA[<h3>Условие задачи</h3><p>Вы — правитель средневековой империи, и завтра у вас намечается торжество. Это будет самая чумовая вечеринка из всех, что вы когда-либо устраивали. По такому поводу не грех открыть 1000 бутылок вина. Но вот незадача: одна из них отравлена.</p><p>У яда нет никаких симптомов, кроме смерти, которая наступает в течение 10–20 часов после принятия даже малейшей дозы яда.</p><p>В вашем распоряжении меньше 24 часов на то, чтобы определить, какая из бутылок отравлена. А ещё у вас есть несколько узников, ожидающих смертной казни. Всё веселье будет испорчено, если умрёт кто-то, кроме них.</p><p>Какое минимальное количество заключённых должно попробовать вино из бутылок, чтобы точно найти отравленную в течение 24 часов?</p><h3>Решение</h3><p>Спойлер: попробовать вино должны 10 узников.</p><p>Пронумеруйте все бутылки в двоичной системе (начиная с нуля). Затем присвойте каждому узнику двоичный флаг. Например, первому — 00000000001, третьему— 00000000100 (чем больше номер узника, тем дальше влево продвигается единица) и т.д. Узники должны сделать глоток из каждой бутылки, в которой попадается их флаг. Например, из восьмой бутылки (0000000111) сделают по глотку первый, второй и третий узники.</p><p>Вот как мы бы нашли отравленную бутылку, будь их всего 8:</p><figure><img src="https://media.tproger.ru/user-uploads/34561/2023-12-21/4bbb256f-5e86-40fb-af40-c5fcc25fce98.png" alt="" /></figure><p>Если все узники умерли, то отравлена седьмая бутылка (или восьмая, если считать от единицы): номера узников — 001, 010 и 100, нужно найти бутылку, в которой все единицы встречаются на тех же позициях, что и у узников. Это бутылка под номером 111 или же седьмая бутылка в нашей таблице.</p><p>Никто не умер — нулевая бутылка. Умерли A и B — яд в третьей бутылке. Не забывайте, что мы нумеруем от нуля.</p><p>Для десяти человек существует 1024 уникальные комбинации, так что мы можем проверить до 1024 бутылок вина.</p><p>Каждый узник попробует вино примерно из 500 бутылок. Узники должны пить из каждой бутылки не дольше 15 секунд и только небольшое количество вина. Небольшие глотки не просто позволят оставить побольше вина гостям, но и не дадут узникам умереть от алкогольного отравления. Поскольку они выпьют примерно по миллилитру из каждой бутылки, в сумме каждый из них выпьет всего по бутылке.</p><p>У узников будет как минимум 50-процентный шанс выжить. Только в одном случае умрут все узники. Также существует 10 комбинаций, в которых умрёт 9 из 10 человек. Таким образом, избегая двух типов этих комбинаций, можно ограничиться смертью максимум восьми узников.</p><p>А вы знаете другие решения этой задачи? Делитесь в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>«Жадное» исполнение, визуализация, JS: представлены обновления библиотеки TensorFlow</title>
      <link>https://tproger.ru/news/tensorflow-updates</link>
      <comments>https://tproger.ru/news/tensorflow-updates?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Светлана Хачатурян]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/tensorflow-updates</guid>
      <description><![CDATA[<p>TensorFlow получил «жадное» исполнение, TensorFlow Hub для повторного использования моделей и обновление TensorBoard для отладки графов в реальном времени.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/tensorflow-updates">«Жадное» исполнение, визуализация, JS: представлены обновления библиотеки TensorFlow</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Big Data]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 01 Apr 2018 21:22:32 GMT</pubDate>
      <content:encoded><![CDATA[<p>Во рамках второй ежегодной конференции TensorFlow Developer Summit разработчики <a href="https://medium.com/tensorflow/highlights-from-tensorflow-developer-summit-2018-cd86615714b2">анонсировали</a> ряд нововведений в популярной библиотеке для машинного обучения. Открытый инструмент помогает исследователям во многих областях науки (например, в <a href="https://tproger.ru/news/open-source-hunt-for-exoplanets/">астрономии</a>) тренировать свои модели искусственного интеллекта, позволяющие принимать более взвешенные и удачные решения.</p><h3>Что нового?</h3><p>По словам создателей, с введением более интуитивно понятной модели для Python-разработчиков под названием <a href="https://www.tensorflow.org/programmers_guide/eager">«жадное» исполнение</a> пользоваться TensorFlow стало ещё удобнее. Этот способ организации проектов стирает грань между конструированием и исполнением вычислительных графов. Теперь пользователи могут разрабатывать модели, а затем использовать тот же самый код для генерации эквивалентных графов для обучения в разных масштабах через высокоуровневый API Estimator.</p><p>Также разработчики представили новый метод для разворачивания Estimator-моделей одновременно на нескольких устройствах/машинах. Это позволяет быстро масштабировать модели с минимальными изменениями в программном коде.</p><p>Для упрощения повторного использования, отладки и взаимодействия с сообществом была разработана библиотека <a href="http://tensorflow.org/hub">TensorFlow Hub</a>. Она позволяет быстро публиковать и искать модули (автономные части графа TensorFlow), которые можно ещё раз использовать для решения аналогичных задач. Модули содержат предварительно обученные на больших наборах данных веса и могут быть заново натренированы в других программах, при этом на повторную тренировку понадобится меньше входных данных и времени.<a href="https://media.tproger.ru/uploads/2018/04/graphic-debugger-tf.jpg"></a></p><p>В помощь при отладке и анализе внутренних узлов вычислительного графа в режиме реального времени исследователям предлагается новое расширение для инструмента визуализации TensorBoard.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/debugger_intro.jpg" alt="" /></figure><p>Для совершенствования процесса построения полноценных нейронных систем был запущен инструмент TensorFlow Model Analysis — открытая библиотека из TensorFlow и Apache Beam, позволяющая вычислять и визуализировать оценочные показатели.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/roadmap.jpg" alt="" /></figure><p>Среди прочих нововведений числятся:</p><ul><li>поддержка других языков программирования (JavaScript с возможностью разработки и тренировки моделей полностью в браузере, Swift — запуск в апреле);</li></ul><figure><img src="https://media.tproger.ru/uploads/2018/04/browser-js-model-training.jpg" alt="" /></figure><ul><li>обновлённая легковесная (75 КБ вместо 1.1 МБ) и ускоренная библиотека <a href="https://tproger.ru/news/google-released-tensorflow-lite/">TensorFlow Lite</a>;</li><li>интеграция с <a href="https://developers.googleblog.com/2018/03/tensorrt-integration-with-tensorflow.html">NVIDIA TensorRT</a>;</li><li><a href="https://github.com/tensorflow/probability/">TensorFlow Probability API</a> для реализации современных методов анализа Байеса.</li></ul><p>С полным списком изменений можно ознакомиться в источнике. Нейронные сети находят применение не только в науке. Например, их можно обучить <a href="https://tproger.ru/news/ai-april-fool-pranks/">придумывать</a> первоапрельские розыгрыши.</p>]]></content:encoded>
    </item>
    <item>
      <title>Курс «Асимптотический анализ и теория вероятностей»</title>
      <link>https://tproger.ru/video/asymptotic-analysis-and-probability-theory</link>
      <comments>https://tproger.ru/video/asymptotic-analysis-and-probability-theory?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марьяна Шабанова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/asymptotic-analysis-and-probability-theory</guid>
      <description><![CDATA[<p>Курс Computer Science Center охватывает теорию множеств, асимптотику, производящие функции, вероятность, случайные величины и предельные теоремы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/asymptotic-analysis-and-probability-theory">Курс «Асимптотический анализ и теория вероятностей»</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 19 Oct 2017 19:36:07 GMT</pubDate>
      <content:encoded><![CDATA[<p>Русскоязычный курс от Computer Science Center, рассматривающий такие темы, как теория множеств, асимптотики, производящие функции, дискретная и условная вероятность, случайные величины, предельные теоремы.<br />Необходимые предварительные знания для понимания курса:</p><ul><li>комбинаторика;</li><li>математический анализ;</li><li>алгебра.</li></ul><p>Смотрите ещё больше <a href="https://tproger.ru/tag/math-and-probability/">материалов по математике и теории вероятностей.</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Курс «Теория игр»</title>
      <link>https://tproger.ru/video/game-theory-2</link>
      <comments>https://tproger.ru/video/game-theory-2?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дмитрий Баранчук]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/game-theory-2</guid>
      <description><![CDATA[<p>Русскоязычный видеокурс от Computer Science Center, посвященный теории игр — математическому методу изучения оптимальных стратегий в играх. 06 окт 2017</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/game-theory-2">Курс «Теория игр»</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 05 Oct 2017 21:10:39 GMT</pubDate>
      <content:encoded><![CDATA[<p>Русскоязычный курс от Computer Science Center, посвященный теории игр — математическому методу изучения оптимальных стратегий в играх. Курс записан в 2013 году, лектор — Илья Кацев.</p><p>Теория игр занимается математическим моделированием конфликтных ситуаций, таких как конкуренция в экономике, политические конфликты, проблемы, связанные с голосованием и т.д. Строя математические модели этих явлений, можно предсказывать, каким будет результат конфликта, или находить решение, применимое для многих ситуаций.</p><p>В рамках курса будут даны ответы на следующие вопросы:</p><ul><li>Какой результат может быть достигнут при взаимодействии агентов, каждый из которых действует рационально и стремится к своей цели?</li><li>Что изменится, если такая ситуация повторяется много раз?</li><li>Какие правила игры надо установить, чтобы результат этой игры был оптимальным в каком-то смысле?</li><li>Какие существуют принципы оптимальности, формализующие идеи справедливости?</li><li>Как можно честно разделить прибыль, учитывая требования групп участников?</li></ul>]]></content:encoded>
    </item>
  </channel>
</rss>