Рубрика «Занимательные задачки» - 31

Несколько месяцев назад я получил от друга такое письмо:


Тема: Можешь развернуть и объяснить мне эту одну строчку кода?

Текст:Считай меня тупым, но… я не понимаю её и буду благодарен, если растолкуешь подробно. Это трассировщик лучей в 128 символах. Мне кажется, он восхитительный.

<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>


Эта строчка JavaScript отрисует анимацию, которая показана на изображении под катом. В браузере она запускается здесь. Скрипт написан автором www.p01.org, где вы можете найти эту и много других классных демок.
Читать полностью »

Первая часть публикации вызвала определённый интерес, пришёл ряд откликов, среди которых есть один, который хочется отметить особо: «жаль, нельзя скачать с гитхаба половину автомата и допилить под свою задачу, все надо делать самостоятельно. Если бы был некий стандарт записи автомата в какой-нибудь xml, позволяющий обмен автоматными алгоритмами, плюс некая «стандартная библиотека», возможно, все бы было иначе […] речь идёт о выдумывании какого-то «обобщенного состояния» и «обобщенного автомата», построении библиотеки таких автоматов с возможностью их комбинировать так же просто, как вызываются функции в языках». Отвечу читателю и всем, кто знаком с темой программных автоматов, но не удовлетворён нынешним положением дел (а оно в целом неудовлетворительное): мы обратимся именно к такой постановке вопроса, после того как будет достаточно очерчен предмет разговора.
Сегодняшняя статья посвящена теоретическим, идейным и психологическим аспектам автоматов. Рассмотрев их, мы снова вернёмся на прагматические позиции, которые были заявлены в начале цикла публикаций.

Читать полностью »

В этой публикации началось рассмотрение интересной задачки — отношения соседних чисел в обобщенном ряду Фибоначчи (в котором каждый следующий член оказывается равен сумме $inline$k$inline$ предыдущих.

К сожалению, задачка не была доведена до логического окончания, и брошена при неполном ответе для случаев 3 и 4.

Просто чтобы закрыть тему, рассмотрим ряд, образованный рекуррентным соотношением

$$display$$f_n= sum_{i=n-k-1}^{n-1}f_i$$display$$

Читать полностью »

Компания Hola объявляет долгожданный летний конкурс по программированию! Победителей ожидают призы:

  1. Первое место: 3000 USD.
  2. Второе место: 2000 USD.
  3. Третье место: 1000 USD.
  4. Если Вы отправите кому-то ссылку на этот конкурс, поставив наш адрес в CC, и этот человек займёт призовое место, Вы получите половину суммы приза (разумеется, не в ущерб награде победителя). За одного победителя такую награду может получить только один человек — тот, кто отправил ссылку первым.

Авторы интересных решений будут приглашены на собеседования.

Конкурс по программированию: JSDash - 1

Правила

Условия конкурса на английском языке размещены на GitHub. Ниже — перевод на русский язык.

Читать полностью »

Здравствуй!

imageКартинка отсюда

Предлагаю в качестве тренировки для мозга следующую задачку:

Общаются между собой две машины. Шлют друг другу цифровые данные, натурально нули и единицы. Только канал между ними не очень: биты регулярно то искажаются, то пропадают вовсе. Допустим, наш канал из 20 бит в среднем один бит ломает, другой теряет. А теперь пишем алгоритм, наиболее оптимально эти данные передающий.

Читать полностью »

В своей книге Нейт Сильвер приводит такой пример: допустим требуется разместить инвестиции в нескольких предприятиях, которые могут обанкротиться с вероятностью $5%$. Требуется оценить свои риски. Чем выше вероятность банкротства, тем меньше мы будем вкладывать денег. И наоборот, если вероятность банкротства стремится к нулю, то можно инвестировать без ограничений.

Если имеется 2 предприятия, тогда вероятность того, что они оба обанкротятся и мы потеряем все вложения $P=0.05 cdot 0.05=0.0025$. Так учит стандартная теория вероятности. Но что будет, если предприятия связаны и банкротство одного ведет к банкротству другого?

Крайним случаем является ситуация, когда предприятия полностью зависимы. Вероятность двойного банкротства $ P$( банкрот1 & банкрот2 ) = $P$( банкрот1 ), тогда вероятность потери всех вложений равна $P=0.05$. Методика оценки риска имеет большой разброс $P$ от 0.05 до 0.0025 и реальное значение зависит от того насколько правильно мы оценили связанность двух событий.

Оценка связанности событий с помощью Байеса - 7
При оценке инвестиций в $N$ предприятий имеем $P$ от $0.05$ до $0.05^N$. То есть максимальная возможная вероятность остается большой $P=0.05$ и старая поговорка «не клади яйца в одну корзину» не сработает, если упадет прилавок со всеми корзинами сразу.

Таким образом наши оценки имеют колоссальный разброс, и сколько куда вкладывать остается вопросом. А ведь надо хорошо считать, прежде чем вкладывать. Нейт Сильвер говорит, что незнание этих простых законов аналитиками привело к крахам фондового рынка в 2008 году, когда рейтинговые агенства США оценивали риски, но не оценивали связанность рисков. Что в конце концов привело к эффекту домино, когда сначала свалился крупный игрок и увлек за собой других.

Попробуем разобрать эту проблему, решив простую математическую задачу после ката.
Читать полностью »

Кубок конфедераций плавно подходит к концу – остается всего пара решающих матчей. Однако футбол – это не только красивая игра, но и повод для проведения серьезных научных исследований. В этом материале расскажем, как ученые Университета ИТМО работают над проектами, помогающими сделать просмотр футбольного матча на стадионе безопаснее и комфортнее.

Футбол как точная наука: как Университет ИТМО помогает организаторам Кубка конфедераций и ЧМ-2018 - 1Читать полностью »

Виртуальные твари и места их обитания: прошлое и настоящее TTY в Linux - 1Ubuntu интегрирована в Windows 10 Redstone, Visual Studio 2017 обзавелась поддержкой разработки под Linux – даже Microsoft сдает позиции в пользу растущего числа сторонников Торвальдса, а ты всё еще не знаешь тайны виртуального терминала в современных дистрибутивах?

Хочешь исправить этот пробел и открываешь исходный код? TTY, MASTER, SLAVE, N_TTY, VT, PTS, PTMX… Нагромождение понятий, виртуальных устройств и беспорядочная магия? Всё это складывается в довольно логичную картину, если вспомнить, с чего всё началось…
Читать полностью »

Lightning Network (LN), вероятно, одно из самых ожидаемых нововведений для биткойн-блокчейна. Идея, впервые предложенная Джозефом Пуном (Joseph Poon) и Таджем Дрийа (Tadge Dryja) около двух лет назад. Lightning Network обещает поддержку неограниченного количества транзакций между пользователями, выполняемых в сети платежных каналов, развернутой поверх блокчейна. При этом система наследует надежность биткойн-блокчейна.

Над реализацией LN-протокола работают сразу несколько компаний, среди которых Lightning Labs, Blockstream, ACINQ, а также Bitfury. Эта технология позволит производить микроплатежи с использованием биткойнов, что существенно расширит возможности и сферу применимости криптовалюты. В этом материале мы поговорим, на чем строится концепция Lightning Network и как работает эта сеть.

Как запустить надстройку над биткойн-блокчейном - 1Читать полностью »

Hard Reverse или особенности реверса файлов для архитектуры PowerPC Big-Endian - 1 Задания на reverse engineering — обязательная часть любых CTF, и NeoQUEST в этом плане не исключение. В каждое задание мы добавляем «изюминку», которая, с одной стороны, несколько затрудняет участникам прохождение задания, а с другой — позволяет на практике разобраться с тем, с чем еще не приходилось работать.

Если говорить об «изюминках», то задание online-этапа NeoQUEST-2017 планеты Endian «Спасение экипажа» — практически кекс! Добро пожаловать под кат, в самые дебри реверса: поговорим об архитектуре PowerPC Big-Endian и немного — о QEMU!

А мы напоминаем, что 29 июня в Петербурге состоится «Очная ставка» NeoQUEST-2017: доклады, воркшопы, конкурсы, призы, отличное времяпровождение и свободный вход при регистрации на сайте — всё для тебя! Подробнее о том, что войдет в программу «Очной ставки», читай тут и на сайте!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js