• Решение задачи замощения с помощью SAT солвера на примере пентамино

      Однажды попалась мне игра пентамино, где было необходимо уложить 13 фигурок в квадрат 8 на 8. После некоторого периода времени, втечение которого я безуспешно пытался решить эту задачу, я решил, что необходимо написать программу, которая бы делала это за меня. Для этого необходимо было выбрать алгоритм решения. Первое, что приходит на ум — это обычный алгоритм ветвей и границ, когда фигурки укладываются одна за другой примыкая друг к другу (алгоритм с танцующими ссылками здесь не подходит, поскольку фигурки разные). Для ускорения этого алгоритма обычно используются различные эвристики, например, предпочтение отдается ветвлению с наименьшим количеством вариантов. Можно придумать и реализовать и другие эвристики в этом алгоритме, но тут я подумал, что множество различных ухищрений для ускорения решения подобных задач уже реализовано в SAT солверах. Поэтому, необходимо перевести задачу на соответствующий математический язык и воспользоваться каким-либа SAT солвером. О том, как это было реализовано и какие получились результаты можно почитать под катом.
      Читать дальше →
    • Arduino в Linux: копаемся в кишках проекта

      • Tutorial

      Введение


      В предыдущей статье был описан процесс превращения Qt Creator в полноценную IDE для проектов на платформе Arduino. Шаги были описаны подробно, но без описания смысла происходящего, поэтому эффект от такой статьи небольшой. В каждом конкретном случае могут возникать и возникают разнообразные нюансы и разобраться в них без понимания того как устроен проект сложно.

      Поэтому в данной заметке мы разберемся в структуре и настройках проекта.
      Читать дальше →
    • Arduino в Linux: настраиваем Qt Creator в качестве среды разработки

      • Tutorial
      Платформа Arduino популярна, независимо от того, ругают её или хвалят. Её создателям удалось снизить порог вхождения до уровня несколько кликов мышью + пара строк кода и вуаля — вот вам моргающий светодиодик. И вообще, для быстрого прототипирования поделок на AVR, Arduino вещь крайне удобная. Единственное что им не удалось это IDE, которую и IDE-то назвать сложно. Среди функций IDE она обеспечивает только одну — автоматизацию создания и сборки проекта.

      Для пользователей Windows существует альтернатива: MS Visual Studio Community + плагин vMicro который позволяет писать скетчи, но уже со всеми вкусностями, предоставляемыми IDE. Плагин без проблем качается в самой студии через меню «Инструменты» и в триале работает сколько угодно. Платная версия в теории поддерживает пошаговую отладку, но меня, как владельца лицензионной копии vMicro они не очень-то и впечатлили.

      Для пользователей Linux всё как всегда: хотим хорошую IDE — выбираем «жертву» и пытаемся прикрутить к ней нужный функционал. Существуют решения на базе Eclipse, но я не люблю эклипс, о чём уже однажды писал. Я мирюсь с ним как с неизбежным злом, когда под рукой нет вообще ничего подходящего. Из всех бесплатных IDE я больше всего уважаю мощный и замечательный Qt Creator, в котором я и моя команда работаем уже больше года. Поэтому и рассказывать буду о том, как превратить его в среду разработки для Arduino.
      Читать дальше →
    • Хаскель — ход конем 3. Заключение

        image

        В конце второй статьи я попытался решить еще одну задачу, связанную с ходом коня и подсчитать количество замкнутых маршрутов в прямоугольнике m x n, но дальше квадрата 6x6 не продвинулся. После ряда оптимизаций удалось ускорить вычисления на шесть порядков, т.е. примерно в миллион раз и вплотную приблизиться к квадрату 8x8, вычислив количество циклов в прямоугольнике 7x8.

        Пусть квадрат 8x8 по-прежнему кажется недоступным грубому перебору, но такое ускорение говорит о хорошем потенциале и языка и задачи в целом. И, собственно, опытом раскрытия этих потенциалов хотелось бы поделиться с читателями.
        Читать дальше →
      • DC/AC инвертор: принцип работы, схемотехника, встроенное ПО

        Импульсные преобразователи и силовая электроника в целом, всегда оставались чем-то сакральным для большинства любителей и профессионалов в области разработки электроники. В статье освещается пожалуй самая интересная тема в среде DIY-щиков и фанатов альтернативной энергетики — формирование синусоидального напряжения/тока из постоянного.

        Думаю многие из вас наверняка видели рекламу, либо читали статьи, где была фраза «чистый синус». Вот именно о нем и пойдет речь, но не о маркетинговой составляющей, а о исключительно технической реализации. Я постараюсь максимально понятно рассказать о самих принципах работы, о стандартных (и не очень) схемотехнических решениях и самое главное — напишем и разберем ПО для микроконтроллера STM32, которое и сформирует нам необходимые сигналы.

        Почему STM32? Да потому, что сейчас это самый популярный МК в СНГ: по ним много обучающей русскоязычной информации, есть куча примеров, а главное эти МК и средства отладки для них — очень дешевые. Скажу прямо — в коммерческом проекте я бы поставил только TMS320F28035 или подобный DSP из серии Piccolo от TI, но это уже совсем другая история.

        Важно одно — STM32 позволяет стабильно управлять простыми «бытовыми» силовыми преобразователями от которых не зависит судьба мира работа какой-нибудь АЭС или ЦОДа.



        Вот такую картину управляющих сигналов необходимо получить, чтобы превратить ток постоянный в переменный. И да — тут именно синус! Как в том фильме: «Видишь суслика? — Нет. — А он есть...»

        Интересно узнать каким образом формируется синус? Хочется узнать как все-таки качают нефть киловатты энергии? Тогда добро пожаловать под кат!
        Читать дальше →
      • История проекта длиной в год от 11.11.16 до 11.11.17

        Всем привет! В этой статье я хотел бы рассказать о двух вещах: с какими трудностями я столкнулся в ходе работы над Прайс Архивом и что из этого вышло. Мой рассказ я построю, может быть, не совсем обычно. Я почти не буду давать ответы на возникшие вопросы. Я только озвучу те вопросы и проблемы, которые возникали и возникают, которые решил или которые находятся в процессе решения. Инсайд чистой воды, можно сказать.

        Как говорится — все от земли, из первых уст. Предполагаю, что Вы устанете просто от прочтения того, что нужно было сделать.

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

        Если Вас интересует информация по ценам на товары AliExpress.com, то прошу сразу ко второй части. Там я расскажу все самое интересное, что было мной замечено.
        Читать дальше →
      • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

        Подробнее
        Реклама
      • Подарок от Гика — делаем кухонный таймер

          Выбираем подарок


          У бабушки моего сына скоро будет день рождения. Так как я его увлёк микроконтроллерами, то пришла идея подарить какой-то прибор, естественно, на микроконтроллере и сделанный своими руками. Как и все бабушки, наша бабушка не является продвинутым пользователем всяких устройств, и в принципе у нее ничего особенного из электроники нет. Так что, можно сделать любой, не очень сложный прибор.

          Когда мы приезжаем к ней в гости, нас всегда встречает богатый стол, с большим количеством блюд. Поэтому, мы сразу решили делать прибор, полезный на кухне. Вместе мы часто играем в различные настольные игры — лото, различные игры с кубиком. Значит, наш прибор должен и тут помогать.

          Подумав немного, сын решил делать продвинутый кухонный таймер.
          Читать дальше →
        • Теоретическая Нейробиология. Часть вторая. Сингулярность?


            В первой части мы пришли к тому, что мозг имеет наборы триггеров и сигнальную систему для передачи сигналов между удаленными наборами. При поступлении внешних раздражителей происходит активация набора соответствующего раздражителям, что приводит к производству соответствующего набора гормонов. Гормоны раздражают другие наборы триггеров, имеющих сходный набор гормонов для активации. Что порождает цепную реакцию. То есть наше сознание есть не что иное как поиск равновесия между двумя системами, системой триггеров и сигнальной системой. При этом есть внешние раздражители, которые выводят систему из равновесия. Можно предположить что такая система никогда не достигнет равновесия.

            Попробуем рассмотреть это более детально.
            Читать дальше →
          • Опенсорсный набор утилит PayPal для кроссдоменного взаимодействия

            • Перевод
            Автор материала, разработчик из PayPal, описывает набор утилит для кроссдоменного взаимодействия.



            Мы в PayPal пишем много яваскриптового кода, который в конечном счете начинает работать на других веб-сайтах и других доменах. Яркий пример — checkout.js, интеграционный скрипт, полностью охватывающий процесс оформления и оплаты заказа с помощью нашего сервиса, позволяющий мерчантам очень просто и непринужденно встраивать нашу кнопку и механизм оформления заказа в свои сайты.

            Запуск нашего кода на сторонних сайтах сопряжен с огромным количество рисков и подводных камней, но есть некоторые ключевые моменты:

            • Мы совершенно точно никак не можем сломать какие-либо сайты. Это означает, что мы никак не модифицируем глобальные переменные, которых мы не создавали, включая полизаполнения для браузерных API. Мы не делаем этого, поскольку такой подход почти всегда делает отслеживание багов практически невозможным.
            • А вот сайты очень даже могут нас сломать, что они делают довольно часто. Один из недавних примеров: сайт перезаписал Array.prototype.toJSON что привело к поломке JSON.stringify. Многие веб-сайты включают полизаполнение WeakMap, которое в отличие от ее нативной версии не работает на междоменных оконных объектах. Поэтому без дополнительных предварительных проверок мы можем доверять только собственному коду.
            Читать дальше →
          • Как не надо работать с часовыми поясами или Аэрофлот-фэйл

              Решился я недавно на покупку билетов Аэрофлота. Затея сама по себе подозрительная, но я решил усугубить: скачал их мобильное приложение под андроид и купил все там. Заказал билет из Барселоны на 27 февраля, вылет в 23:45, и очень удивился, когда после оплаты мне на почту свалились билеты на 28 февраля с вылетом в 23:45 и прибытием 1-го марта. Как так, не мог же я так грубо ошибиться?

              Я провел раскопки, которые показали, что ошибка именно в мобильном приложении, поехали:
              Читать дальше →
            Самое читаемое