Как стать автором
Обновить
55.76

Занимательные задачки

Разминаем мозги

Сначала показывать
Порог рейтинга
Уровень сложности

Когда SQL решает, и задачки для прокачки

Время на прочтение4 мин
Количество просмотров27K

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

Естественный путь профессионального становления, это когда ты сначала являешься кандидатом, и только проходишь интервью, ну или пытаешься, а потом, еще и проводишь интервью для других соискателей.

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

Читать далее
Всего голосов 8: ↑2 и ↓6-4
Комментарии15

Где больше вирусов: в интернете или на ободке унитаза?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.7K

Неразрешенная загадка человечества. Вопрос, ответа на который не знает искусственный интеллект и гугл. Ему посвящали жизнь древние мыслители, ломали голову Евклид и Аристотель.

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

Читать далее
Всего голосов 17: ↑14 и ↓3+11
Комментарии1

Критерий Келли

Время на прочтение9 мин
Количество просмотров12K

От умного риска до победы близко. Кто не рискует, тот не пьет шампанского. Без риска и жизнь пресна.

Эти и многие другие пословицы и поговорки про риск, знакомые нам с раннего детства, закрепляются на подсознательном уровне и, как правило, создают положительный образ риска. Однако на практике риск приносит далеко не только выигрыши. Например, портфель инвестора, который слишком часто рискует и вкладывает весь свой капитал сразу, в краткосрочной перспективе может взлететь до небес, но в долгосрочной непременно приведет к огромным финансовым потерям. Но можно ли каким‑нибудь образом найти золотую середину? Безусловно, и в этом нам поможет критерий Келли.

Читать далее
Всего голосов 41: ↑39 и ↓2+37
Комментарии11

Игра «Жизнь» в одном твите

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.3K

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

В одно прекрасное воскресенье, потягивая пиво и размышляя о жизни, я вдруг подумал: а можно ли вместить JavaScript-реализацию игры «Жизнь» в один твит? И не смог устоять перед желанием попробовать свои силы. 

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии11

Истории

Алгоритм быстрого поиска при помощи хэширования

Время на прочтение5 мин
Количество просмотров3K

В этой статье я хочу представить мой алгоритм оптимизации суммирования ряда чисел в массиве (на примере контейнера map). 

Итак, дано задание

Есть некая электронная книга, которую одновременно читает неограниченное количество читателей. Нужно сделать так, чтобы любой читатель в любой момент мог проверить, сколько еще читателей читают ту же страницу, что и он. Предложена наивное решение хранить в map<int,int> в качестве ключа номера страниц, в качестве значения- количество прочитавших их пользователей. Конечно, при таком подходе программа медленно работает с большими тестами потому, что количество итераций по контейнеру map равняется числу прочитанных пользователем страниц. То есть, если пользователь прочел 1000 страниц из 1000 возможных, то в цикле нужно будет сделать 1000 итераций, и это сильно замедляет программу.  

Чтобы уменьшить время работы программы, нужно упростить алгоритм подсчета пользователей. В этом алгоритме я отдельно считаю, сколько пользователей прочли столько же полных сотен страниц, как и искомый читатель, и затем уже постранично суммирую всех, кто прочел столько же страниц из той сотни, на которой сейчас находится читатель. Такой алгоритм позволяет вместо 999 итераций (если пользователь читает 999-ю страницу) сделать всего 108 (9 итераций сотням и 99 по единичным страницам). 

 Это вкратце, теперь перейдем к подробному описанию и для начала приведу код.

больше информации
Всего голосов 3: ↑0 и ↓3-3
Комментарии12

До последнего байта: минимальный вариант Hello World для .NET

Время на прочтение13 мин
Количество просмотров20K

Вот вам тупой вопрос, который вы сами, наверное, никогда себе не задавали. Каково минимальное количество байт, которые необходимо сохранить в исполняемом .NET-файле, чтобы CLR напечатала "Hello, World!" в консоли стандартного вывода?

Читать далее
Всего голосов 99: ↑98 и ↓1+97
Комментарии73

Квантомания и криптография))

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров1.7K

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

Возможно, всё не так страшно, но бережёного бог бережёт, поэтому чем раньше начнут внедряться постквантовые системы, тем вероятнее шанс избежать неприятных последствий этого технологического рывка. Сегодня существует несколько подходов к реализации такой защиты. Хотя, пожалуй, самый реалистичный в ближайшем будущем подход будет основываться на криптографии на основе хэшей. Примером такой системы является схема с открытым ключом в виде хэш-дерева Меркла, разработанная ещё в 1979 году и основанная на идеях Лэмпорта и Диффи.

Квантуем, сегодня мы с тобой квантуем!!!
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

W-функция Ламберта, ее приближения, и как она помогает строить доверительные интервалы

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров3.4K

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

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии4

Крестики-нолики для питонистов: сначала пишем, потом играем

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров16K

Всем привет! Меня зовут Кирилл Быков, и я — наставник на курсе «Python-разработчик» в Яндекс.Практикуме. Тема передачи знаний меня интересовала всегда, ещё со школьных олимпиад, продолжилась в вузе и не оставила на позиции лида. Теперь мой прямой интерес — сделать всех разработчиков в команде, от сеньоров до джунов, максимально эффективными.

Сегодня, юный падаван, на примере простой игры «крестики-нолики» мы разберём, как создают подобные приложения, продумывают для них требования и создают игровую логику. Мы не будем устанавливать много требований, в идеале поведение нашего кода должно соответствовать правилам игры на 100%. Если я вдруг где-то с этим не справился, прошу в комменты. Цель — сделать вас более уверенными при кодировании в парадигме ООП.

Открывайте любимую IDE и пробуйте шаги, которые прошёл я, не стесняясь шагать в сторону, если любопытно или хочется что-то изменить или улучшить.

Напишу и поиграю
Всего голосов 5: ↑5 и ↓0+5
Комментарии8

Собеседования по алгоритмам: максимальная конкатенация

Уровень сложностиСредний
Время на прочтение1 мин
Количество просмотров7.3K

Чему равно самое большое число, которое можно составить из этих пяти карточек? И как написать программу, которая быстро найдёт ответ, получив на вход сто таких карточек?

Читать далее
Всего голосов 14: ↑11 и ↓3+8
Комментарии139

Решаем криптографическую задачу: Trifid cipher

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2K

В этой статье продолжим тему решения криптографических задач с ресурса MysteryTwister. И сегодня на очереди любопытный шифр, далёким предком которого является квадрат Полибия. Мы познакомимся с трёхраздельным шифром Феликса Деластеля. Что интересно информации об этом энтузиасте  криптографии очень мало в английском и французском сегментах сети (Деластель — француз), а в русскоязычном о нём почти нет совсем, хотя наверняка человеком он был очень неординарным. Почему я так решил? Да потому, что Феликс Деластель по роду профессиональной деятельности не имел к криптографии совершенно никакого отношения, поскольку всю жизнь проработал в порту Сен-Мало и криптографией занимался факультативно. Тогда как ранее и позже криптография была уделом учёных, профессиональных военных и дипломатов. Биографических данных о нём очень мало, но одно известно точно: на рубеже XIX и XX веков Деластель написал книгу "Traite Elementaire de Cryptographie" (Базовый трактат по криптографии), в которой он описывал системы шифрования, которые создал.

Порешаем?
Всего голосов 7: ↑7 и ↓0+7
Комментарии19

Задача про красные и синие точки

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров13K

Привет, Хабр!

Недавно друзья задали мне задачу из дискретной математики, которой я хочу с вами поделиться.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии48

Технические лайфхаки для конкурсов

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.4K

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

Узнать лайфхаки
Всего голосов 5: ↑4 и ↓1+3
Комментарии3

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

JavaScript Live-Coding: Мастерство решения типовых задач на собеседованиях

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров54K

Искусство live-coding в JavaScript становится все более важным для успешной карьеры веб-разработчика. Если ты стремишься преуспеть на собеседованиях и проявить свои навыки в реальном времени, то эта статья для тебя. Я предлагаю тебе углубиться в мир типовых задач на собеседованиях в разделе live-coding, где ты сможешь проявить свои знания JavaScript. В этой статье мы рассмотрим популярные задачи, подходы к их решению и дадим полезные советы, которые помогут тебе справиться с этим вызовом. Давай начнем погружение в мир JavaScript и подготовимся к успешным собеседованиям!

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии4

Валим всё в одну кучу, как алгебраисты

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4.9K

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

Что получится, если сложить все-все-все числа друг с другом?
Чему равен факториал отрицательного числа?

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

Читать далее
Всего голосов 21: ↑20 и ↓1+19
Комментарии7

Есть там молот, есть там серп…

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.5K

Вообще‑то я не особый любитель игр. Но прочитал тут на любимом хабре про Кужлёвку и захотелось в это дело поиграть. Не буду утомлять описанием игры, скажу только что игра на мой взгляд исключительно достойная, хотя и не без серьёзных (опять‑таки на мой дилетантский взгляд) недостатков. Перехожу к делу. Первый (и пока единственный) затык у меня случился в эпизоде, где Михалычу нужно собрать Серп и Молот из плиток типа пятнашек. Помучившись с этим часа полтора, я понял, что не смогу этого сделать даже за миллион. Хотя может конечно я просто тупой как пробка. Но на берегу спасённый мной мечехвост ждёт сигаретку! Не могу же я бросить древнее живое существо одно, да без курева!

Так что пойдём добывать сигареты !
Всего голосов 22: ↑17 и ↓5+12
Комментарии17

Клеточные автоматы. Игра «Жизнь». Часть 1

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.7K

В этой статье мы поговорим о 'Жизни' - игре без участия человека, которую можно описать и провести с помощью карандаша и клетчатого листа бумаги. Всё начинается с нескольких простых правил, но куда это приведёт? Ответ поразит вас!

Не пугайтесь, всё довольно просто: даже ребенок может разобраться. Но несмотря на простоту, 'Жизнь' таит в себе уйму интересных вопросов и задач.

В статье мы покажем, как создать красивую симуляцию 'Жизни' на Python. Приготовьтесь к интересному исследованию!

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии11

Книга «Рекурсивная книга о рекурсии»

Время на прочтение10 мин
Количество просмотров7.2K
imageПривет, Хаброжители!

Книга «Рекурсивная книга о рекурсии» содержит примеры кода на языке Python и JavaScript, которые иллюстрируют основы рекурсии и проясняют фундаментальные принципы всех рекурсивных алгоритмов. Из книги вы узнаете о том, когда стоит использовать рекурсивные функции (и, главное, когда этого не нужно делать), как реализовывать классические рекурсивные алгоритмы, часто обсуждаемые на собеседованиях, а также о том, как рекурсивные методы помогают решать задачи, связанные с обходом дерева, комбинаторикой и другими сложными темами.

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

Единственным минимальным условием для изучения книги является наличие базового опыта программирования на языке Python или JavaScript, на которых написан код в листингах. Код в книге сведен к самой сути: если вы умеете вызывать и создавать функции, а также различать глобальные и локальные переменные — вы знаете достаточно, чтобы разобраться в этих примерах.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии4

Вентиляция в жилых многоквартирных домах

Время на прочтение10 мин
Количество просмотров33K

Блеск и нищета  современных высотных жилых зданий

Жизнь в современном мегаполисе подчиняется не только объективным факторам, но и в значительной степени субъективным веяньям моды.

К веяньям моды относится и строительство высотных жилых зданий.

В высотках многие технические вопросы обеспечения инженерной инфраструктурой на столько обостряются, что становятся реальной технической проблемой.

К одной из таких проблем в высотном жилье относится и система вентиляции.

К высотным зданиям относятся здания выше 16 этажей ( высота 50м).

В чём главное отличие высотных жилых зданий?

С точки зрения вентиляции высотные здания отличаются увеличенной ветровой нагрузкой, какой не испытывают привычны со времён СССР типовые застройки равновысотными домами 9 и 12 этажей.

Тут важна не только абсолютная высота здания, но и его равная высота с окружающими домами.

Проблема высотных зданий возникали и в типовых 16-этажных башнях, когда они стояли  в окружении низкой 5-9 этажной застройки (см.рис.1). В этом случае возвышение на 7 этаже выше уровня общего рельефа делало верхние этажи сильно продуваемыми ветрами.

Читать далее
Всего голосов 45: ↑44 и ↓1+43
Комментарии176

Решаем криптографическую задачу: Из России с любовью

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.4K

Ранее в блоге FirstVDS уже была статья с разбором решения криптографической задачи с MysteryTwister. В этом топике разберём задачу с довольно многозначительным названием «Из России с любовью» ("From Russia with Love"). Автор задачи Sansibar.

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

Перейдём к задаче
Всего голосов 12: ↑11 и ↓1+10
Комментарии4
Изменить настройки темы

Вклад авторов