Sorun
Tek bir sürekli aralıktan başlayarak, henüz silinmemiş tüm aralıkların ortasından bazı rasyonel uzunluk segmentlerini tekrar tekrar silerek genelleştirilmiş bir Cantor tanımlayalım .
Silinecek veya silinmeyecek segmentlerin göreli uzunlukları ve yapılacak yineleme sayısı göz önüne alındığında, sorun yinelemeden sonra silinmiş veya silinmemiş segmentlerin göreli uzunluklarını çıktılayan bir program veya işlev yazmaktır n
.
Örnek: 4. ve 6. sekizinci bölümü silinerek
Giriş:
n
- 0 veya 1'den başlayarak dizine alınan yineleme sayısı
l
- Silinmeyen gcd(l)=1
bir segmentten başlayarak, oldukları gibi kalan veya silinen parçaların göreli uzunluklarını temsil eden segment uzunluklarının ve tek uzunluklu pozitif tamsayılar olarak listesi . Liste uzunluğu garip olduğu için, ilk ve son segmentler asla silinmez. Örneğin, normal Cantor seti için bu, kalan üçte biri için silinir, üçte biri silinir ve yine üçte biri için olmaz.
Çıktı:
Tamsayı listesi o
, gcd(o)=1
, bağıl kademeli uzunluklarının n
inci tekrarında, önceki tekrarında silinmemiş bölümler listesinden bir küçültülmüş kopya ile değiştirilir ve zaman l
. İlk yineleme sadece [1]
. Herhangi bir belirsiz çıktı yöntemini kullanabilirsiniz , hatta tek bile.
Örnekler
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]
Girişin geçerli olduğunu varsayabilirsiniz. Bu kod golf , bu nedenle bayt cinsinden ölçülen en kısa program kazanır.
[0, 1, 2, 4, 6, 7]
yerine[3, 1, 1, 1, 2]
?