- PVSM.RU - https://www.pvsm.ru -
В статье упоминаются новые функции из будущей 12-й версии языка Wolfram. Копируемый код и загружаемый блокнот будут опубликованы после релиза.
Каждый год на технологической конференции Wolfram [1] проходит конкурс однострочников [2] для программ на языке Wolfram [3] длиной максимум 128 символов. Нашим сотрудникам запрещено в нём участвовать, но каждый год от них приходят заявки и просьбы, которые приходится отклонять. Чтобы дать им возможность проявить себя и показать, насколько крутые программы они делают, в этом году мы впервые организовали внутренний конкурс однострочников.

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



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



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


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


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


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


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

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

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

В сопровождающей записке написано: «Удивительно короткий код Сапёра. Он может выглядеть больше, но на самом деле всего 47 символов. Проверьте сами! И я честно не менял шаблон жюри, вы можете скопировать код в свежий однострочник и посмотреть».
Как же он это сделал? Джон действительно не менял исходный код, встроенный в блокнот для подачи заявки, но зато переопределил некоторые функции, которые определяет этот код. Это можно увидеть через Cell > Show Expression на ячейке с кодом.
Первый “0” в коде обёрнут в DynamicWrapperBox с новыми определениями функций подсчёта количества символов в блокноте. Вместо того, чтобы подсчитывать символы в программе, новые определения подсчитывают символы в строке «Безусловно, заслуживает позорного упоминания [sic]!!!» (47 символов):

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


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


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

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


Джон использовал сложный эффект повторения. В результате получилась программа, которая делает гораздо больше, чем можно было подумать, глядя на количество символов. Поздравляем, Джон!
Автор: m1rko
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/demostsena/310199
Ссылки в тексте:
[1] технологической конференции Wolfram: https://www.wolfram.com/events/technology-conference/2018/
[2] конкурс однострочников: https://blog.wolfram.com/2018/10/25/the-winners-of-the-2018-one-liner-competition/
[3] языке Wolfram: http://www.wolfram.com/language/
[4] ListAnimate: http://reference.wolfram.com/language/ref/ListAnimate.html
[5] ResourceObject: http://reference.wolfram.com/language/ref/ResourceObject.html
[6] нейросеть CycleGAN по преобразованию зебр в лошадей: https://resources.wolframcloud.com/NeuralNetRepository/resources/CycleGAN-Horse-to-Zebra-Translation-Trained-on-ImageNet-Competition-Data
[7] блокнота Wolfram: http://www.wolfram.com/notebooks/
[8] Classify: http://reference.wolfram.com/language/ref/Classify.html
[9] Источник: https://habr.com/ru/post/442134/?utm_campaign=442134
Нажмите здесь для печати.