Problem
Zdefiniujmy uogólniony zestaw Cantor , iteracyjnie usuwając niektóre segmenty racjonalnej długości ze środka wszystkich przedziałów, które nie zostały jeszcze usunięte, zaczynając od pojedynczego przedziału ciągłego.
Biorąc pod uwagę względne długości segmentów do usunięcia lub nie oraz liczbę iteracji do wykonania, problemem jest napisanie programu lub funkcji, która wyświetli względne długości segmentów, które zostały lub nie zostały usunięte po n
iteracjach.
Przykład: Iteracyjnie usuń 4. i 6. ósmy
Wejście:
n
- liczba iteracji, indeksowana od 0 lub 1
l
- lista długości segmentów jako dodatnie liczby całkowite o gcd(l)=1
długości nieparzystej, reprezentujące względne długości części, które albo pozostają, albo zostają usunięte, zaczynając od segmentu, który nie zostanie usunięty. Ponieważ długość listy jest nieparzysta, pierwszy i ostatni segment nigdy nie zostaną usunięte. Na przykład dla zwykłego zestawu Cantor będzie to [1,1,1] dla jednej trzeciej, która pozostanie, jednej trzeciej, która zostanie usunięta, i jednej trzeciej, która nie zostanie.
Wynik:
Lista Integer o
, gcd(o)=1
, względnych długości segmentu w n
XX iteracji gdy segmenty, które nie zostały usunięte w poprzedniej iteracji są zastępowane przez zmniejszoną kopię listy l
. Pierwsza iteracja jest słuszna [1]
. Możesz użyć dowolnej jednoznacznej metody wyjściowej , nawet jednostkowej.
Przykłady
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]
Możesz założyć, że dane wejściowe są prawidłowe. To jest golf golfowy , więc wygrywa najkrótszy program mierzony w bajtach.
[0, 1, 2, 4, 6, 7]
zamiast[3, 1, 1, 1, 2]
?