Давши ціле число N> = 2, створіть зображення, що показує вузол Сірпіньського ступеня N.
Наприклад, ось вузли ступеня 2, 3, 4 і 5:
Клацніть на зображення, щоб переглянути повний розмір (чим вище ступінь, тим більше зображення).
Специфікація
- Вузол Сєрпіньського за ступенем N малюється за допомогою вершин трикутника Сєрпіньського за ступенем N в якості орієнтирів. Трикутник Сєрпіньського за ступенем N - це три трикутники Сєрпіньського ступеня N-1, розташовані у більший трикутник. Трикутник Сєрпіньського ступеня 0 - це рівносторонній трикутник.
- Найменша складова трикутників має бічну довжину 64, що дає трикутник Сірпіньського, на якому вузол заснований загальною довжиною сторони
- Центр зовнішнього трикутника розташований у центрі зображення. Це не дає рівного білого простору вгорі та внизу.
- Вихід - це квадратне зображення бічної довжини, де є
ceiling(x)
найменше ціле число, що перевищує або дорівнює x. Це просто достатньо, щоб верхня вершина нижнього трикутника Сєрпіньського містилася в зображенні, коли центр трикутника знаходиться в центрі зображення. - Одинарна крива повинна проходити над і під собою, строго чергуючись. Рішення можуть вибирати між під, над або під нижче.
- На прикладних зображеннях видно чорний передній план і білий фон. Ви можете вибрати будь-які два кольори, що легко розрізняються. Дозвіл згладжування дозволено, але не потрібно.
- Не повинно бути прогалин, де зустрічаються дві дуги або де крива проходить над або під собою.
- Вихід може бути у будь-якому файлі зображення растрового формату або в будь-якому файлі зображення у форматі векторного формату, що містить правильний розмір дисплея за замовчуванням. Якщо ви відображаєтесь безпосередньо на екрані, це має бути у формі, яка дозволяє прокручувати зображення, щоб побачити повне зображення, коли його більше, ніж екран.
Визначення центру дуги, радіуса та товщини дуги
- Вузол побудований у вигляді серії кругових дуг, які зустрічаються в точках, де їх дотичні паралельні, для отримання безшовного з'єднання. Ці дуги відображаються як кільцеві сектори (дуги з товщиною).
- Центрами цих дуг є вершини найменших догори ногами трикутників. Кожна така вершина є центром рівно однієї дуги.
- Кожна дуга має радіус
- Виняток полягає в тому, що дуги у трьох зовнішніх трикутників (по кутах великого трикутника) мають центр, який є серединою двох сусідніх внутрішніх вершин, і, таким чином, мають радіус
- Кожна дуга представлена загальною товщиною (різниця між внутрішнім радіусом і зовнішнім радіусом), а чорні межі цієї кожної мають товщину . Крива повинна мати ці межі, а не бути суцільною смугою.
Одиниці виміру
- Усі відстані у пікселях (1 - горизонтальна або вертикальна відстань між 2 сусідніми пікселями).
- Квадратний корінь з 3 повинен бути точним до 7 значущих цифр. Тобто, ваші обчислення повинні бути еквівалентні використанню ROOT3 такого, що
1.7320505 <= ROOT3 < 1.7320515
Оцінка балів
Виграє найкоротший код у байтах.
Для тих, хто цікавиться, N = 0 і N = 1 не включаються, тому що вони відповідають колу і трилистці, які не зовсім відповідають шаблону, який застосовується для N> = 2. Я б очікував, що для більшості підходів до цього виклику потрібно буде додати спеціальний код справи для 0 і 1, тому я вирішив їх опустити.
stroke-width:3.464102
подібне трохи надмірне, якщо ідея полягала в точності 1 пікселя. Я буду йти вперед і включати його таким чином, якщо це є постановою.