Generadors de Recamán P62891


Statement
 

pdf   zip   main.py

thehtml

La seqüència de Recamán amb paràmetre k va ser descrita pel matemàtic colombià Bernardo Recamán Santos i és definada així:

an = 




    0 si n=0,
    an−1nk si n>0 i an−1nk>0 i an−1nk no ha aparagut abans,
    an−1+n+k altrament.


Així, els deu primers termes de la seqüència de Recamán amb k=0 són [0, 1, 3, 6, 2, 7, 13, 20, 12, 21] i els deu primers termes de la seqüència de Recamán amb k=2 són [0, 3, 7, 2, 8, 1, 9, 18, 28, 17].

  1. Escriviu una funció
    def recaman(k: int) -> Iterator[int]

    que, donat un natural k, generi la seqüència de Recamán amb paràmetre k.

  2. Escriviu una funció
    def recaman_from(k: int, n: int) -> Iterator[int]

    que, donat uns naturals k i n, generi la seqüència de Recamán amb paràmetre k començant pel terme n-èsim.

  3. Escriviu una funció
    def recaman_first_completion(k: int, x: int) -> int

    que, donat uns naturals k i x, retorni el primer n tal que {a0,...,an} conté tots els naturals fins a x ({0,...,x}). Assumiu que aquest valor existeix, malgrat que aquest fet no ha estat encara mai demostrat.

Observacions

  • Implementeu totes les funcions de forma senzilla, clara i concisa aprofitant Python.
  • Descarregueu-vos el fitxer code.py i anomeneu-lo recaman.py. El programa principal i l’esquelet de les funcions ja se us dóna implementat.
  • El Jutge dóna puntuacions parcials per a cada apartat i pel joc de proves públic, però l’avaluació va a càrrec del professor.
Public test cases
  • Input

    recaman 0 10
    recaman 2 10
    recaman_from 0 3 10
    recaman_from 2 3 10
    recaman_first_completion 0 0
    recaman_first_completion 0 1
    recaman_first_completion 0 2
    recaman_first_completion 0 3
    recaman_first_completion 0 4
    

    Output

    [0, 1, 3, 6, 2, 7, 13, 20, 12, 21]
    [0, 3, 7, 2, 8, 1, 9, 18, 28, 17]
    [6, 2, 7, 13, 20, 12, 21, 11, 22, 10]
    [2, 8, 1, 9, 18, 28, 17, 5, 18, 4]
    0
    1
    4
    4
    131
    
  • Information
    Author
    Jordi Petit
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python