Проекты. Примеры наших работ

Генератор изображений в стиле string art

String art – вид искусства создания изображений путём специального переплетения нитей. Обычно на каком-нибудь материале, например, деревянной дощечке, вбиваются гвозди или закручиваются винты, за которые зацепляется нить и, последовательно зацепляясь за них, создаётся какой-нибудь рисунок. Мы создали свой собственный генератор для получения арта из любого изображения.

Генератор доступен по ссылке: string art генератор

Симулятор процессора на машине Тьюринга

Единственная машина Тьюринга, симулирующая x86 подобный процессор, используя упрощённый синтаксис ассемблера на основе NASM. Поддерживает числа со знаком и, в отличии от прошлой версии, память, стек, регистры, АЛУ и программа располагаются на одной ленте.

Симулятор доступен по ссылке: Симулятор процессора на машине Тьюринга

Симулятор процессора на машинах Тьюринга

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

Симулятор доступен по ссылке: Симулятор процессора на машинах Тьюринга

Генератор текста на основе цепей Маркова

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

Сгенерировать текст можно тут: Цепи Маркова в качестве генератора текста

Кластеризация методом k-средних

Кластеризация — это разделение множества входных векторов на группы (кластеры) по степени «схожести» друг на друга. Одним из наиболее простых алгоритмов является метод k-средних. Он использует понятие центроида кластера и информацию о расстояние от точки до центра кластера. Алгоритм, как следует из названия, разбивает множество входных точек на k кластеров, что является как плюсом алгоритма, так и небольшим минусом, если заранее неизвестно необходимое количество кластеров.

Покластеризовать можно тут: кластеризация методом k-средних

Игра "Лабиринт с предметами"

Играют двое. Каждый игрок рисует по два поля 10 на 10. На одном поле чертится свой лабиринт, по которому будет ходить соперник. Второе, пока пустое, поле – лабиринт соперника, по которому ходит сам игрок. На нем отмечаются разведанные в процессе игры объекты лабиринта противника. Цель – вынести клад из чужого лабиринта быстрее чем соперник вынесет клад из твоего.

Поиграть можно тут: лабиринт с предметами

Игра "Жизнь" Конвея

Однажды один умный математик придумал игру, в которую нельзя играть, но можно смотреть, и назвал её "Жизнь"...

Понаблюдать за игрой можно тут: игра "Жизнь"

Рейтрейсинг | Трассировка лучей

Для создания наиболее реалистичных изображений используется технология трассировки лучей. Недаром гигант NVIDIA так упорно работает над созданием видеокарты, которая поддерживает трассировку лучей прямо их коробки. Мы решили создать простейшую версию рейтрейсинга на примере создания картинки со сферами на шахматном поле. Каждый раз генерируется случайная картинка, обычно уходит от 10 до 50 секунд в зависимости от мощности устройства для создания картинки, так что, пожалуйста, дождитесь её загрузки, результат вас может поразить!

Рейтрейсер доступен по ссылке: трассировка лучей

Методы оптимизации градиентного спуска

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

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

Визуализатор классификатора на основе полносвязной сети

Для более глубокого понимания работы полносвязных сетей мы решили создать небольшой визуализатор задачи классификации на основе сети прямого распространения. Задача классификации формулируется следующим образом: есть набор из нескольких точек на плоскости (X, Y), про которые известно, к какому классу они относятся. Требуется определить, к какому классу относятся все остальные точки, на основе информации об имеющихся точках.

Ссылка на визуализатор: визаулизатор нейронной сети прямого распространения

Гравитационный симулятор

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

Поиграться самостоятельно можно здесь: гравитационный симулятор

Система частиц

В продолжение экспериментов с гравитационным взаимодействием написали ещё одну залипательную страницу — симулятор системы частиц и гравитационных полей.
Имеется четыре вида объектов:

Поиграться самостоятельно можно здесь: система частиц


Больше примеров у нас в группе: vk.com/programforyou