[Перевод] Вычисления в 128 символах: победители конкурса однострочников Wolfram

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

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

f64ab0c4be3f4d471f6f3f97f63b858f.gif

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


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


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


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

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

e2d773aa421172823da6c484b739697d.png

3e3c240f5a7160118412ea456298dfd6.png

42f1ae90f38ff30948114f5ac3b1e3db.png


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


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


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

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

78d2bea2ae7b88b56ef8add512c005fd.png

181d1628edd6695ac0165c7a2f7b8db3.png

fea83f3559f93c86a692ed8935109eb9.png


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


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


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

94e4ab8a773c2c3554aaad9c9f58dad2.png

7c758788d72633d284dcb98656697e23.png


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


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


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

35bc3b3354a1286076e03906219c788f.png

b30592fd8ecefa87916c14dea3b90e48.png


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


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


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

308499d2bff471bdbf0bb569ea3a6a6d.png

bb46132337e602db396533dff1de7b58.gif


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


Wave (93 символа)


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

3967972c8c8165395e062875d6e062b5.png

351e83e6b89e5f92c209751c0cba31e7.gif


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


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


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

859be953c59eab14d4881e8217c7fa34.png

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

3eba59784626ca02f0f00a21b648ecf0.png

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

6426e076725dcbe939f3b1f5b4bdc3c0.png

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

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

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

856b7f0ca2c52512cc1958e410d561f4.png

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


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


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


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

2775db551c75fe76840773143f5601c4.png

2775db551c75fe76840773143f5601c4.png


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


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


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

291be2b0430a139d84981edcd47bb59e.png

291be2b0430a139d84981edcd47bb59e.png

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

cc27822e0f05150b62f66f78202cc5e0.png


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


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


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

57ac01657c7d940816b7de098eec545e.png

f64ab0c4be3f4d471f6f3f97f63b858f.gif

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


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

© Habrahabr.ru