Размеры бумаги ISO определены:
Размеры бумаги серии A определяются следующими требованиями:
The length divided by the width is the square root of 2.
The A0 size has an area of 1 unit.
Each subsequent size A(n) is defined as A(n-1) cut in half parallel to its shorter sides.
Задача:
с учетом входного f[n]
выхода A0 разделены на n
подразделения.
Тестовые случаи:
f[1]
чтобы f[12]
:
Здесь A0 определяется как f[1]
, но это индексирование не является обязательным.
Критерии победы:
Самый короткий код в байтах побеждает.
f[2]
бытьA0
с горизонтальной линией, разделяющей его? то есть, неf[2]
в тестовом случае на самом делеf[3]
?Ответы:
BBC BASIC 49 символов ASCII
Токенизированный размер файла 44 байта
Гораздо короче чем раньше! Я всегда забываю об операциях битового сдвига в BBC BASIC для окон, поскольку они не были доступны на моем старом компьютере в те времена.
BBC BASIC 63 символов ASCII
Токенизированный размер файла 58 байт
Скачать переводчик на http://www.bbcbasic.co.uk/bbcwin/download.html
Использует нулевую индексацию, которую я предпочитаю. Таким образом, 0 выводит бумагу для А0, 1 выводит А0, разделенную на пару А1 и т. Д.
Необходимо чередовать деление пополам координат X и Y, но выполнение этого в массиве будет стоить слишком много байтов. Вместо этого я использую тот факт, что BBC basic имеет блок статических целочисленных переменных
A%..Z%
по 4 байта, каждая из которых хранится в непрерывной памяти. Я сохраняю значения X и Y вA%
иC%
и получаю доступ, используя указатель на%B
измененное значение d, которое чередуется между4
и-4
.Ungolfed
Выход
источник
JavaScript (ES6) + HTML,
9694 + 34 =130128 байтисточник
Mathematica,
8785 байтСпасибо @martin за 1 байт.
источник
EdgeForm@Thin
: -1 байтJavaScript (ES6) / SVG (HTML5), 170 байт
Использует индексирование на основе 1.
источник