Search
Write a publication
Pull to refresh
40
0
Алексей Столяренко @jaiprakash

Инженер

Send message

Создание процедурного генератора головоломок

Reading time11 min
Views6.1K
В этом посте описывается генератор уровней для моей игры-головоломки Linjat. Пост можно читать и без подготовки, но он легче усвоится, если сыграть в несколько уровней. Исходный код я выложил на github; всё обсуждаемое в статье находится в файле src/main.cc.

Примерный план поста:

  • Linjat — это логическая игра, в которой нужно закрыть все числа и точки в сетке линиями.
  • Головоломки процедурно генерируются при помощи комбинации из солвера, генератора и оптимизатора.
  • Солвер пытается решить головоломки так, как это делал бы человек, и присваивает каждой головоломке оценку интересности.
  • Генератор головоломок создан таким образом, чтобы можно было с лёгкостью менять одну часть головоломки (числа) и при этом все остальные части (точки) менялись таким образом, чтобы головоломка оставалась решаемой.
  • Оптимизатор головоломок многократно решает уровни и генерирует новые вариации из наиболее интересных, найденных на текущий момент.

Правила


Чтобы понять, как работает генератор уровней, нужно, к сожалению, разобраться с правилами игры. К счастью, они очень просты. Головоломка состоит из сетки, содержащей пустые квадраты, числа и точки. Пример:


Цель игрока — прочертить вертикальную или горизонтальную линию через каждое из чисел при соблюдении трёх условий:

  • Линия, идущая через число, должна иметь ту же длину, что и число.
  • Линии не могут пересекаться.
  • Все точки необходимо закрыть линиями.

Пример решения:


Ура! Дизайн игры готов, UI реализован, и теперь единственное, что осталось — найти несколько сотен хороших головоломок. А для подобных игр обычно не имеет смысла пытаться создавать такие головоломки вручную. Это работа для компьютера.
Читать дальше →

Довольно вычурные «Начала» Евклида в TeX-е

Reading time7 min
Views18K


«какая-то странная антикварная х██ня, написанная ирландским кулибиным в 1847 ну, хорошо, что и такая бывает, конечно» Миша Вербицкий

В 16-м году мне на глаза попались «Начала» Евклида в интерпретации Оливера Бирна. Фишка этой книги в том, что вместо буквенных обозначений навроде «треугольник ABC» там прямо в текст помещаются миниатюры частей построения, то есть, например, картинка с соответствующим треугольником. Насколько сделать такую книгу, как можно представить, было адовой работой в середине XIX века, настолько же легко, с правильными инструментами, это должно бы быть теперь. И, в общем, решил я в этом убедиться наверняка.
Читать дальше →

Терраформируй это: обзор Terragenesis

Reading time5 min
Views45K
В App Store/Google Play можно найти самые разные игры, поэтому я не сильно удивился, когда в одном из профильных чатов меня спросили, знаю ли я игру о терраформировании небесных тел. Посмотрев ее, решил написать небольшой обзор, потому что игра, на мой взгляд, хоть и не без недостатков, но является достаточно любопытной.


Читать дальше →

Соскучились по КПК?

Reading time2 min
Views33K
Сделайте его сами!



Устройство выполнено на микроконтроллере STM32F4 и работает под управлением специально разработанной для него ОС. Приложения для неё можно писать на скриптовом языке и помещать на карту памяти. В режиме ожидания зарядки хватает примерно на пять дней, при включённом дисплее с яркостью подсветки в 60% — более чем на шесть часов.

В ПО применены сторонние наработки под лицензией MIT, готовый результат выложен под ней же. Если вы всё ещё не уверены, что вам нужен такой гаджет, поменяйте своё мнение на противоположное, воспользовавшись симулятором (требует WebAssembly, у переводчика заработало):



Да, а ещё у него нет даже намёка на безрамочность.
Читать дальше →

Как полностью отключить Защитник Windows на Windows 10

Reading time3 min
Views1.4M


В Windows 10 имеется встроенный антивирус Windows Defender («Защитник Windows»), защищающий компьютер и данные от нежелательных программ: вирусов, шпионских программ, программ-вымогателей и многих других типов вредоносных программ и действий хакеров.

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

Единственная проблема связана с тем, что полностью удалить или отключить Windows Defender у вас не выйдет – эта система глубоко интегрирована в Windows 10. Однако есть несколько обходных путей, при помощи которых вы можете отключить антивирус – это использование локальной групповой политики, реестра или настроек Windows в разделе «Безопасность» (временно).
Читать дальше →

Печатная плата заменяет два линейных двигателя

Reading time2 min
Views47K


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

Все об SVG анимации

Reading time41 min
Views179K
В данной статье я хочу осветить тонкости работы с SVG-графикой, SVG анимацию (в том числе и path), проблемы и способы их решения, а также разнообразные подводные камни, коих в SVG огромное множество. Эту статью я позиционирую как подробное руководство.



Здесь не будет никаких плагинов, библиотек и прочего, речь пойдет только о чистом SVG.
Единственный инструмент, который я буду использовать, это Adobe Illustrator.
Получить сакральные знания

Инфракрасный термометр с датчиком MLX90614

Reading time1 min
Views12K


Автор из Варшавы разработал инфракрасный термометр с датчиком MLX90614, семисегментным дисплеем HP QDSP-6040 и микроконтроллером ATtiny2313 MCU. Датчик позволяет измерять температуру в диапазоне: -70 — 380 ° С. Микроконтроллер ATtiny2313 связывается с датчиком по шине SMBus.

Нужно ли чистить строки в JavaScript?

Reading time6 min
Views79K
Что? Строки могут быть «грязными»?

Да, могут.

//.....Какой-то код
console.log(typeof str); // string
console.log(str.length); // 15
console.log(str); // "ччччччччччччччч"

Вы думаете, в этом примере строка занимает 30 байт?

А вот и нет! Она занимает 30 мегабайт!
Читать дальше →

Бесплатные ссылки, или чем заняться на досуге владельцу сайта

Reading time10 min
Views5.3K
Эта статья будет полезна владельцам бизнеса, которые занимаются продвижением своего сайта самостоятельно, но в “пассивном режиме”: в свободное время понемногу изучают вопрос, пытаются вникнуть в разные аспекты, пробуют разные способы и сервисы. Иными словами, не ставят жестких сроков и не проводят по бухгалтерии бюджеты и статьи расходов на SEO.

Если вы маркетолог, и вам, как это часто бывает, поручили заодно продвигать сайт (естественно, своими силами, без бюджета и на добровольных началах), то рекомендую пробежаться по пунктам в этой статье, не исключено, что некоторые из них хоть немного скрасят эту ситуацию.

Я предлагаю список мест, где можно размещать ссылки в свободное от основной работы время. Сразу скажу, что никакого взлета в результатах поиска можно не ждать (хотя, как редкое исключение, и такое тоже случается), речь идет о постепенном развитии и накоплении ссылочной массы с попутным улучшением других факторов и получением живых посещений.
Читать дальше →

Трансформатор Теслы с печатными катушками, впаял три компонента — и готово

Reading time2 min
Views30K

Применение печатных катушек сокращает трудоёмкость изготовления электронных устройств. Если их делают на продажу, как, например, блоки УКВ-ИП-2 или RFID'ы, это вопрос себестоимости, если для себя — удобства. Вот и предлагаемый трансформатор Теслы не придётся наматывать. Главное дождаться, когда приедет плата, после чего сборка займёт пару минут. Потребуются: транзистор (о том, какой лучше — далее), резистор на 82 кОм и светодиод.
Читать дальше →

USB панель управления космическим кораблем своими руками

Reading time11 min
Views24K

Здравствуйте, дорогие читатели!

Пришла мне тут одна идейка, а не собрать ли пульт управления космическим кораблем. На USB. С нативной поддержкой драйверов. Custom HID. Чтобы воткнул и всё работает, без всяких танцев и бубнов. В итоге, получился некий монструозный «геймпад» для космических симуляторов. В общем, судите сами.
Читать дальше →

Бесплатный VPN сервис Wireguard на AWS

Reading time11 min
Views144K

Для чего?


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


Статья 19
Каждый человек имеет право на свободу убеждений и на свободное выражение их; это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать, получать и распространять информацию и идеи любыми средствами и независимо от государственных границ

В данном руководстве мы за 6 этапов развернем свой собственный бесплатный* VPN сервис на базе технологии Wireguard, в облачной инфраструктуре Amazon Web Services (AWS), с помощью бесплатного аккаунта (на 12 месяцев), на инстансе (виртуальной машине) под управлением Ubuntu Server 18.04 LTS.


Я старался сделать это пошаговое руководство как можно более дружественным к людям, далеким от ИТ. Единственное что требуется — это усидчивость в повторении описанных ниже шагов.

Читать дальше →

На какой диапазон эта антенна? Измеряем характеристики антенн с помощью OSA103 Mini

Reading time7 min
Views98K


— На какой диапазон эта антенна?
— Не знаю, проверь.
— КАААК?!?!

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

Опытным радиоинженерам эта информация может показаться банальной, а методика измерения — недостаточно точной. Статья рассчитана на тех, кто вообще ничего не понимает в радиоэлектронике, как я.

TL;DR Мы будем измерять КСВ антенн на различных частотах с помощью прибора OSA 103 Mini и направленного ответвителя, строить график зависимости КСВ от частоты.
Читать дальше →

О простых вещах-сложно. Письмо химика 3D-печатнику. Растворители для пластмасс и защита от них

Reading time15 min
Views109K
DIY посвящается...

Одним из наиболее часто задаваемых вопросов в моей консультационной практике являются вопросы связанные с растворением/склейкой пластмасс с помощью всевозможных органических растворителей. В последнее время произошел настоящий всплеск интереса к химии высокомолекулярных соединений, связанный с появлением доступных 3D принтеров и необходимостью ориентироваться в «чернилах» для них (т.е. полимерных нитях-филаментах). Лишний раз убеждаюсь в том, что ни один, даже самый продвинутый «музей науки» с эффектным шоу не может так заставить IT-шника интересоваться пластмассами, как собственный 3D-принтер. Так что, читатель, если тебе хоть раз приходилось думать чем склеить пластмассу, которую не клеил default-ный суперклей, если мучали сомнения по поводу растворения поддержек свежеотпечатанной детали, да и просто интересно, чем можно отмыть клей от магазинного ценника на подарке — прошу под кат. Также настоятельно рекомендую страницу отправить в закладки не только тем, кто часто занимается склеиванием пластмасс, но и всем тем, кому часто приходится работать с различными растворителями/разбавителями. Делалось для себя — подарено Хабру!

Читать дальше →

Пишем OTA-загрузчик для ATmega128RFA1 (в составе устройства Smart Response XE)

Reading time5 min
Views7.8K


Всё началось с приобретения автором на вторичном рынке интересного устройства — Smart Response XE (краткое описание). Предназначено оно для школ: каждый ученик в классе получает по девайсу, похожему на электронную записную книжку или переводчик девяностых, учитель задаёт вопрос, и ученики набирают на клавиатурах устройств ответы, поступающие по радиоканалу (802.15.4) в приёмник, подключённый к учительскому ПК.

Поддержка этих устройств прекращена несколько лет назад, и то, что школы закупали по 100-200 долларов за штуку, теперь всплывает на eBay по 10 и меньше. «Железо» там ну очень подходит для гиковских опытов:

  • клавиатура на 60 клавиш
  • дисплей с разрешением в 384x136, 2 бита на пиксель — аналогично БК, CGA, но 4 не цвета, а градации яркости
  • микроконтроллер ATmega128RFA1 (128 кБ флеш-памяти, 4 кБ ПЗУ, 16 кБ ОЗУ, приёмопередатчик стандарта 802.15.4)
  • внешняя (по отношению к микроконтроллеру, а не всему устройству) флеш-память на 1 мегабит (128 килобайт) с интерфейсом SPI
  • отсек для 4 элементов ААА.

По названию микроконтроллера понятно, что он относится к семейству AVR, а значит, сделать устройство Arduino-совместимым — задача более чем тривиальная…
Читать дальше →

Ceedling + Eclipse или unit-тесты для микроконтроллеров

Reading time2 min
Views11K
image


Программируешь микроконтроллеры? Начитался про TDD или просто устал искать баги и переписывать код заново?

Друг, попробуй тесты.
Читать дальше →

Трансформируем рабочее место в лежачее за 200$

Reading time3 min
Views106K
По мнению австралийского нейрофизиолога Дарена Липники, люди лучше решают творческие задачи в лежачем положении. Это связано с норадреналином, не дающем нам расслабиться пока тело находится в вертикальном положении.



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

Кейс: слезаем с иглы контекстной рекламы на бесплатный SEO-трафик

Reading time8 min
Views17K
Данный кейс можно разделить на 2 части. Первая часть короткая – в ней суть. Вторая часть – подробности работы. У кого есть опыт в сфере – могут ознакомиться только с первой частью. Тем, кому интересны детали (кому-то покажутся очевидными и банальными) – для вас вторая часть.



1 этап – нас устраивает контекст


Мы работали с клиентом за 45 000 р. в месяц. В эту сумму входили в основном программные правки сайта + SEO поддержка (первичная оптимизация, работа над юзабилити, оптимизация новостей и другие мелкие доработки).

Бюджет распределялся так: 90% — доработки сайта, 10% — SEO. Тематика – пластиковые окна, регион Удмуртская Республика.
Параллельно, другая компания работала над контекстной рекламой. Вот как распределялся трафик.



Стоит учитывать, что часть переходов из поисковиков – это тот же трафик с директа, поэтому фактического SEO-трафика было меньше.

Таким образом мы работали год. Занимались правками, делали маломальскую SEO оптимизацию новостей и других материалов.


Читать дальше →

Когда «Zoë» !== «Zoë», или почему нужно нормализовывать Unicode-строки

Reading time6 min
Views20K
Никогда не слышали о нормализации Unicode? Вы не одиноки. Но об этом надо знать всем. Нормализация способна избавить вас от множества проблем. Рано или поздно нечто подобное тому, что показано на следующем рисунке, случается с любым разработчиком.
«Zoë» — это не «Zoë»
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity