Precisione iii

Corto circuito

Questo post è un bellissimo corto circuito: conosco Orlando perché è un amico del GuIT che tra l’altro ho conosciuto l’anno scorso di persona al GuIT meeting di Napoli. E proprio Orlando ha commentato il post di Juhan Precisione su questo stesso blog, di qualche giorno fa su alcuni calcoli.
Questo dimostra che gli appassionati non vedono l’ora di scoprire nuove cose sul proprio argomento preferito.

Chiudo il circuito

Eccomi dunque a chiudere il circuito informatico presentrando un programma in Go che esegue le stesse operazioni eseguite in awk ed in Fortran:

package main

import (
    "fmt"
    "math/big"
)

func main() {
    s, u := big.NewInt(2), big.NewInt(1)
    for i := 1; i <= 10; i++ {
        // a = s - 1
        a := big.NewInt(0).Set(s).Sub(s, u)
        // s*a + 1 = s*(s - 1) + 1
        s.Mul(a, s).Add(s, u)
        fmt.Println(i, s)
    }
}

Tecnicamente, vorrei farvi notare che è possibile in Go concatenare le chiamate dei metodi come per esempio si legge alla riga 12 del codice sorgente, se il metodo stesso ritorna lo stesso oggetto.

Ho utilizzato il pacchetto dei grandi numeri big necessario perché dopo la sesta iterazione i numeri superano il limite massimo del tipo int64. Certo avrei potuto utilizzare il tipo uint64 ma potevo chiudere il circuito soltanto esagerando alla grande portando il ciclo fino a 10 iterazioni… ecco di seguito il risultato:

1 3
2 7
3 43
4 1807
5 3263443
6 10650056950807
7 113423713055421844361000443
8 12864938683278671740537145998360961546653259485195807
9 165506647324519964198468195444439180017513152706377497841851388766535868639572406808911988131737645185443
10 27392450308603031423410234291674686281194364367580914627947367941608692026226993634332118404582438634929548737283992369758487974306317730580753883429460344956410077034761330476016739454649828385541500213920807

A questo punto, ci sta propio bene un
Alla Prossima!
R.

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • juhan  Il 23 settembre 2013 alle 11:37

    Ottimo Robitex!
    In effetti c’è una domanda (sempre la solita) che mi perseguita dal primo commento di Orlando: che linguaggio usate/si usa/dovete usare?
    Mi sa che dovremo riparlarne 😉

    • robitex  Il 23 settembre 2013 alle 11:57

      Ciao Juhan, Naturalmente dipende in modo essenziale da cosa si vuole ottenere ed in quale ambito professionale ci si trova, ma tra i fattori di scelta di un linguaggio io aggiungo sempre il divertimento e la voglia di imparare cose nuove. In ambito lavorativo io oggi uso LaTeX per la documentazione, Lua o — sempre più — Go per l’elaborazione e SQLite o PostgreSQL per i dati, con l’obiettivo di risolvere il problema presto, bene e in modo affidabile. Ovvio che sono disponibile a riparlarne assieme come vuoi e quando vuoi. Un saluto. R.

      Il giorno 23 settembre 2013 11:37, Ok, panico

      • juhan  Il 23 settembre 2013 alle 12:51

        Non subito ma comincio a pensare a una bozza; poi dipenderà dai commenti. O forse è l’occazione per provare un sondaggio.

      • robitex  Il 23 settembre 2013 alle 13:01

        Ok (panico) d’accordo.
        R

  • Orlando  Il 23 settembre 2013 alle 17:40

    Roberto, che bello sentirti anche qui :-). Eh sì, le passioni sono davvero tante. Credo che al 99.9% di non riuscire a venire al prossimo GuIT_meeting, ma mai dire mai.

    E intanto aspetto il sondaggio 🙂

    A presto,
    Orlando

    • robitex  Il 23 settembre 2013 alle 19:21

      Figurati io nel ritrovarti su Ok, panico.
      Speriamo tu possa venire a Roma…
      Ciao.

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.