Steiner Zincirleri, aşağıdaki dairelerde görüldüğü gibi, her bir dairenin kesişmeyen diğer 2 daireye ve zincirin önceki ve sonraki dairelerine teğet olduğu bir N daire kümesidir:
Bu meydan okumada, Steiner zincirlerini tekrar tekrar çeken bir program / işlev yazacaksınız, yani belirli bir zincirin çevreleri başka bir zincir yinelemesinin temel daireleri olacak:
Meydan okuma
Görüntü boyutlarını kabul eden bir program / işlev ve zincirlerin birbirini izleyen her yinelemesindeki dairelerin seviyesini belirten bir tamsayı listesi yazın ve bir görüntüyü kendisine çizilen özyinelemeli Steiner zincirleri ile çıktılayın.
Giriş
Programınız / işleviniz 2 argümanı kabul edecektir:
s
- görüntünün genişliği ve yüksekliğils
- en üst zincirden en alt zincire kadar sıralanan her ardışık zincir yinelemesinde mevcut olan daire sayısını gösteren pozitif tamsayıların listesi
Çıktı
Programınız / fonksiyonunuz, tekrar eden Steiner zincirini gösteren s
x boyutunda bir görüntü verir s
.
- Üst düzey taban çemberi, görüntünün
s
içinde ortalanmış, çapı olan görüntü kadar büyük olacaktır. - İşleri kolaylaştırmak için bir Steiner zincirinin 2 temel dairesi eşmerkezli olacak, yani 2 temel dairenin merkez noktaları aynı olacak
- Bir dış yarıçapı, göz önüne alındığında
R
, ve çemberlerin sayısı bir zincirdeN
, iç yarıçap formülüR'
olanR' = (R-R*sin(pi/N))/(sin(pi/N)+1)
- Zincirin daireleri ve iç taban dairesi, zincirlerin bir sonraki yinelemesinin dış taban daireleri olacaktır
- Zincir çemberleri boyunca tekrarlanırken, bir sonraki zincirin sırası,
ls
- Bir zincirin iç çemberi boyunca tekrarlanırken, emir ebeveynlerin emriyle aynı olmalıdır (örnek [5,2]):
- Tüm zincirler, uzunluğun derinliğinde özyinelemeyi sonlandırmalıdır
ls
- Zincirlerin dönmesi önemli değildir:
- Bununla birlikte, özyinelemeli zincirlerin ebeveynlerinin merkez noktasına göre dönüşleri aynı olmalıdır:
- Tüm daireler bir anahat veya düz dolgu ile çizilmelidir
- Renk seçimi uygulamaya bırakılır, boşluklar için saklanır (örneğin, her şeyi aynı renkle doldurur)
Örnek İşlemler
Aşağıdaki örneklerde renk ile belirlenir (depth of the recursion)^4
.
Burada kaynak bulabilirsiniz .
chain(600,[5,4,3])
chain(600,[11,1,1,1,1,1,1])
chain(600,[5,6,7,8,9])