giovedì 8 dicembre 2011

Il triangolo di tartaglia e bash

Fuori pioveva così ho "preso" until e ho creato uno script che genera il triangolo di Tartaglia (o di Niccolò Fontana o di Pascal o di Kayyam). Per la cronaca, avrei potuto usare anche for o while. Certo, con python è più semplice (vero Juhan?); con bash, leggermente di meno. :)


Eccolo.

#!/bin/bash
#bit3lux
n=1
until [ $n -ge 13 ]; do
      n=$((n+1))
      x=1
      echo -n  "$x "
      k=1
      until [ $k -ge $n ]; do
            y=$(echo "$x*($n-$k)/$k" | bc)
            k=$((k+1))
            echo -n "$y "
            x=$y
            done
echo ""
done
exit 0


Come al solito, basta salvare lo script su un file di testo, renderlo eseguibile con

$ chmod +x tart.sh

ed eseguirlo

$ ./tart.sh

Dovrebbe venire fuori qualcosa del genere :)

bit3lux@archbang Scrivania]$ ./tart.sh

1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1


Sicuramente si può fare di meglio. Ogni vostra proposta è cosa buona e giusta :)

Se domani ho un pò di tempo, mi cimento con i numeri di Fibonacci.

Il Triangolo di tartaglia su wikipedia (qui)

Ciao :)


4 commenti:

  1. Mi sembra perfetto così.
    A meno che uno voglia esagerare e riscrivere la riga
    y=$(echo "$x*($n-$k)/$k" | bc)
    senza usare bc.
    Non so bene se sia possibile, bisognerebbe provare qualcosa come $((espr)), come hai fatto sopra. Ripeto: non ho provato e non so se funziona; e sono troppo cotto per mettermi a litigare con la shell.

    RispondiElimina
  2. Ma certo, la possiamo sostituire con quest'altra:

    y=$[$x*($n-$k)/$k]

    RispondiElimina
  3. Domani spero di fare la fibonacci sequence! Eventualmente busserò alla tua porta :))

    RispondiElimina