Pull to refresh
19
0
Send message

Подборка игр с низкоуровневым программированием

Level of difficultyEasy
Reading time5 min
Views34K

TL;DR

Игры от Zachtronics:

TIS-100, EXAPUNKS, SHENZHEN I/O

Про создание процессора от логических элементов и до написания кода на ассемблере: браузерная бесплатная nandgame.com, более продвинутая Turing complete.

Если Вам нравится какая-то игра из перечисленных - наверно, и остальные тоже подойдут. В каждую из них я наиграл по 30+ часов, получил кучу удовольствия и научился чему-то новому.

Подробности
Total votes 67: ↑66 and ↓1+79
Comments26

Использование алгоритма Бойера-Мура-Хорспула в Java с примером решения задачи с LeetCode

Level of difficultyEasy
Reading time4 min
Views2.8K

Алгоритм Хорспула используется для нахождения подстроки в строке. Например, у нас есть строка «The game is over» и подстрока «over». Алгоритм Хорспула вернет значение первого вхождения подстроки «over» в строку «The game is over», а именно 12. 

Фактически, данный алгоритм является упрощенным алгоритмом Бойера-Мура, который, считается работает лучше, чем стандартный алгоритм на случайных текстах, но в худшем случае его скорость равна |needle| * |haystack| вместо 3 х |haystack|. 

Тем не менее, для восприятия, на мой взгляд, он гораздо проще.

Итак, погнали.

Условие задачи с leetcode: https://leetcode.com/problems/find-the-index-of-the-first-occurrence-in-a-string/description/

Как работает алгоритм?

Строка и подстрока совмещаются по первому символу, и начинаются сравниваться от последнего символа к первому.

Для примера возьмем строку: «aabcdadbc» и подстроку «adb»

Совмещаются строки следующим образом (слева направо):

Читать далее
Total votes 3: ↑3 and ↓0+6
Comments2

Сколько стоит 3D-принтер по металлу?

Reading time6 min
Views15K

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

В стоматологии печатают мосты, а ювелиры используют 3D-принтеры для работы с драгоценными металлами. Металлическая 3D-печать проникла в самые разные отрасли благодаря своей доступности и разнообразию. Хотя можно много рассказать о технологии металлической 3D-печати, лучших принтерах, услугах по запросу и материалах, здесь мы сосредоточимся на стоимости. Давайте начнем.

Читать далее
Total votes 17: ↑11 and ↓6+11
Comments9

Игрушечная имплементация чисел с фиксированной точкой в C++

Level of difficultyMedium
Reading time6 min
Views2K

В C++ нет базового типа чисел с фиксированной точкой, в стандартной библиотеке также нет классов для них. В тоже время работа с числами с плавающей точкой (double, float) часто может быть неочевидна (например, ответьте на вопрос: ассоциативна ли операция сложения над ними?), вдобавок язык предоставляет (часто критикуемую) возможность перегрузки арифмитических операторов, подталкивая нас к созданию собственного типа данных.

Прежде чем писать код, давайте повторим мат. часть, а именно о представление чисел в типах uint8_t, int8_t и особенностях арифмитических операциях над ними. Итак, сложенение двух uint8_t происходит по модулю 256, то есть 1+2 = 3, но 1 + 255 = 0, для int8_t отрицательные значения можно ввести следущим образом: отрицательные числа соответсвуют тем безнаковым числам из uint8_t которые складываясь по модулю 256 дадут ноль, то есть -1 будем в памяти выглядить как 255 (FF). Границы типа int8_t -128...+127, для отрицательных чисел старший бит всегда равен 1. При умножении двух int8_t получаем результат типа int16_t, частное от деления int16_t на uint8_t будет иметь тип uint8_t. Все эти сведения носят аболютно тривиальный характер, но, они необходимы для дальнейшего понимания статьи.

Итак, перейдём к основной идее: что если мы мысленно возьмем значение типа int8_t и скажем, что теперь это не число единиц, а скажем, число 1/4 (проговорим словами: это число показывает сколько четвертых частей в исходном числе)? После чего инкапсулируем эту перменную в поле класса и перегрузим для него основные арифмитичекие операторы и напишем свой operator string() для правильного вывода таких чисел. Ниже, можно посмотреть, что получается из этой идеи.

Смотреть код
Total votes 6: ↑6 and ↓0+10
Comments26

Случайные блуждания: связь с резистивным расстоянием (часть 3)

Level of difficultyEasy
Reading time11 min
Views801

Вот мы и добрались до написания программ.
В этой статье напишем скрипты для расчётов резистивного расстояния и для моделирования случайных блужданий. В качестве ЯП был выбран Octave (всё-таки математикой занимаемся).

Читать далее
Total votes 2: ↑2 and ↓0+6
Comments0

Расслоение Хопфа и квантовая механика

Level of difficultyMedium
Reading time4 min
Views6.3K

В математике существует очень интересная тема, которая носит название "расслоение Хопфа". В 1931 году Хайнц Хопф опубликовал свою работу об открытой им в топологии конструкции, получившей в истории название "Hopf fibration" - расслоение Хопфа. Суть этой конструкции, была основана на геометрических разработках Уильяма Кингдона Клиффорда.

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

В данной небольшой статье рассмотрены некоторые основные моменты связанные с моим сайтом на котором рассматривается визуализация расслоения Хопфа.

Читать далее
Total votes 22: ↑19 and ↓3+24
Comments6

Метод главных компонент (PCA). Принцип работы и реализация с нуля на Python

Level of difficultyHard
Reading time8 min
Views16K

Метод главных компонент (Principal Component Analysis или же PCA) — алгоритм обучения без учителя, используемый для понижения размерности и выявления наиболее информативных признаков в данных. Его суть заключается в предположении о линейности отношений данных и их проекции на подпространство ортогональных векторов, в которых дисперсия будет максимальной.

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments0

DIY клавиатура из фанеры

Level of difficultyEasy
Reading time8 min
Views15K

Давно хотел клавиатуру под себя, но даже в кастомных механиках мне не хватало кастомности. Смены цвета кнопок или звука переключателей было недостаточно. Поэтому я собрал клавиатуру с нуля.

Читать далее
Total votes 60: ↑59 and ↓1+70
Comments34

Минималистическая модель живой клетки в браузере

Reading time8 min
Views3.6K

Вы когда-нибудь задумывались, как действуют клетки — элементарные единицы живой материи? Я программист, но одновременно увлекаюсь клеточной биологией. Поэтому я решил смоделировать работу простейшей клетки на TypeScript. Вообще, клетки невероятно сложны; по оценкам учёных, человеческая клетка в среднем содержит 100 триллионов атомов. По-прежнему очень мало известно о том, как все эти биомолекулы взаимодействуют в клетке, поэтому в точности смоделировать работу клетки невозможно.

Размышляя на эту тему, я нашёл статью Fundamental behaviors emerge from simulations of a living minimal cell (Фундаментальные виды поведения возникают на основе моделирования простейшей живой клетки). Опираясь на кинетические параметры, авторы статьи создали модель взаимодействия молекул и химических реакций между ними в простейшей известной клетке. Затем эта симуляция запускается, и на её  основе можно наблюдать такие процессы как репликация ДНК, метаболизм и синтез белков.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments8

Baldur и Thor снова в игре: Путь к совершенному ПО

Level of difficultyMedium
Reading time16 min
Views2.1K

При написании высококачественного программного обеспечения не обойтись без этапа формальной верификации. Несмотря на то, что наша жизнь уже была в некоторой степени упрощена, благодаря таким помощникам доказательства как Coq и Isabelle/HOL, обучающим модель предсказывать один шаг доказательства за раз, оптимизация формальной верификации еще не была достигнута. 

Новый метод автоматической генерации доказательств – модель Baldur. Данный метод основывается на использовании больших языковых моделей, возможности восстановления доказательства и исправления благодаря указанию ошибки и добавлению контекста. 

Baldur превосходит все существующие подходы, он может самостоятельно полностью за раз доказывать 47.9% теорем, и даже этот результат – не предел.

В данной статье я познакомлю Вас со всей теоретической и практической подноготной данной модели, этапами реализации и оценки метода, чтобы стать чуточку ближе к созданию идеального ПО!

Приятного прочтения :)

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments0

Multipath TCP в Go

Level of difficultyEasy
Reading time4 min
Views5.4K

По данным mptcp.io на 1 ноября 2023 года в глобальной сети функционируют около 350 тысяч ресурсов с поддержкой Multipath TCP (далее - MPTCP).

И можно еще добавить легко и непринужденно.

Далее под катом
Total votes 11: ↑9 and ↓2+7
Comments13

Режим самоуничтожения: разложение эндоскопической капсулы за счет света

Reading time13 min
Views5.1K


Одним из самых распространенных и эффективных методов диагностики ЖКТ (желудочно-кишечного тракта) является эндоскопия. Пациент приходит на процедуру, ложится на бочок (как правило, но не всегда), а добрый доктор вводит ему в организм через естественные пути эндоскопический зонд. Приятного в этом процессе мало, для пациента так точно. Однако такой метод позволяет выявить те или иные повреждения тканей или проявления заболеваний внутри ЖКТ.

В 1997 году Габи Иддан и Пол Свэйн создали новый вид эндоскопии — капсульную, когда пациент проглатывает «пилюлю» с камерой, делающую несколько десятков тысяч снимков за пару часов работы. Однако процедура внедрения в организм человека чужеродного тела всегда сопряжена с определенными рисками. Одноразовая капсула, выполнив свою работу, естественным образом выводится из организма, но случаются и казусы, когда она решает задержаться в гостях. В таких плачевных ситуациях приходится проводить специальную операцию для ее удаления. Точнее сказать, раньше приходилось, ибо ученые из МТИ (Массачусетский технологический институт, США) разработали новый тип капсул, которые разрушаются, если на них воздействует свет. Какой материал послужил основой нового устройства, как именно активируется режим самоуничтожения и что происходит дальше? Об этом мы узнаем из доклада ученых. Поехали.
Total votes 13: ↑13 and ↓0+13
Comments9

HIPEC. Годы жизни вместо месяцев при злокачественных опухолях брюшной полости

Reading time11 min
Views69K
image

Многие злокачественные опухоли распространяют метастазы на брюшину – тонкую «оболочку», которой покрыты внутренние органы и стенки брюшной полости. Называется это явление (от лат. peritoneum – брюшина) перитонеальный карциноматоз (канцероматоз – не всеми признаваемый, но общепринятый синоним, который мы тоже употребляем). Просовидные (мелкие, как пшено) метастазы рассеяны по всей поверхности брюшины.
Total votes 14: ↑13 and ↓1+19
Comments6

Просто о сложном: что нужно знать о биоинформатике

Reading time9 min
Views52K
Если спросить случайного прохожего, что такое биология, он наверняка ответит что-то вроде «наука о живой природе». Про информатику скажет, что она имеет дело с компьютерами и информацией.  Если мы не побоимся быть навязчивыми и зададим ему третий вопрос – что такое биоинформатика? – тут-то он наверняка и растеряется. Логично: про эту область знаний даже в ЕРАМ знает далеко не каждый – хотя в нашей компании и биоинформатики есть. Давайте разбираться, для чего эта наука нужна человечеству вообще и ЕРАМ в частности: в конце концов, вдруг нас на улице об этом спросят.


Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments11

Это маленькое чудо — алгоритм Кнута-Морриса-Пратта (КМП)

Reading time9 min
Views180K
Алгоритм Кнута-Морриса-Пратта используется для поиска подстроки (образца) в строке. Кажется, что может быть проще: двигаемся по строке и сравниваем последовательно символы с образцом. Не совпало, перемещаем начало сравнения на один шаг и снова сравниваем. И так до тех пор, пока не найдем образец или не достигнем конца строки.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments57

Ученые из МГУ показали: сложные вычисления на персоналке с эффективностью, не уступающей суперкомпьютеру, возможны

Reading time4 min
Views25K
Группа физиков из Научно-исследовательского института ядерной физики МГУ продемонстрировала способ, позволяющий на простом персональном компьютере проводить расчеты сложных уравнений квантовой механики, для которых сегодня используются мощные суперкомпьютеры. При этом расчеты, проделанные на персональном компьютере удалось провести быстрее. Статья «Fast GPU-based calculations in few-body quantum scattering», излагающая принцип и полученные результаты работы, была опубликована авторами в одном из последних номеров весьма авторитетного научного издания Computer Physics Communications.

image
Подробнее
Total votes 39: ↑23 and ↓16+7
Comments101

Information

Rating
Does not participate
Registered
Activity