Pull to refresh
14
0

Химик и программист.

Send message

Квайны. Создание косвенным методом

Reading time6 min
Views2.8K
Работая над утилитой для собственного использования столкнулся с одной «волшебной» ошибкой. Изначально я намеревался сделать программу с возможностями квайна, но этого не получилось, так как даже от строки (из Википедии):
var s:string='var s:string=;begin insert(#39+s+#39,s,14);write(s)end.';begin insert(#39+s+#39,s,14);write(s)end.

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

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

Старые секреты быстрой отладки: анимация исходного кода

Reading time7 min
Views15K
Вечер пятницы часто оказывается вечером воспоминаний, и не только о прошедшей неделе, но и о гораздо более ранних событиях. В эту пятницу вспомнил об одной интересной программе для MS DOS (а также для Mac OS, UNIX и VAX/VMS) – Паскаль-интерпретаторе и IDE Dr. Pascal. Подробную информацию о возможностях и отзывы можно найти на сохраненном в архиве сайте изготовителя Visible Software (США), а я ограничусь только наиболее запомнившимися мне идеями, причем эти идеи, на мой взгляд, даже сегодня не утратили актуальности. Прежде всего вспоминается картинка:

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

Russian AI Cup 2018: CodeBall. Зрелищное 3D соревнование

Reading time5 min
Views24K


С 2012 года ежегодно проводится соревнование Russian AI Cup по написанию искусственного интеллекта и ботов, которые ожесточенно сражаются в виртуальном мире вместо своих владельцев. За все прошлые чемпионаты на платформе зарегистрировалось более 20 000 пользователей, которые прислали нам более 150 000 различных решений. Каждый новый чемпионат — это новая игровая задача со своими правилами, законами и механикой. Стараемся постоянно вносить новые идеи и фичи, чтобы игры из года в год становились еще более интересными и зрелищными, развивая наш мотор под капотом проекта и делая всё во славу нашего сообщества.

Этот год не стал исключением. Mail.Ru Group в сотрудничестве с Codeforces.com официально объявляют о датах чемпионата Russian AI Cup 2018 под названием CodeBall.

Итак, поехали!
Читать дальше →

Загадочный математический гений и писатель продвигают решение задачи о перестановке

Reading time7 min
Views42K

Новое доказательство за авторством австралийского писателя-фантаста Грега Игана и доказательство от 2011 года, анонимно опубликованное в сети, признали значительными прорывами в области изучения загадки, которую математики исследуют уже 25 лет




16 сентября 2011 года один фанат аниме опубликовал на форуме математический вопрос 4chan, касающийся культового сериала "Меланхолия Харухи Судзумии". Первый сезон шоу, где были и путешествия во времени, показали в порядке, отличном от хронологического, а во время дальнейшего показа и выпуска на DVD порядок эпизодов снова меняли. В интернете фанаты спорили о том, в каком порядке лучше смотреть сериал, а автор вопроса поинтересовался: если бы зрители захотели посмотреть сериал во всех возможных порядках, какое количество эпизодов было бы в кратчайшем их списке? [имеется в виду список, в котором можно найти любую последовательность эпизодов / прим. перев.]
Читать дальше →

Алгоритм резервуарной выборки

Reading time3 min
Views14K
Резервуарная выборка (eng. «reservoir sampling») — это простой и эффективный алгоритм случайной выборки некоторого количества элементов из имеющегося вектора большого и/или неизвестного заранее размера. Я не нашел об этом алгоритме ни одной статьи на Хабре и поэтому решил написать её сам.

Итак, о чём же идёт речь. Выбрать один случайный элемент из вектора — это элементарная задача:

// C++
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, vect.size() — 1);

auto result = vect[dis(gen)];

Задача «вернуть K случайных элементов из вектора размером N» уже хитрее. Здесь уже можно ошибиться — например, взять K первых элементов (это нарушит требование случайности) или взять каждый из элементов с вероятностью K/N (это нарушит требование взять ровно K элементов). Кроме того, можно реализовать и формально корректное, но крайне неэффективное решение «перемешать случайно все элементы и взять K первых». И всё становится ещё интереснее, если добавить условие того, что N — число очень большое (нам не хватит памяти сохранить все N элементов) и/или не известно заранее. Для примера представим себе, что у нас есть какой-то внешний сервис, присылающий нам элементы по одному. Мы не знаем сколько их придёт всего и не можем сохранить их все, но хотим в любой момент времени иметь набор из ровно K случайно выбранных элементов из уже полученных.

Алгоритм резервуарной выборки позволяет решить эту задачу за O(N) шагов и O(K) памяти. При этом не требуется знать N заранее, а условие случайности выборки ровно K элементов будет чётко соблюдено.
Читать дальше →

Как научить искусственный интеллект здравому смыслу

Reading time6 min
Views8.6K


Пять лет назад программисты из DeepMind, лондонской компании, специализирующейся на ИИ, радостно наблюдали за тем, как ИИ самостоятельно учился играть в классическую аркадную игру. Они использовали модную технологию глубинного обучения (ГО) для, казалось, странной задачи: овладения игрой в Breakout, сделанной в компании Atari, в которой нужно отбивать шарик от кирпичной стены, чтобы кирпичики исчезали.

ГО – это самообучение для машин; вы скармливаете ИИ огромные количества данных, и он постепенно начинает самостоятельно распознавать закономерности. В данном случае данными было происходящее на экране – крупные пиксели представляли кирпичи, шарик и ракетку. В ИИ DeepMind, нейросеть, состоящую из расположенных слоями алгоритмов, не было заложено никаких знаний по поводу правил игры Breakout, его принципов работы, целей и методов игры. Программисты просто позволили нейросети изучать результаты каждого действия, каждого отскока шарика. К чему это приведёт?
Читать дальше →

Гарри Поттер и трудности перевода: РОСМЭН и МАХАОН против оригинала

Reading time7 min
Views369K


Первая книга о мальчике-который-выжил вышла в 1997 году тиражом всего лишь в 500 копий. По статистике на 2018 год, в мире продано уже свыше 500 миллионов книг о Гарри Поттере, что делает этот цикл самым продаваемым в истории. А сама франшиза вместе с книгами, фильмами и пьесами сделала Джоан Роулинг миллиардером.

Серия книг о Гарри Поттере стала настоящим феноменом. Они переведены на 80 языков. Именно о переводах «Гарри Поттера» мы сегодня поговорим. О русских переводах. А если точнее, о трудностях русских переводов.
Читать дальше →

Хватит кормить издателей. ЕС разрабатывает правила обязательного бесплатного доступа к научным работам

Reading time8 min
Views24K

Ежегодный объем рынка платного доступа к научным публикациям оценивается в 25 млрд долларов

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

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

Еврокомиссар Карлос Моидас, представители научного сообщества ЕС и организации Science Europe выработали «Plan S». Суть его крайне проста: все научные исследования, которые будут финансироваться из государственных бюджетов стран ЕС или фондов Евросоюза, должны быть общедоступными уже с 1 января 2020 года.

Спички это не игрушка?

Reading time2 min
Views13K
(Пара сувениров эпохи мини-ЭВМ)

image (мини-ЭВМ PDP-11 (источник) и спичечный калькулятор)

В числе прочих исторических событий начало 1990-х ознаменовалось неспешным закатом эпохи мини-ЭВМ. От этого времени у меня осталось два сувенира.
Читать дальше →

Электронная игра XO

Reading time4 min
Views15K
Приветствую, Хабр!



Как Вы уже догадались по фотографии, речь сегодня пойдет не о классификации коньяка. Я буду делать игру крестики-нолики… Кому интересно – прошу под кат ->
Читать дальше →

Что на самом деле проверяет Тест Тьюринга

Reading time8 min
Views23K
Некоторое время назад я предложил сыграть в Тест Тьюринга с моим ботом Мишей. Кто попробовал, тот знает, что игрок-робот определяется элементарно. Кто не пробовал, может прочитать об этом в первом же комментарии под той статьей.

Теперь настал момент устроить разбор полетов, рассказать об устройстве бота и сделать выводы.


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

Вредоносное машинное обучение как диагностический метод

Reading time8 min
Views6.5K


Привет всем!

Продолжая проработку темы глубокого обучения, мы как-то раз хотели поговорить с вами о том, почему нейронным сетям повсюду мерещатся овцы. Эта тема рассмотрена в 9-й главе книги Франсуа Шолле.

Таким образом мы вышли на замечательные исследования компании «Positive Technologies», представленные на Хабре, а также на отличную работу двоих сотрудников MIT, считающих, что «вредоносное машинное обучение» — не только помеха и проблема, но и замечательный диагностический инструмент.

Далее — под катом.
Читать дальше →

Гигантский паук и минотавр на улицах Тулузы

Reading time2 min
Views11K


На прошлой неделе Тулуза превратилась в большой театр под открытым небом. С 1 по 4 ноября по ее улицам расхаживали огромные паук и минотавр. Каждый аниматроник управлялся более чем дюжиной операторов. Предполагалось, что шоу посмотрят около 200 тысяч человек, но реальное количество зрителей оказалось втрое больше. Под катом — фото и видео с выступления, организованного французской театральной группой La Machine.
Читать дальше →

«Человеческое, слишком человеческое». Не станем ли мы заложниками нашего разума, реализуя универсальный ИИ?

Reading time5 min
Views22K


Многие учёные и инженеры имеют неоправданно завышенные ожидания к искусственному разуму. Почему-то они считают, что мыслящие машины, будучи созданными, сразу же решат многие наши проблемы и приведут к технологической сингулярности. Однако, такой образ мыслей является заблуждением.
Примечание. Я намеренно не использую слово «интеллект», ибо под ним обычно разумеется способность к анализу проблем и принятию решений на основе шаблонов, без осознания процесса. В указанном значении интеллект присущ и программе Maple, решающей сложные уравнения, и пчёлам, способным к обучению и сложному поведению, и многим иным животным. Взамен я буду использовать слово «разум», говоря про мыслящие машины уровня человека.

А нужен ли вообще нам искусственный разум? Нужен. Увы, «голый» интеллект решает слишком узкий класс проблем, причём порой весьма неэффективно. Более того – «голый» интеллект не способен сам сформулировать проблему! Например, возьмём игру в шахматы, – машина решает проблему не творчески, затрачивая немалые ресурсы и используя различные алгоритмы, заложенные в неё инженерами. Человек решает проблему творчески – он генерирует новые решения, причём используя намного меньшие ресурсы!
Читать дальше →

Первокурснику: Вуз.Инструкция 1.0

Reading time15 min
Views74K
Мне всегда казалось, что нет более уязвимого и потерянного в реальности человека, чем первокурсник в первом своём семестре. Точнее, казалось так не всегда, а начиная со своего первого курса. Потом были сессии, аспирантура, работа преподавателем на несчастном первом курсе и мнение только укреплялось. Представьте себе: человека выдернули из школы и поместили в абсолютно другую среду со странными чертами: группа похожа на класс, те же парты и доска, учебники и злой библиотекарь, те же пары, так похожие на уроки. Но, чёрт возьми, что происходит? Я вам расскажу, что.

То же самое, но про инженеров — ниже. 1:1, пацаны
Читать дальше →

Измерение времени с наносекундной точностью

Reading time19 min
Views24K
image

Пару месяцев назад для меня наступил исторический момент. Мне перестало хватать стандартных средств операционной системы для измерения времени. Понадобилось измерять время с наносекундной точностью и с наносекундными накладными расходами.

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

Так как на компьютере можно измерять много разных типов времени, сразу уточню, что здесь речь пойдет о «времени по секундомеру». Или wall-clock time. Оно же real time, elapsed time и т.п. То есть простое «человеческое» время, которое мы засекаем в начале исполнения задачи и останавливаем в конце.
Читать дальше →

Моё разочарование в софте

Reading time11 min
Views393K

Суть разработки программного обеспечения
— Нужно проделать 500 отверстий в стене, так что я сконструировал автоматическую дрель. В ней используются элегантные точные шестерни для непрерывной регулировки скорости и крутящего момента по мере необходимости.
— Отлично, у неё идеальный вес. Загрузим 500 таких дрелей в пушку, которые мы сделали, и выстрелим в стену.


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.

Как не надо писать код

Reading time4 min
Views37K

image


Готовы погрузиться с головой в дивный мир программирования? Хотите узнать как непредсказуемо могут повести себя несколько простых строк кода?


Если ваш ответ "Да!" — добро пожаловать под кат.


Вас будут ждать несколько занимательных задачек на С или С++.


Правильный ответ с объяснением всегда будет спрятан под спойлером.


Удачи!

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

Как я осилил английский

Reading time13 min
Views352K
Всем привет. Я – айтишник «за 30», и я люблю английский язык. Так получилось, что на протяжении многих лет английский никак не хотел полюбить меня. Перед вами живой пример человека с «плохой памятью», «неспособностью к языкам», богатейшим опытом неудачного изучения английского как на курсах, так и самостоятельно, упущенными из-за незнания языка шансами и возникшими на этой почве комплексами. Все, что можно было сделать в изучении иностранного языка плохо, я попытался сделать еще хуже. Не смотря на все это, перед вами история с хэппи эндом, которая, верю, поможет кому-то избежать глупых ошибок, сэкономить время, избавится от иллюзий и предрассудков по поводу изучения нового языка с около нулевого уровня.
Читать дальше →

Заблуждения о космических сражениях

Reading time7 min
Views41K
Здравствуйте. Это перевод статьи "Misconceptions about Space Warfare" из блога создателя игры Children of dead Earth – наиболее реалистичного космического симулятора на данный момент.

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

Невидимость в космосе


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

image
Зенитные орудия пытаются сбить подлетающие ракеты. Ракеты обозначены красными точками, так как они слишком далеко для того, чтобы разглядеть их невооруженным глазом.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity