問題
単一の連続した間隔から開始して、まだ削除されていないすべての間隔の中間から合理的な長さのセグメントを繰り返し削除することにより、一般化されたCantorセットを定義しましょう。
削除するかどうかのセグメントの相対的な長さ、および実行する反復回数を考えると、問題は、反復後に削除された、またはされていないセグメントの相対的な長さを出力するプログラムまたは関数を作成することn
です。
例:4番目と6番目の8番目を繰り返し削除する
入力:
n
– 0または1から始まるインデックス付きの反復回数
l
-セグメントの長さのリストは、正の整数gcd(l)=1
と奇数の長さで、削除されないセグメントから始まる、そのままの状態または削除される部分の相対的な長さを表します。リストの長さが奇数であるため、最初と最後のセグメントは削除されません。たとえば、通常のCantorセットの場合、これは3分の1が[1,1,1]になり、3分の1が削除され、3分の1が削除されます。
出力:
前の反復で削除されなかったセグメントがリストの縮小されたコピーで置き換えられるとき、th反復における相対セグメント長の整数リストo
、。最初の反復はちょうどです。単項式であっても、明確な出力方法を使用できます。gcd(o)=1
n
l
[1]
例
n=0, l=[3,1,1,1,2] → [1]
n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2]
n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4]
n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27]
n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1]
入力が有効であると想定できます。これはcode-golfであるため、バイト単位で測定される最短のプログラムが優先されます。
[0, 1, 2, 4, 6, 7]
代わりに[3, 1, 1, 1, 2]
?