В то время, пока я рисовал на бумаге с квадратными линиями, я придумал вышеуказанный шрифт для цифр. Если вы еще не заметили это, пробелы между вышеупомянутыми формами дают золотое сечение 1.618033988749 . В этой задаче ваша задача - взять число в качестве входного и отобразить его точно так, как показано в примере выше.
Вот как они созданы. Все линии будут на регулярной сетке, так что отдельные цифры состоят из небольшого числа ячеек сетки. Вот формы из 10 цифр (мы будем игнорировать десятичную точку для этой задачи):
Да, 7 отличается от примера золотого сечения в верхней части. Я вроде все испортил. Мы пойдем с этим.
Обратите внимание, что каждая цифра имеет пять ячеек и три ячейки. Чтобы отобразить число, вы можете представить, что все его цифры расположены рядом друг с другом, так что между каждой парой цифр ровно один пустой столбец. Например, принимая в 319
качестве входных данных, мы написали бы:
Обратите внимание, что мы добавляем один ведущий и завершающий пустой столбец. Теперь мы инвертируем ячейки:
На выходе должны быть границы результирующих полигонов:
Конечно, вы можете сгенерировать результат любым другим способом, если визуализированный вывод выглядит одинаково.
вход
- Вы можете написать программу или функцию, используя ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции, в виде строки или списка цифр. (Вы не можете взять число, так как это не позволит вам поддерживать ведущие нули.)
- Вы можете предположить, что на входе не будет больше 16 цифр.
Выход
- Вывод может отображаться на экране или записываться в файл в обычном формате изображения.
- Вы можете использовать как растровую, так и векторную графику.
- В любом случае соотношение сторон ячеек базовой сетки должно быть равно 1 (то есть ячейки должны быть квадратами).
- В случае растровой графики каждая ячейка должна охватывать не менее 20 на 20 пикселей.
- Строки должны быть не шире, чем 10% размера ячейки. Я готов дать один или два пикселя, так как здесь есть псевдонимы.
- Линии и фон могут быть любыми двумя четко различимыми цветами, но формы, созданные линиями, не должны заполняться (то есть внутренняя часть должна быть также цветом фона).
- В каждом замкнутом контуре не должно быть пробелов.
- Конечно, весь результат должен быть виден.
Тестовые случаи
Вот 10 входов, которые вместе охватывают все возможные пары соседних цифр, а также все возможные начальные и конечные цифры:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
И вот ожидаемые результаты для тех:
Убедитесь, что ваш код также работает, когда ему дается одна цифра (я не хочу включать ожидаемые результаты здесь, потому что они должны быть очевидными, а раздел тестового примера достаточно раздутый).