В статье упоминаются новые функции из будущей 12-й версии языка Wolfram. Копируемый код и загружаемый блокнот будут опубликованы после релиза.

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



Мы присудили первое, второе и третье места, шесть почётных и одно позорное упоминание. И победителями стали…

Почётное упоминание


Дэнни Финн, консультант


ImageGuessr (Wolfram Pictionary) (128 символов)


Работа Дэнни — завершённая игра в 128 символах. Некоторые судьи сочли её настолько увлекательной, что продолжили играть после окончания судейской сессии.

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







Почётное упоминание


Дэнни Финн, консультант


Notebook Pox (123 символа)


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

Дэнни мог бы сэкономить семь символов, исключив ненужный System` перед BackgroundAppearance: вероятно, это остаток какого-то эксперимента.







Почётное упоминание


Сара Стэнли, главный консультант


Rainforest Winter (126 символов)


Работа Сары сочетает поиск изображений и нейронную сеть для преобразования изображений тропиков в снежный лес. Выдача ListAnimate показывает набор изображений заснеженного тропического леса.





Почётное упоминание


Сара Стэнли, главный консультант


Changing Tigers’ Stripes (128 символов)


Как и Дэнни, Сара тоже удостоилась двух почётных упоминаний. Второе — за работу, которая сочетает поиск изображений и комбинацию нейронных сетей, удаляющих полосы у тигров. ResourceObject в коде — это нейросеть CycleGAN по преобразованию зебр в лошадей. Нейросеть обучена на наборе данных ImageNet. Название нейросети съело бы 72 из 128 символов, если бы не использовался компактный числовой идентификатор. В то время как первоначальная сеть обучена преобразовывать зебр в лошадей, Сара применила её в новой области: на белых тиграх, и получила интересный эффект.





Почётное упоминание


Брайан Вуд, ведущий технический писатель по маркетингу


A Little Fun with Motion (117 символов)


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





Почётное упоминание


Даниэль Карвалью, исполнительный директор по развитию международного бизнеса


Wave (93 символа)


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





Позорное упоминание


Джон МакЛун, директор по технической коммуникации и стратегии


Удивительно короткий код Minesweeper (47 символов?)


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



Когда вы открываете программу Джона, то видите 2000 с чем-то символов полноценной игры «Сапёр». Она начинается так:



Несмотря на огромный объём, счётчик вверху показывает, что размер программы всего 47 символов:



В сопровождающей записке написано: «Удивительно короткий код Сапёра. Он может выглядеть больше, но на самом деле всего 47 символов. Проверьте сами! И я честно не менял шаблон жюри, вы можете скопировать код в свежий однострочник и посмотреть».

Как же он это сделал? Джон действительно не менял исходный код, встроенный в блокнот для подачи заявки, но зато переопределил некоторые функции, которые определяет этот код. Это можно увидеть через Cell > Show Expression на ячейке с кодом.

Первый “0” в коде обёрнут в DynamicWrapperBox с новыми определениями функций подсчёта количества символов в блокноте. Вместо того, чтобы подсчитывать символы в программе, новые определения подсчитывают символы в строке «Безусловно, заслуживает позорного упоминания [sic]!!!» (47 символов):



В первый раз, когда программа Джона появляется на экране, код DynamicWrapperBox активирует и взламывает блокнот для подачи заявки. Воистину заслуживает позорного упоминания, Джон!

Третье место


Джофре Эспигуле-Понс, консультант


Endangered Species (122 символа)


В работах победителей языковые компоненты Wolfram Language используются таким образом, что дают красивые, полезные и удивительные результаты. Программа Джофре соответствует всем трём критериям. Он находит пересечения класса млекопитающих с классом исчезающих видов (т. е. класс млекопитающих, находящихся под угрозой исчезновения), получает изображение каждого из них и собирает изображения в коллаж — графическое напоминание о биологическом богатстве, которое мы рискуем потерять.





Второе место


Лу Д'Андрия, ведущий разработчик пользовательского интерфейса


Wolfram Celebrities (123 персонажа)


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





Удивительно большое количество людей в компании идентифицированы как «Стивен Вольфрам» (включая самого Стивена). Хм…



Первое место


Джон МакЛун, директор по технической коммуникации и стратегии


Evolving Abstract Art (68 символов)


Наш коллега, который заслужил на этом конкурсе позорное упоминание, также занял первое место. Элегантная и лаконичная 68-символьная программа Джона МакЛуна покорила судей высоким соотношением графического разнообразия к длине кода. Это и анимация, и привлекательная графика. Интересно смотреть, как развивается изображение:





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



На конкурс представлено ещё много работ: в общей сложности 34 штуки. Все они будут опубликованы в блокноте после предстоящего выпуска версии 12 языка Wolfram. Спасибо всем, кто принял участие. Спасибо за то, что ещё раз показали нам силу языка Wolfram.

Комментарии (3)


  1. opckSheff
    01.03.2019 08:31

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


  1. dumplock
    01.03.2019 10:27

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

    В чем причина такой жестокости?


    1. SharkTPO
      01.03.2019 18:36

      Как я понял — они сотрудники самой компании (вольфрама). По крайней мере в их блоге запись.