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

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

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

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

Экзамен для будущих «русских хакеров» в Московском Политехе

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


Читать дальше →
Всего голосов 38: ↑32 и ↓6+26
Комментарии35

Эй, телевизор, ты что, самый «умный»?

Время на прочтение4 мин
Количество просмотров16K
Про опасности использования «умных» телевизоров слышали, наверное, все. Говорят, что они наблюдают за владельцем и прослушивают его разговоры. Но это не тревожит большинство пользователей, которые продолжают спокойно заполнять формы авторизации прямо на экране TV.

Мы решили проверить, реально ли сделать что-то интересное с умным телевизором, не имея физического доступа к нему (спойлер: реально!), и готовы рассказать об этом на примере разбора задания с NeoQUEST!
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии31

Ооочень длинное целое

Время на прочтение4 мин
Количество просмотров4.3K
Накатал небольшую библиотечку для арифметических операций над натуральными числами любой длины. Поскольку писалось на Visual Basic for Applications (VBA), встроенном в Excel, переопределить операции + — * / не получилось, и все решается через вызов функций с 2-мя аргументами вида

Function LongADD(s1 As String, s2 As String) As String

Зато можно вызывать функции (или их комбинации) прямо из ячеек экселовского листа – все наглядно и понятно. И да, натуральные числа передаются как строки. Максимальная длина строки в VBA равна примерно 231 = 2 147 483 648 (посчитано моей функцией LongPower(«2», 31)), так что на поиграться с разными штуками хватит вполне.

Для примера – умножение двух простых чисел из эпохальной статьи Ривеста, Шамира и Алдемана, откуда пошла вся современная криптография (в коде это константы RSA1, RSA2)



Под катом – код на VBA, его можно просто вставить в модуль Excel-овского файла с поддержкой макросов (типа *.xlsm).

P.S. не пробуйте использовать код для всяких конкурсов по разложению на простые множители. Он хоть и понимает числа с двумя миллиардами значащих цифр, но безумно медленный для таких задач.
P.P.S. если все же что-то получится, 10% выигрыша – мне
P.P.P.S. нет, лучше 15%

Читать дальше →
Всего голосов 26: ↑8 и ↓18-10
Комментарии6

Про хаскелль для самых маленьких на примере задачи с codefights

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

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

Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии35

Истории

Duplo Railroad Tycoon: Синтез железнодорожной сети с максимальным покрытием

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

Детям Дед Мороз принес железную дорогу Duplo. Сегменты рельс очень легко соединяются между собой, и можно построить какой-нибудь небольшой, скорее всего просто замкнутый путь, поставить станцию и смотреть, как паровозик бегает по кругу. Иногда он останавливается и детёнок должен паровоз «заправить» из колонки, после чего паровоз снова поедет.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии30

Рисуем коммитами на Гитхабе

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

[Пятничное]


Всегда хотел сделать свой график активности пользовательского профиля на Гитхабе. Например, выкладывать коммиты каждый день так, чтобы через год этот график превратился в какую-нибудь картинку, пусть и с ограничением по размерам в 52×7 квадратиков-пикселей (52 недели в году × 7 дней в неделе).


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


График коммитов на Гитхабе в виде картинки

Как нарисовать свою картинку коммитами на GitHub
Всего голосов 91: ↑83 и ↓8+75
Комментарии36

Создаём честный Форекс

Время на прочтение17 мин
Количество просмотров16K
У современного человека слово «форекс» непременно ассоциируется с нелестными эпитетами, самый безобидный из которых — «казино». По смыслу именно «казино» лучше всего отражает суть предмета: игроки форекс делают ставки на рост или падение котировок финансовых инструментов, отдавая часть своих денег в виде комиссии за операции. Остальные негативные сравнения по большей части вызваны некомпетентностью и жадностью участников этого сегмента индустрии развлечений, которые становятся жертвами многочисленных паразитирующих на нём дельцов.

Тем не менее, есть одно фундаментальное свойство розничного форекса — конфликт интересов игрока и брокера (который, кстати, достаточно редко проявляется в реальной жизни). Даже если вы найдете так называемого «честного» брокера форекс, выводящего сделки на рынок, то ситуация будет еще хуже: он просто скормит вас более крупному игроку, добавив накладных расходов на операции и увеличив риски.



Эта статья расскажет о способе устранить конфликт интересов в любой отдельно взятой форекс-компании. На первый взгляд этот способ выглядит еще более порочно, чем самый кухонный форекс, но по факту это реальная возможность решить проблему в принципе и дать игроку шанс выиграть честно.
Читать дальше →
Всего голосов 32: ↑20 и ↓12+8
Комментарии41

Расширение API от Vk для стикеров на Elixir

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

image


Введение


Во Вк есть наборы стикеров, некоторые из которых даже бесплатные. Но во Вк нет ни какого публичного API для использования данного функционала на сторонних сайтах. Задачка состоит в том, чтобы используя функциональный язык Elixir написать расширение над местом хранения стикеров во Вк в виде API.


По моему мнению имена методов, и параметры, которые они принимали были бы следующими. Общим пространством имён для коллекции API методов для работы со стикерами было бы ключевое слово stickers, а сами методы возможно выглядели бы так:


stickers.get — со следующими параметрами: pack_ids, pack_id, fields;
stickers.getById — со следующими параметрами: sticker_ids, sticker_id, fields.


Так как нет возможности создавать или редактировать стикеры, которые есть во Вк, данное API будет иметь только read-only методы. Честно, сложно угадывать, и не хочется подражать разработчикам социальной сети, по этому ограничусь только придумыванием имён методов. И не буду реализовывать API в стиле Вк, хоть это бы и добавило общей идентичности расширению.


Вот такие методы буду реализовывать для работы со стикерами:


Методы для наборов:


GET /packs
GET /packs/{id}
GET /packs/{id}/stickers

Методы для стикеров:


GET /stickers
GET /stickers/{id}
GET /stickers/{id}/pack
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии21

Информационные технологии в новогоднем мюзикле «Чародеи»

Время на прочтение5 мин
Количество просмотров26K
Одним из символов Нового Года для меня всегда был (и до сих пор остаётся) прекрасный мюзикл «Чародеи». И дело не только в хороших песнях, отличном актёрском составе или атмосфере сказки. Фильм «Чародеи» — это ещё один взгляд на любимый многими мир книги «Понедельник начинается в субботу» братьев Стругацких. Авторами сценария фильма тоже были они (хотя многое в нём пришлось переделать вопреки их оригинальной идее).

«Что все эти размышления делают на Хабре?» — спросите вы. Ну, во-первых, на дворе Новый Год, а во-вторых, «Понедельник начинается в субботу» — это книга для программистов («Сказка для научных сотрудников младшего возраста») и о программистах (профессия главного героя книги). Уже на первой странице книги мы видим, например,

Пример хед-хантинга ценного специалиста в безденежный, но интересный проект
«А где вы работаете?» Я ответил. «Колоссально! – воскликнул горбоносый. – Программист! Нам нужен именно программист. Слушайте, бросайте ваш институт и пошли к нам!»… «Интереснее, чем у нас, вам нигде не будет». – «Почему вы так думаете?» – «Уверен».

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



А теперь я хочу рассказать об одном вопросе, связанном с информационными технологиями в данном фильме, который интересовал меня уже много лет и для решения которого я даже писал письмо Борису Стругацкому, когда он был ещё жив (хотя и не получил ответа). При каждом из многочисленных просмотров фильма „Чародеи“ меня удивлял в нём один эпизод (осторожно, под катом будут спойлеры!).
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии61

Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 2

Время на прочтение8 мин
Количество просмотров12K
Мы продолжаем рассказывать о курсе «How to Win Coding Competitions: Secrets of Champions», который Университет ИТМО запустил на платформе edX в этом году (первую часть материала читайте здесь).

Во второй части нашей беседы с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, призером Google Code Jam for Women, речь пойдет о том, важен ли победителям олимпиад правильный настрой, как развить навык поиска креативных решений и кому будет полезен курс от чемпионов Университета ИТМО.

Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии6

Об одной комбинаторной задаче

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

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


Итак, начну издалека. Я изучал стационарные локализованные структуры в одномерном уравнении Гросса-Питаевского, [пример работы]. Такие структуры, при некоторых достаточных условиях на параметры задачи, можно кодировать бесконечными в обе стороны символическими последовательностями, которые мы называем кодами. То есть, непрерывные решения дифференциального уравнения классифицируются дискретными кодами. Алфавит кодировки, как правило, конечен и состоит из некоторого нечетного числа символов, например из N=2L+1 символов, где L – натуральное число. В алфавите есть нулевой символ , а все остальные символы делятся на пары, связанные некоторой симметрией. Для простоты мы будем обозначать алфавит кодировки A=\{i\}_{i=-L}^L, где символы i и -i симметричны друг другу. Число N мы будем называть мощностью алфавита A.

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии7

Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 1

Время на прочтение8 мин
Количество просмотров21K
В этом материале мы расскажем о новом курсе, который был запущен Университетом ИТМО на платформе edX в этом году. Под катом – рассказ о проекте «How to Win Coding Competitions: Secrets of Champions» и большое интервью с авторами и инструкторами курса, в котором они рассуждают о том, что должен знать и уметь будущий победитель, и делятся своим опытом и воспоминаниями от участия в олимпиадах по программированию.

Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии12

Преобразование формы представления данных при помощи Excel+PowerQuery

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

В нашем менеджерском труде есть много хорошего и не очень. Но ничто не портит нам жизнь так, как многочисленные эксельки, в которых постоянно нужно что-то ВПР-ить, СУММ-ировать, СУММПРОИЗВ-одить и заниматься прочими рутинными операциями, отнимающими кучу времени и сил. Есть инструмент, позволяющий если не убрать, то минимизировать рутину везде, где есть паттерны данных. Итак, вашему вниманию предлагается чуть более глубокое погружение в принципы работы PowerQuery.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии1

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

Занимательные задачки и отрывок из книги «Карьера программиста»

Время на прочтение16 мин
Количество просмотров17K
image Привет, Хаброжители! Ранее мы уже анонсировали книгу «Карьера программиста. 6-е издание" Гейлы Лакман Макдауэллы в этом посте. Теперь мы получили электронные права на эту книгу, а значит можем поделиться главой «Java» и предложить решить задачки:

1. Разработайте алгоритм для поиска наименьших К чисел в массиве.
2. Напишите функцию суммирования двух чисел без использования "+" или любых других арифметических операторов.
3. Для двух квадратов на плоскости найдите линию, которая делит эти два квадрата пополам. Предполагается, что верхняя и нижняя стороны квадрата проходят параллельно оси x.

Тем, кто предложит аргументированные решения — мы, с удовольствием, отправим электронную книгу в качестве подарка.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии42

Гигантская компонента: крючки для рыбалки, скопления галактик, молекулярная биотехнология, наноматериалы

Время на прочтение8 мин
Количество просмотров12K
Занимаясь переводами Кнута, я наткнулся на упоминание очень интересного свойства нашей вселенной. Рождение гигантской компоненты. Каждый встречался с этим феноменом. Я, например, помню коробочки с рыболовными крючками. Когда крючков было 5-15 все нормально, но есть определенная критическая масса, после которой получался единый комок. Интуитивно я чувствую, что это очень важный феномен, который проявляется во многих дисциплинах — от теории информации, до молекулярной химии и биотехнологии. Предлагаю вашему вниманию перевод легкой и наглядной статьи на эту тему. Слово Brian Hayes.

image


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

На днях я сделал открытие: если вы захватите одну из выброшенных скоб и поднимите ее, целый клубок спутанного искореженного металла поднимется вслед за ней, оставляя лишь пару скоб на дне чаши. Когда я заметил это, я сначала подумал «Хм, это забавно». Потом «О, конечно: Erdős-Rényi». А третей мыслью… ну я все еще работаю над ней, а еще над четвертой, пятой и шестой.
Всего голосов 32: ↑27 и ↓5+22
Комментарии11

Превозмогая трудности: Gravity Defied на sed

Время на прочтение5 мин
Количество просмотров9.1K
image Итак, эта статья посвящается тем, кто любит решать нестандартные задачи на не предназначенных для этого инструментах. Здесь я опишу основные проблемы, с которыми столкнулся во время создания аналога игры Gravity defied с использованием потокового текстового редактора (sed).

Далее предполагается, что читатель хотя бы немного знаком с синтаксисом sed'ом и и написанием скриптов под bash.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии8

Объясняем бабушке, как написать свой язык программирования

Время на прочтение4 мин
Количество просмотров31K
Это игровая площадка, где я попытаюсь объяснить, как создать малюсенький язык программирования (Mu). Можно посмотреть вживую на открытые исходники здесь или скачать тут. Туториал можете прочитать прямо сейчас.

image

Пишем свой язык программирования (на Swift)


Для того, чтобы написать свой язык программирования, необязательно иметь степень в Computer Science, достаточно понимать 3 базовых шага.

Язык: Mu(μ)


Mu — это минимальный язык, который содержит постфиксный оператор, бинарную операцию и «одноциферные» числа.

Пример: (s 2 4) or (s (s 4 5) 4) or (s (s 4 5) (s 3 2))…
Всего голосов 35: ↑24 и ↓11+13
Комментарии13

«Пятничный формат»: Что случится, когда закон Мура перестанет действовать

Время на прочтение5 мин
Количество просмотров13K
Сегодня законом Мура называется почти любая экспоненциальная или другая закономерность. Что же на самом деле говорил Гордон Мур? В своей статье 1965 (пункт «Costs and Curves») он говорит об удвоении компонентов на интегральной микросхеме каждый год при минимально возможной выгодной цене. Позднее, в статье 1975 года он вводит другой временной показатель — 2 года.

Цифру 18 месяцев и само высказывание об увеличении мощности процессоров, наряду с увеличением их количества и тактовой частоты, сам Мур в одном из интервью приписывает Дейву Хаусу (Dave House), сотруднику Intel. Однако в некоторых источниках, например, тут, именно это и понимают под законом Мура. Даже на сайте Intel закон формулируется именно так.

Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии31

Порождение и выбор моделей машинного обучения. Лекция в Яндексе

Время на прочтение11 мин
Количество просмотров22K
Применение машинного обучения может включать работу с данными, тонкую настройку уже обученного алгоритма и т. д. Но масштабная математическая подготовка нужна и на более раннем этапе: когда вы только выбираете модель для дальнейшего использования. Можно выбирать «вручную», применяя разные модели, а можно и этот процесс попробовать автоматизировать.


Под катом — лекция ведущего научного сотрудника РАН, доктора наук и главного редактора журнала «Машинное обучение и анализ данных» Вадима Стрижова, а также большинство слайдов.

Всего голосов 50: ↑49 и ↓1+48
Комментарии1

Задача коммивояжера методом Литтла на C++

Время на прочтение8 мин
Количество просмотров29K
Обучаясь в университете, каждому приходилось делать разного рода задачи. Вот, наступает конец полугодия, сессия на носу, начало выдачи курсовых заданий и мне посчастливилось стать тем, кто должен реализовать метод Литтла для задачи коммивояжера. Итак начнем.

Кто такой коммивояжер? Коммивояжер — это разъездной торговый агент какой-либо фирмы, предлагающий покупателям товары по образцам и каталогам. Его задача объездить все пункты назначения, не побывав ни в одном дважды и вернуться в точку старта.

image

Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии6