Ланцюжки Штейнера - це набір з N кіл, де кожне коло є дотичним до двох інших непересічних кіл, а також до попереднього та наступного кіл ланцюга, як видно із зображень нижче:
У цьому виклику ви напишете програму / функцію, яка малює ланцюги Штейнера рекурсивно, тобто кола даного ланцюга будуть базовими колами іншої ітерації ланцюгів:
Виклик
Напишіть програму / функцію, яка приймає розміри зображень та список цілих чисел, що позначають рівень кіл у кожній послідовній ітерації ланцюгів, і виведіть зображення із зверненими до нього рекурсивними ланцюгами Штайнера.
Вхідні дані
Ваша програма / функція прийме 2 аргументи:
s- ширина та висота зображенняls- список натуральних чисел, що позначають кількість кіл, присутніх у кожній послідовній ітерації ланцюгів, упорядковані від верхньої ланцюга до нижнього самого ланцюга
Вихідні дані
Ваша програма / функція виведе зображення розмірності sx із sвідображенням повторюваного ланцюга Штайнера.
- Основне коло верхнього рівня буде таким же великим, як зображення діаметром, із
sцентром всередині зображення - Щоб полегшити ситуацію, 2 базових кола ланцюга Штайнера будуть концентричними, тобто центральні точки двох кіл базової лінії будуть однаковими
- Враховуючи зовнішній радіус
Rта кількість кіл у ланцюзі,Nформула внутрішнього радіусаR'єR' = (R-R*sin(pi/N))/(sin(pi/N)+1) - Кола ланцюга, а також внутрішній базовий круг будуть зовнішніми базовими колами наступної ітерації ланцюгів
- Під час повторної роботи по ланцюгових колах порядок наступного ланцюга повинен відповідати наступному значенню в
ls - Поки повторюється через внутрішнє коло ланцюга, порядок повинен бути таким самим, як його замовлення батьків (приклад [5,2]):

- Усі ланцюги повинні закінчуватися рекурсією на глибині довжини до
ls - Обертання ланцюгів не має значення:

- Однак обертання рекурсивних ланцюгів щодо центральної точки їх батьків має бути однаковим:

- Усі кружечки слід намалювати контуром або суцільною заливкою
- Вибір кольору залишається на реалізації, окрім лазівки (наприклад, заповнення все тим самим кольором)
Приклад працює
У наступних прикладах колір визначається за (depth of the recursion)^4.
Ви можете знайти джерело тут .
chain(600,[5,4,3])
chain(600,[11,1,1,1,1,1,1])
chain(600,[5,6,7,8,9])







