Занимательные задачки
Разминаем мозги
Эй, телевизор, ты что, самый «умный»?
Мы решили проверить, реально ли сделать что-то интересное с умным телевизором, не имея физического доступа к нему (спойлер: реально!), и готовы рассказать об этом на примере разбора задания с NeoQUEST!
Ооочень длинное целое
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%
Про хаскелль для самых маленьких на примере задачи с codefights
Если вы интересуетесь функциональным программированием или даже пытаетесь его потихоньку освоить то вам, наверняка, не раз приходилось слышать, что главным отличием от привычного вам императивного подхода является тот факт, что программы строятся от общего к частностям, а не наоборот. Т.е. сначала вы определяетесь с тем, что вы хотите получить, а потом уже — как этого достичь. Такая простая, казалось бы, мысль обычно не дает мозгу покоя и вызывает множественные фрустрации в попытках написать что-нибудь полезное. Если эта история про вас, или вам просто интересно немного научится хаскеллю и ФП продолжайте чтение и я покажу вам как все просто. Статья в стиле «некогда объяснять, пиши».
Истории
Duplo Railroad Tycoon: Синтез железнодорожной сети с максимальным покрытием
Детям Дед Мороз принес железную дорогу Duplo. Сегменты рельс очень легко соединяются между собой, и можно построить какой-нибудь небольшой, скорее всего просто замкнутый путь, поставить станцию и смотреть, как паровозик бегает по кругу. Иногда он останавливается и детёнок должен паровоз «заправить» из колонки, после чего паровоз снова поедет.
Рисуем коммитами на Гитхабе
[Пятничное]
Всегда хотел сделать свой график активности пользовательского профиля на Гитхабе. Например, выкладывать коммиты каждый день так, чтобы через год этот график превратился в какую-нибудь картинку, пусть и с ограничением по размерам в 52×7 квадратиков-пикселей (52 недели в году × 7 дней в неделе).
Проблема была в том, что даже при полной автоматизации процесса всё равно ждать целый год. А тут я почитал документацию Гитхаба и понял, что задача решается проще и более того — за один раз. А значит, надо делать не откладывая. Обычно названия проектам придумывать сложно, но тут оно пришло само. Кай рисовал льдинками, а Герда рисует коммитами!
Создаём честный Форекс
Тем не менее, есть одно фундаментальное свойство розничного форекса — конфликт интересов игрока и брокера (который, кстати, достаточно редко проявляется в реальной жизни). Даже если вы найдете так называемого «честного» брокера форекс, выводящего сделки на рынок, то ситуация будет еще хуже: он просто скормит вас более крупному игроку, добавив накладных расходов на операции и увеличив риски.
Эта статья расскажет о способе устранить конфликт интересов в любой отдельно взятой форекс-компании. На первый взгляд этот способ выглядит еще более порочно, чем самый кухонный форекс, но по факту это реальная возможность решить проблему в принципе и дать игроку шанс выиграть честно.
Расширение API от Vk для стикеров на Elixir
Введение
Во Вк есть наборы стикеров, некоторые из которых даже бесплатные. Но во Вк нет ни какого публичного 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
Информационные технологии в новогоднем мюзикле «Чародеи»
«Что все эти размышления делают на Хабре?» — спросите вы. Ну, во-первых, на дворе Новый Год, а во-вторых, «Понедельник начинается в субботу» — это книга для программистов («Сказка для научных сотрудников младшего возраста») и о программистах (профессия главного героя книги). Уже на первой странице книги мы видим, например,
Фильм тоже показывает нам волшебство как результат сложной и наукоёмкой деятельности простых, в общем-то, людей. Никаких тут тебе „ты был рождён в семье волшебников и унаследовал дар...“ и прочих философских камней и корня мандрагоры. Лаборатория Абсолютных Неожиданностей в фильме выглядит как классический вычислительный центр любого НИИ тех лет:
А теперь я хочу рассказать об одном вопросе, связанном с информационными технологиями в данном фильме, который интересовал меня уже много лет и для решения которого я даже писал письмо Борису Стругацкому, когда он был ещё жив (хотя и не получил ответа). При каждом из многочисленных просмотров фильма „Чародеи“ меня удивлял в нём один эпизод (осторожно, под катом будут спойлеры!).
Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 2
Во второй части нашей беседы с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, призером Google Code Jam for Women, речь пойдет о том, важен ли победителям олимпиад правильный настрой, как развить навык поиска креативных решений и кому будет полезен курс от чемпионов Университета ИТМО.
Об одной комбинаторной задаче
В процессе научной работы у меня накопилось несколько интересных результатов, которые, с моей точки зрения, слабоваты для публикации в научном издании, однако сами по себе представляют интерес, например в области спортивного программирования. Один из таких результатов, который я сформулирую ниже, в некоторой вариации может быть предложен соискателю на собеседовании в крупную IT-компанию.
Итак, начну издалека. Я изучал стационарные локализованные структуры в одномерном уравнении Гросса-Питаевского, [пример работы]. Такие структуры, при некоторых достаточных условиях на параметры задачи, можно кодировать бесконечными в обе стороны символическими последовательностями, которые мы называем кодами. То есть, непрерывные решения дифференциального уравнения классифицируются дискретными кодами. Алфавит кодировки, как правило, конечен и состоит из некоторого нечетного числа символов, например из символов, где – натуральное число. В алфавите есть нулевой символ , а все остальные символы делятся на пары, связанные некоторой симметрией. Для простоты мы будем обозначать алфавит кодировки , где символы и симметричны друг другу. Число мы будем называть мощностью алфавита .
Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 1
Преобразование формы представления данных при помощи Excel+PowerQuery
В нашем менеджерском труде есть много хорошего и не очень. Но ничто не портит нам жизнь так, как многочисленные эксельки, в которых постоянно нужно что-то ВПР-ить, СУММ-ировать, СУММПРОИЗВ-одить и заниматься прочими рутинными операциями, отнимающими кучу времени и сил. Есть инструмент, позволяющий если не убрать, то минимизировать рутину везде, где есть паттерны данных. Итак, вашему вниманию предлагается чуть более глубокое погружение в принципы работы PowerQuery.
Ближайшие события
Занимательные задачки и отрывок из книги «Карьера программиста»
1. Разработайте алгоритм для поиска наименьших К чисел в массиве.
2. Напишите функцию суммирования двух чисел без использования "+" или любых других арифметических операторов.
3. Для двух квадратов на плоскости найдите линию, которая делит эти два квадрата пополам. Предполагается, что верхняя и нижняя стороны квадрата проходят параллельно оси x.
Тем, кто предложит аргументированные решения — мы, с удовольствием, отправим электронную книгу в качестве подарка.
Гигантская компонента: крючки для рыбалки, скопления галактик, молекулярная биотехнология, наноматериалы
Ненужным продуктом моего проекта, сканирующего документы, является куча извлеченных скоб.
На днях я сделал открытие: если вы захватите одну из выброшенных скоб и поднимите ее, целый клубок спутанного искореженного металла поднимется вслед за ней, оставляя лишь пару скоб на дне чаши. Когда я заметил это, я сначала подумал «Хм, это забавно». Потом «О, конечно: Erdős-Rényi». А третей мыслью… ну я все еще работаю над ней, а еще над четвертой, пятой и шестой.
Превозмогая трудности: Gravity Defied на sed
Далее предполагается, что читатель хотя бы немного знаком с синтаксисом sed'ом и и написанием скриптов под bash.
Объясняем бабушке, как написать свой язык программирования
Пишем свой язык программирования (на Swift)
Для того, чтобы написать свой язык программирования, необязательно иметь степень в Computer Science, достаточно понимать 3 базовых шага.
Язык: Mu(μ)
Mu — это минимальный язык, который содержит постфиксный оператор, бинарную операцию и «одноциферные» числа.
Пример: (s 2 4) or (s (s 4 5) 4) or (s (s 4 5) (s 3 2))…
«Пятничный формат»: Что случится, когда закон Мура перестанет действовать
Цифру 18 месяцев и само высказывание об увеличении мощности процессоров, наряду с увеличением их количества и тактовой частоты, сам Мур в одном из интервью приписывает Дейву Хаусу (Dave House), сотруднику Intel. Однако в некоторых источниках, например, тут, именно это и понимают под законом Мура. Даже на сайте Intel закон формулируется именно так.
Порождение и выбор моделей машинного обучения. Лекция в Яндексе
Под катом — лекция ведущего научного сотрудника РАН, доктора наук и главного редактора журнала «Машинное обучение и анализ данных» Вадима Стрижова, а также большинство слайдов.
Задача коммивояжера методом Литтла на C++
Кто такой коммивояжер? Коммивояжер — это разъездной торговый агент какой-либо фирмы, предлагающий покупателям товары по образцам и каталогам. Его задача объездить все пункты назначения, не побывав ни в одном дважды и вернуться в точку старта.
Вклад авторов
OsipovRoman 842.8samsergey 689.0NWOcs 627.0alizar 621.5itmo 610.0haqreu 577.0AKlimenkov 563.0Kelbon 457.0sannikovdmitry 329.0