domenica 29 agosto 2010

nuova applicazione su PieroTofy.it!

Postata nuova applicazione su PieroTofy.it

Ho creato mathPlotting, un piccolo progetto che permette all'utente di
creare grafici di funzioni definite dall'utente.

Si può scaricare da qui mathPlotting.

Le funzioni vengono definite come
nome(parametro)=espressione

In via di sviluppo l'inserimento di funzioni matematiche e trigonometriche e una nuova interfaccia grafica creata con Tkinter.

Stay tuned!

mercoledì 25 agosto 2010

Membro della PieroTofy Community!

Ciao a tutti, ora sono diventato un membro della PieroTofy Community con il profilo Delta!

Venite tutti! Non ve ne pentirete!!!


lunedì 16 agosto 2010

esercizio 6 Euler Project Python

hi all!
oggi voglio mostrare al grande pubblico vari modi per risolvere l'esercizio 6 dell'Euler Project.

problema:
------------------------------------------------------------------------------------------

The sum of the squares of the first ten natural numbers is,

12 + 22 + ... + 102 = 385

The square of the sum of the first ten natural numbers is,

(1 + 2 + ... + 10)2 = 552 = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

---------------------------------------------------------------------------------------------------------

beh, si vede, è molto semplice, sia in Python che in C++


codice Python

-------------------------------------------------------------------------------------

#!/usr/bin/env python

sum_square=lambda n: sum([i**2 for i in xrange(n+1)])

square_sum=lambda n: ((n*(n+1))/2)**2

problem_6=lambda n: square_sum(n)-sum_square(n)

#in alternativa... versione ricorsiva!

sum_square_rec=lambda number, actual=0: return actual==number and number**2 or (actual**2)+sum_square(number, actual+1)

square_sum_rec=lambda number, actual=0: return (actual==number and number) or (actual==0 and square_sum(number, actual+1)**2) or actual+square_sum(number, actual+1)

-------------------------------------------------------------------------------------

Spieghiamo ora il codice.

sum_square: questa semplice funzione fa la somma di tutti gli elementi di una list comprehension, nella quale ogni elemento è il quadrato di un numero che va da 0 a n+1

square_sum: questa semplice funzione ricava la somma di tutti i numeri da 1 a n compreso tramite una semplice formula: (n*n+1)/2. Ci vuole poco poi per farne il quadrato.

sum_square_rec: questa semplice funzione ha come caso base il confronto tra actual e number, se sono uguali viene restituito number elevato alla seconda, altrimenti si richiama la funzione sommando actual alla seconda.

square_sum_rec: questa semplice funzione ha 2 casi base:

  • se actual==number: viene restituito number
  • se actual==0: viene restituito il risultato della funzione con actual aumentato di 1 elevato alla seconda. questo caso base serve per poter avere un'elevazione a potenza della somma di tutti i numeri.
  • caso normale: si somma actual al risultato della funzione con actual aumentato di 1

appare molto semplice, no? ecco la potenza del Python!

stay tuned!

mercoledì 11 agosto 2010