Pull to refresh
77
0
Send message

Находим случайный seed, решающий задачу с LeetCode

Level of difficultyMedium
Reading time6 min
Views8K

У меня есть хобби — решать задачи LeetCode непредназначенным для этого образом, часто при помощи запутанных однострочников. Такие самостоятельно накладываемые ограничения делают задачки интереснее и заставляют искать нестандартные решения.

Одним из ежедневных челленджей LeetCode была такая задача (я немного упростил её для понятности):

Есть список из $k$ уникальных строк битов, каждая из которых имеет длину $k$. Сгенерировать новую строку длиной $k$, отсутствующую в этом списке.

Например, если у нас есть список "010", "110", "111", то возможным решением будет "001". Задача с LeetCode имеет большой набор тестов — 183 тестовых сценариев с $1≤k≤16$, а точную формулировку задачи можно найти здесь.

Я решил её, подобрав такое случайное порождающее значение (seed), что случайно генерируемые строки битов проходили бы все тестовые сценарии. Вот код решения:

class Solution:
    def findDifferentBinaryString(self, nums: List[str]) -> str:
        random.seed((69299878 + sum(ord(c)*(i*j+111) for (i, n) in enumerate(nums) for (j, c) in enumerate(n))) % 999999999)
        return ''.join(random.choice('01') for _ in nums)

Можете попробовать это решение самостоятельно (оно должно работать, если LeetCode не обновил свой набор тестов. Если это произошло, сообщите мне об этом).

Ниже я расскажу, как это сделал.
Читать дальше →

Возможно, микросервисы вам не нужны

Level of difficultyEasy
Reading time7 min
Views21K

Писать эту статью было весело. Многие наверняка её захейтят, но …

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

Сегодня микросервисы очень популярны. Это прекрасный архитектурный стиль, который помогает масштабировать систему и саму организацию. Их используют многие успешные компании (Netflix, Spotify и прочие). Поэтому вполне нормально, что большинство организаций уже применяют или планируют начать применять этот стиль. Однако не все учитывают сопутствующие затраты.
Читать дальше →

Две акустические системы на 100ГДШ33-16 своими руками

Level of difficultyMedium
Reading time6 min
Views19K

Известную радиолюбительскую максиму «Лучший усилитель — это антенна!» уместно переиначить и для звуковоспроизведения. Выглядеть она будет так: «Лучшие усилители — это акустические системы!». Оговоримся: усилители ламповые, однотактные (Single End — SE). Восхитительные своей изящной лаконичностью и принципиальным отсутствием ряда искажений, но и не блистающие высокой мощностью. Чувствительные же акустические системы (АС) позволяют реализовать здесь каждый драгоценный ватт.

Речь пойдёт о простых самодельных высокочувствительных АС в корпусах из неспециальных материалов широкого применения. Длительная их эксплуатация показала хорошее натуральное звучание и высокий уровень громкости даже с ламповыми усилителями в 1…2 Вт выходной мощности.
Читать дальше →

Альтернативные технологии производства печатных плат

Level of difficultyEasy
Reading time8 min
Views12K
Картинка WangXiNa, Freepik

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

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

В погоне за звуком Билли Гиббонса. Часть 2: JFET творят чудеса

Level of difficultyEasy
Reading time7 min
Views6.4K


Привет, Хабр! Сегодня я соберу ещё одну педаль для электрогитары, претендующую на характер звучания легендарного 100-ваттного стека Marshall Super Lead по прозвищу «Плекси».

Схема эффекта построена на четырёх полевых транзисторах с управляющим p-n переходом. Эти полупроводниковые приборы давно пользуются заслуженной любовью энтузиастов гитарного усиления и аналогового синтеза.
Сегодня мы узнаем, почему

Выживание самых богатых: пузырь ядерных убежищ времён Холодной войны

Level of difficultyEasy
Reading time9 min
Views13K

Угроза ядерного нападения во времена Холодной войны заставила американцев делать потребительский выбор, доведённый до крайней степени: покупай или умри. Сегодня ситуация не сильно изменилась.

Брошюры и полностраничные газетные объявления Лео Хоега распространялись по США осенью 1961 года, разя всех с силой ударной волны ядерного взрыва. «ПРОТИВОРАДИАЦИОННЫЕ УБЕЖИЩА МОГУТ СПАСТИ ЖИЗНИ 70 МИЛЛИОНОВ АМЕРИКАНЦЕВ».

За пару месяцев до этого, 25 июля, президент Джон Ф. Кеннеди ввёл американцев в курс Берлинского кризиса. Он предупредил о возможности ядерных ударов по территории США и впервые указал на важность противорадиационных убежищ (fallout shelter). Но он не донёс в подробностях, каким образом они появятся в стране, поэтому бизнесмены наподобие Хоега сами начали заполнять пробелы.

В рекламе Хоега говорилось: «вывод заключается в том, что убежища необходимы повсюду».

В качестве решения проблемы предлагалось убежище работодателя Хоега, Wonder Building Corporation. Он рекомендовал американцам немедленно купить его для установки в подвале или на заднем дворе: «мистер Хрущёв… может совершить ошибку уже завтра», поэтому не стоит рисковать, пока правительство США предложит налоговые льготы или финансирование программы производства убежищ.

Семейное убежище было мудрым вложением средств. «Страховкой для выживания», как говорил Хоег.
Читать дальше →

Переход с физического сервера на виртуальный

Reading time5 min
Views14K

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

Но есть случаи, когда виртуальный сервер удобнее домашнего. Например, он удобнее для раздачи файлов в интернете и обслуживания личного веб-сайта, а также для мониторинга и тестирования сервисов (программа должна быть постоянно в онлайне). Для создания дополнительной резервной копии файлового архива, которая будет физически удалена от основного домашнего хранилища. Даже ультрадешёвый сервер за 130 рублей в месяц способен одновременно поддерживать несколько процессов.
Читать дальше →

Как я постепенно избавляюсь от контроля Google

Level of difficultyEasy
Reading time9 min
Views63K

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

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

Непроизвольная тирания пользовательских интерфейсов

Level of difficultyEasy
Reading time9 min
Views16K

Посыл этой статьи заключается в том, что одержимость лёгкими, «интуитивными» и, возможно, даже эффективными пользовательскими интерфейсами формирует слой мягкой тирании. Такой слой я бы создал, будучи диктатором, стремящимся усладить общественность в подготовке к лишению её свобод в будущем. Я бы так сильно привязал людей к нелепым ограничениям при использовании разных вещей, что подобное издевательство стало бы нормой.
Читать дальше →

Замки, драконы и сундуки: как возник классический сеттинг игрового фэнтези? Часть 3: от варгеймов к Blackmoor и D&D

Level of difficultyEasy
Reading time10 min
Views7.9K

Итак, к началу 70-х фэнтези в США успели стать массово популярным жанром литературы. Книги в жанре «магия и меч» запоем читали все — от гиков-технарей до хиппи и рок-музыкантов. Каноны фэнтези при этом быстро менялись: типовое героическое фэнтези в духе «Конана» и эпические противостояния добра со злом в стиле Толкиена быстро наскучило и читателям, и писателям — и в тропы жанра стали стремительно вноситься всё новые и новые поправки. Это сделало новый модный жанр не только более интересным для аудитории — но и куда более пригодным для того, чтобы на его основе создавать игры: сначала настольные, а затем и компьютерные.
Читать дальше →

Реверс-инжиниринг прошивки Samsung WB850F

Level of difficultyMedium
Reading time11 min
Views5.7K

Samsung WB850F стала первой камерой, объединившей в себе DRIMeIII SoC и WiFi. В ней, как и в модели EX2F, используется прошивка, в которую инженеры Samsung любезно включили файл partialImage.o.map с полным дампом компоновщика и именами всех символов из ZIP-архива. Этот их «подарок» мы используем для реверс-инжиниринга основной прошивки SoC, чтобы обеспечить прохождение проверки при обнаружении точек доступа WiFi и возможность использовать для загрузки изображений samsung-nx-emailservice.

Эта публикация продолжает тему статьи, посвящённой камерам Samsung с поддержкой WiFi, и является частью серии, освещающей линейку Samsung NX.
Читать дальше →

Простая, недорогая, точная мини-электропечь (для фьюзинга) своими руками

Level of difficultyMedium
Reading time9 min
Views8.9K

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

Усовершенствованный частотомер без микроконтроллера

Level of difficultyMedium
Reading time9 min
Views6.9K


Привет, Хабр! Прибор, который мы сегодня изучим и соберём, снабжён четырёхразрядным цифровым индикатором и предназначен для работы с электрическими сигналами произвольной формы, имеющими частоту от 10 Гц до 10 кГц и амплитуду от 300 мВ до 3 В.

В качестве эталонной частоты он использует 50 герц электросети. Не считая стабилизатора питания, частотомер построен на 14 микросхемах стандартной логики.
Ещё мы познакомимся с разными типами частотомеров.

Делаем кондиционер умным с помощью Elixir и Nerves

Level of difficultyMedium
Reading time7 min
Views6.5K

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

Fujifilm Pivi: принтеры, про которые забыла сама Fujifilm

Level of difficultyEasy
Reading time6 min
Views6.1K

Недавно ко мне в руки попал один малоизвестный и любопытный девайс от Fujifilm, созданный для азиатского рынка. Спойлер: это дичь, и непонятно, для чего оно сделано.
Читать дальше →

В помощь джунам: как легко разместить сайт на VPS

Level of difficultyEasy
Reading time7 min
Views16K


Думаю, ни для кого не секрет, что… Чуть больше года назад именно с этой фразы начиналась наша статья о том, как разместить на виртуальном выделенном сервере свой сайт. Тогда мы на Linux-системе развернули стек LAMP, подняли FTP-сервер и с его помощью скопировали файлы сайта с локального компа на нашу виртуалку. Но всё-таки тема показалась нам недостаточно раскрытой. Как и тогда, данный материал рассчитан на не очень опытных пользователей, на тех, кто ещё только набирается опыта в вёрстке, кто пробует делать свой пет-проект на вебе, кто выполняет тестовое задание в качестве джуна-фронтендера. Речь пойдёт о том, как быстро и безболезненно перенести уже готовый сайт на только что созданный VPS.
Читать дальше →

Загадочное дело о пропавшей точке

Level of difficultyEasy
Reading time6 min
Views19K

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

В то время клиент пользовался в документах шаблонами Microsoft Word с замещающим текстом. Каждый раз, когда сотруднику клиента необходимо было отправить документ по электронной почте или распечатать документ для отправки почтовой службой, он заменял весь замещающий текст документа (имя, фамилия и так далее).

В компании на тот момент было множество шаблонов с устаревшими версиями. В некоторых шаблонах использовались устаревшие условия договоров, в других — старый логотип компании или неправильный шрифт и так далее. Системой стало невозможно управлять, и клиент попросил нас найти решение.
Читать дальше →

Сбросить балласт. Аккуратное отключение лишних фич

Level of difficultyEasy
Reading time7 min
Views8.5K


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

Что тут говорить, если самая простая программа сегодня весит под 100 МБ, как целая операционная система со всем софтом несколько десятилетий назад. Кто-то говорит, что причиной этого является закон Мура и рост производительности процессоров в геометрической прогрессии. В связи с этим даже интересно, каким был бы софт при замедлении CPU в двадцать раз.

Но есть выход из сложившейся ситуации: аккуратное отключение лишних функций в раздувшемся софте.
Читать дальше →

Культурный феномен клипа Bad Apple и мой BAD AON

Level of difficultyEasy
Reading time20 min
Views23K

Уже десять лет на демосцене существует довольно странная, но интересная традиция. Нет, в баню с друзьями ходят без неё, но очень многие делают конверсии популярного видеоклипа Bad Apple на различные маломощные платформы прошлых лет. Как-то: ZX Spectrum, Game Boy, Sega Genesis, БК-0011М, и чем дальше, тем страньше и страньше. Это одновременно и упражнение в реализации цифрового видео в условиях крайне ограниченных ресурсов, и в адаптации контента под возможности максимально хардкорных ретро-платформ.

Сегодня рассмотрим само явление Bad Apple — откуда оно взялось и какое отношение имеет к компьютерам, а также мою новейшую разработку в этой области, демонстрацию BAD AON. В прошлом я уже делал подход к этому снаряду с версией для 8-битной NES, а в этот раз сделал адаптацию для, смею надеяться, одной из наиболее необычных платформ. Разглядеть клип будет трудновато, но если хорошенько прищуриться (я серьёзно), он всё ещё вполне узнаваем.
Читать дальше →

Как сделать виртуальную АТС на базе VPS

Level of difficultyEasy
Reading time6 min
Views15K


Несмотря на популярность мессенджеров и телеконференций, ни один офис ещё не отказался от телефонной связи. Люди такие существа, что иногда предпочитают общаться голосом.

В каждом офисе установлена мини-АТС, которая коммутирует внутренние звонки. Телефоны сотрудников подключаются к коммуникационному шкафу или коробочке с Asterisk (как на КДПВ), а она подключена к телефонной сети общего пользования (PSTN или ТСОП). Таким образом, сотню офисных телефонов можно повесить на один внешний номер. В общем, мини-АТС — совершенно необходимая вещь.

Виртуальная или облачная АТС (hosted PBX) — это услуга для компаний, которая заменяет им обычную офисную АТС. Вместо того, чтобы покупать специализированное телекоммуникационное оборудование или выделять отдельный компьютер с Asterisk, они заказывают услугу на удалённом хостинге. И этот компьютер с Asterisk (IP-АТС) физически размещается у провайдера. Таким образом, виртуализация добралась и до АТС, всё в русле современных тенденций.
Читать дальше →

Information

Rating
Does not participate
Works in
Registered
Activity