В конце концов, она нашла Йывень, которая молча вязала в одном из свободных помещений Храма, как будто прилежный паук в центре огромной паутины из тонкой серой пряжи. Сотни нитей тянулись из мотков, разбросанных по всей комнате. Казалось, что Йывень вяжет шарф из всех нитей сразу.
"Зима была шесть месяцев назад", - сказала Хвайда, - "Объяснись!"
Йывень нежно перебирала нити рукой: "Каждый оттенок серого отображает разные целые числа в порядке их значения. Для нуля я выбрала цвет с именем 'Темнота до начала времен'. Тридцать один - это 'Угольная пыль', шестьдесят три - 'Собирающаяся грозовая туча' и так далее, всё светлее и светлее до двухсот пятидесяти пяти: 'Белое божественное облако'".
"Впечатляющая палитра для такого скромного сезонного аксессуара", - сказала Хвайда.
Йывень подняла шарф со своих колен: "Это не просто предмет одежды. Рисунок на нём показывает меняющееся состояние массива чисел в процессе сортировки. Каждый ряд представляет собой одно такое изменение, а петли в ряду изображают числа. Видишь, в первом ряду цвета в полном беспорядке, но с каждым рядом они становятся всё более упорядоченными, так как алгоритм сортировки говорит мне, какие нити поменять. Цвет нитей последнего ряда будет плавно меняться от чёрного к белому".
"Также я тут вижу одну тонкую сверкающую золотую нить и ещё одну рубиновую", - сказала Хвайда.
Йывень указала ногтём на часть шарфа: "Если на текущем шаге алгоритм сравнивает два элемента, то я завязываю золотые узелки вокруг соответствующих нитей. Если он выбирает опорную точку, то я украшаю эту нить рубином. Таким образом, шарф будет иметь столько строк, сколько операций требуется алгоритму сортировки, и эстетика алгоритма будет видна".
"Ты всё ещё ищешь красоту в коде?" - сказала Хвайда.
"Тысяча извинений, Хвайда, но это не единственная моя цель", - сказала Йывень. - "Знакома ли ты с монахом-послушником, недавно присоединившимся к моей команде? Его первой задачей было убедиться, что результирующее множество отсортировано перед отображением. Но он не знал о встроенной утилите сортировки, поэтому реализовал свою собственную".
"Самая неудачная трата времени", - сказала Хвайда.
"Твои слова весьма кстати", - сказал Йывень. - "Он выбрал Bubblesort, как выяснилось в дальнейшем, когда приложение получило очень большое множество и потребовалось несколько минут, чтобы отобразить страницу".
"Похоже, что ты используешь Bubblesort в качестве основы для рисунка", - сказал Хвайда, рассматривая готовые ряды.
"Верно!", - сказала Йывень. - "Я уже связала шарф с помощью встроенного алгоритма сортировки Timsort. Он около четверти метра в ширину и два метра в длину, и я буду с удовольствием носить его. Этот же шарф - подарок для монаха. У него будет такая же ширина, но он будет несколько более... нескладный".
"Он будет шестьдесят четыре метра в длину!" - воскликнула Хвайда.
"Теперь ты понимаешь, почему я должна начать в июне", - сказала Йывень. - "Как ты заметила, зима была всего шесть месяцев назад".
"А что будет, если монах откажется носить твой щедрый подарок?" - спросила Хвайда.
"То же самое, что будет, если он не исправит своё невежество", - сказала Йывень. Она свернула шарф в тонкую трубку и дернула за концы, показав свою силу. - "Шестьдесят четыре метра делают это неуклюжим шарфом, но отличной петлёй".
Original: The Summer Scarf