Profilo di m_cecchetto

Nome m_cecchetto
Indirizzo email n/a
Messaggi2
  • Re: Aiuto: Python e Sherlock Holmes (Fibonacci)
    Forum >> Principianti
    Grazie Daniele per il benvenuto. :)

    Tornando al definire una funzione, credo di aver capito un po' meglio il concetto che mi volevi spiegare ma, nonostante ci stia provando da un paio di ore, non riesco proprio a capire come dovrei implementarlo nel mio programma. TI dispiacerebbe farmi un esempio partendo dal mio lavoro oppure spiegarmi un attimo cosa dovrei definire (noi abbiamo imparato a commentare programmi Pyhton, non a crearne, quindi mi sto muovendo abbastanza al buio e usando il buon senso e qualche ricordo di C++).
    Grazie mille e scusa per le mie lacune, ma è davvero importante per me :embarrassed:
  • Aiuto: Python e Sherlock Holmes (Fibonacci)
    Forum >> Principianti
    Salve a tutti, sono un nuovo utente del forum. Sono sotto periodo di Maturità e la mia tesina si concentra su Sherlock Holmes e la criminologia. Vi starete probabilmente domandano: cosa collega il detective a Python? La nemesi di Holmes, il Dr. Moriarty, utilizza un codice per comunicare con i propri sottoposti e/o per appuntarsi i piani dei suoi crimini.



    "The message requires a public key, an integer p. From each number p, one can build a sequence of numbers, the Fibonacci-p numbers, denoted Fp. The sequence is defined by Fp(n) = Fp(n – 1) + Fp(n – p –1), with Fp(0) = 1 and Fp(n) = 0, n < 0, and can be created by summing along the pth diagonal of Pascal’s triangle. For p = 0, we recover the powers of 2 (horizontal lines on the Pascal triangle), whereas p = 1 corresponds to the classic Fibonacci sequence (first diagonal in the Pascal triangle)."




    Praticamente, data una chiave pubblica "p", è possibile creare una sequenza di numeri simile a quella di Fibonacci, chiamata "Fp". La formula è data da:




    Fp(n) = Fp(n – 1) + Fp(n – p –1)




    dove n è un numero da 1 in poi.

    Ma ci sono certe eccezioni: se il valore dentro Fp o Fp è compreso fra 0 e p (o uguale a uno dei due valori), esso prende il valore di 1, mentre se minore di 0 sarà uguale a 0




    Ex.: Fp(3) con p= 3 => Fp(3-1)+Fp(3 - 3 - 1) = Fp(2) + Fp(-1) = 1+0 = 1

    Ex.: Fp(4) con p= 3 => Fp(4-1)+Fp(4 - 3 - 1) = Fp(3) + Fp(0) = 1+1 = 2




    In caso non ci fosse questa eccezione Fp o Fp prenderebbero i valori rispettivamente della Fp(n) con dove n è il loro argomento: per esempio se Fp(8 ) si va a prendere Fp con n = 8




    Proviamo a considerare Fp con p = 3




    n:1 Fp(1-1)+Fp(1 - 3 - 1) = Fp(0) + Fp(-3) = 1+0 = 1

    n:2 Fp(2-1)+Fp(2 - 3 - 1) = Fp(1) + Fp(-2) = 1+0 = 1

    n:3 Fp(3-1)+Fp(3 - 3 - 1) = Fp(2) + Fp(-1) = 1+0 = 1

    n:4 Fp(4-1)+Fp(4 - 3 - 1) = Fp(3) + Fp(0) = 1+1 = 2

    n:5 Fp(5-1)+Fp(5 - 3 - 1) = Fp(4) + Fp(1) = 2+1 = 3

    n:6 Fp(6-1)+Fp(6 - 3 - 1) = Fp(5) + Fp(2) = 3+1 = 4

    n:7 Fp(7-1)+Fp(7 - 3 - 1) = Fp(6) + Fp(3) = 4+1 = 5

    n:8 Fp(8-1)+Fp(8 - 3 - 1) = Fp(7) + Fp(4) = 5+2 = 7

    n:9 Fp(9-1)+Fp(9 - 3 - 1) = Fp(8 )+ Fp(5) = 7+3 = 10







    Credo di essere più o meno arrivato fino al punto in cui l'argomento di Fp è uguale al p (in quanto si assiste ad un semplice incremento di Fp), ma poi non saprei come poteri richiamare una Fp dato l'n... un'idea che mi è venuta in mente sarebbe rinominare Fp in Ftot o Fk, per poi richiare Fk di n (Per esempio Fk di 7 con p = 3 è 5), ma non saprei come continuare.

    Mi piacerebbe che risultasse un lavoro simile a:




    Per public key uguale a ... (il valore assegnato a p):

    Turno n : Fp

    Turno n+1: Fp

    Turno n+2: Fp




    Per public key uguale a 3

    Turno 1 : 1

    Turno 2 : 1

    ....

    Turno 7 : 5




    Siccome sono alle prime armi con Python (in classe ne abbiamo solo accennato e non saprei come muovermi) vi dispiace inoltre dare un'occhiata al mio lavoro fin a questo momento? Grazie e spero di essere stato comprensibile (lo so, è abbastanza confuso come ragionamento, ma lo trovo molto affascinante) :)