Новый суперкомпьютер для прогнозирования погоды прибыл, и он не работает.
Тем временем ваш начальник хочет, чтобы вы некоторое время покупали техников, подделывая ежедневные карты ветра.
Ваша задача - нарисовать сетку стрелок, обозначающих направление ветра.
Сетка это:
- состоит из 15px квадратных плиток
- 8 плиток на 8 плиток
- Общая площадь 120px
000 фон
Каждая сетка имеет 8 потенциальных ориентаций, представляющих направление ветра:
- к северу
- К северо-востоку
- восток
- юго-восток
- юг
- юго-запад
- запад
- Северо-Запад
Который должен быть изображен следующим образом:
N NE E SE S SW W NW
Карты должны меняться постепенно , чтобы быть правдоподобными.
Это означает, что каждый тайл может отличаться от соседа только на один шаг. В частности:
- Плитка может отличаться только на один шаг или приращение от каждой из 4 смежных плиток. (или 3 для боковых плиток, 2 для угловых плиток).
- например, тайл с соседом E может быть NE, E или SE (при условии, что он согласуется с другими его соседями).
- Ориентации могут возвращаться назад, то есть N -> NW и NW -> N.
Для иллюстрации действительна следующая карта:
NW N NE NE NE NE NE NE
N NE NE NE NE NE NE E
NE NE NE NE NE NE E SE
E NE NE NE NE E SE S
SE E E E E SE S SE
S SE SE SE SE S SE E
SW S S S S SE E NE
SW SW S S SE E NE N
Карты должны быть уникальными , не создавайте одну и ту же карту для разных входных данных.
- Ввод - это целое число, соответствующее дням между вашим прогнозом и прогнозом (например, 1 - прогноз на завтра, 365 - это год).
- Вывод карты в виде изображения.
- Вывод должен быть воспроизводимым, один и тот же ввод всегда будет давать одинаковый вывод
- Вы должны предоставить уникальные карты в течение не менее 8 лет - т.е. не иметь одинаковых выходных данных для любого ввода от 1 до 2920 (я игнорирую високосные годы).
- Не существует определенного выхода для любого ввода больше 2920.
Победившая работа предоставит действительные карты (до 2920 дня) с наименьшим количеством байтов исходного кода.
Ответы:
BBC Basic, 83 символа ASCII, размер файла маркеров 72
Скачать эмулятор на http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Это в основном порт Мартина, но реализация в BBC basic очень отличается. Я перепрограммирую шрифт для чисел
0
и1
затем выводю двоичные цифрыn
в обратном порядке.Ungolfed код ниже. В BBC basic вы можете печатать отдельные символы ASCII, используя
VDU
команду, но язык имеет ряд машинно-специфических кодов, похожих на escape-последовательности, но начинающихся с непечатаемых символов. Для перепрограммирования шрифта мы начинаем с ASCII 23. Обычно берутся 8-битные значения, но если вы используете точку с запятой вместо разделителя, она принимает 16-битные порядковые значения (как в версии для гольфа).Выход
Для чисел от 0 до 7. Обратите внимание, что шрифт не сбрасывается в конце программы, поэтому числа 0 и 1 отображаются в виде стрелок в первых двух примерах.
источник
Матлаб (182 *)
Предполагается, что вход хранится в
n
. Что касается алгоритма, то он не уверен, что результаты будут уникальными, но я проверил,n=1 upto 3000
что они уникальны и соответствуют правилам. Я просто использую комплексные числа единичного круга и сглаживаю их с помощью conv2 с помощью гауссовского фильтра. После этого они округляются до 8 возможных направлений.* Я не знаю, как масштабировать вывод до определенного количества пикселей, так что это должно быть сделано вручную = /
РЕДАКТИРОВАТЬ: Я только что обнаружил, что есть случаи, когда моя программа проверки не распознала неправильные решения (изменения более чем на 1 шаг), но я пытаюсь найти другое решение.
Входные данные:
Код:
источник
Mathematica,
116115 байтовЯ полагаю, хорошая лошадь никогда не прыгает выше, чем должна. 2920 различных сеток очень легко достигаются с использованием только двух направлений (я использую
N
иNE
), что делает выполнение правила непрерывности тривиальным. Я просто выбираю между N и NE на основе битовn
, так что на самом деле будет получено 2 64 различных карты ветра.Вот первые десять карт:
PS: Моя оригинальная идея состояла в том, чтобы перечислить все 8 4 комбинаций для 4 углов и «линейно» интерполировать остальную часть сетки. Это, вероятно, привело бы к получению более хороших карт, но в конце концов это кодовый гольф, поэтому я выбрал то, что соответствует минимальным требованиям.
источник
PHP 5.4, 549 байт
Несколько затруднен необходимостью определять стрелки как графику, вот мой PHP-код:
Принимает свой аргумент из командной строки, такой как:
Это решение будет использовать входные данные в качестве определения четырех углов. Остальная часть карты будет плавно интерполироваться между значениями. Он определил результаты для всех значений от 0 до 4095, всего ~ 11,25 лет фальшивого прогноза, которых должно быть более чем достаточно для исправления погодного программного обеспечения!
Вот GIF всех результатов:
И ZIP, содержащий каждую карту, можно скачать здесь
(Небольшое примечание: мой домен недавно истек, потому что я не обращал на него внимания. Я обновил его, но приведенное выше изображение и ссылка могут не работать, пока не обновится DNS)
Unsquishified:
источник