Project Euler: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(25 versioni intermedie di 22 utenti non mostrate)
Riga 1:
{{O|internet|novembre 2012}}
{{Sito web
| nome = Project Euler
| url = [http://projecteuler.net/ projecteuler.net]
| commerciale = No
| tipo = Sito di "[[problem solving]]"
Riga 9:
| registrazione = libera
| stato corrente = Attivo
| screenshot = [[File:Leonhard Euler.jpg|Euler|125px]]
}}
 
'''Project Euler''' (anche conosciuto anche in [[italiaItalia]] come '''Progetto [[Eulero]]''') è un sito dedicato a una serie di problemi matematici da risolvere realizzando dei programmi per computer. Il progetto ha coinvolto adulti e studenti interessati alla [[matematica]] e alla [[Programmazione (informatica)|programmazione]] e include molteplici problemi di varia difficoltà, ognuno di essi risolvibile in meno di un minuto utilizzando un algoritmo efficiente su un computer di media potenza.
 
Vengono inoltre proposti nuovi problemi periodicamente sin dalla creazione del progetto, avvenuta nel [[2001]]. Col sito, è stato creato anche un forum dedicato dove l'utente può discutere degli esercizi una volta risolti, infatti è permesso accedere al [[Thread (comunicazione online)|thread]] soltanto dopo aver risolto l'esercizio corrispondente. Oltre alla pagina dedicata del forum, una volta risolto un dato problema è spessoa volte disponibile anche una soluzione proposta dai creatori del sito con una o più varianti che riassumono le versioni più efficienti che si potevano trovare per risolvere l'esercizio.
 
Il sito consta di 362822 problemi in data 1224 dicembre 20112022.
È inoltre accessibile per gli utenti registrati anche una sezione che ordina gli utenti per il numero di problemi risolti. Sono definiti 14 livelli di punteggio, dove ognuno di essi scatta ogni 25 problemi risolti. Si parte dal livello 0 (fino a 25 problemi risolti) fino ad arrivare al 13° (325+).
Vi sono inoltre 21 piccoli premi intermedi ("Decathlete": risolvi 10 problemi consecutivi, "Centurion": risolvi 100 problemi consecutivi, "One In A Hundred": sii tra i primi 100 a risolvere un problema, e così via).
 
Il sito consta di 362 problemi in data 12 dicembre 2011.
 
== Esempio di un problema e la sua risoluzione ==
 
Il primo problema del Project Euler è:
<blockquote>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Riga 47 ⟶ 43:
</pre>
[[Python]]:
<sourcesyntaxhighlight lang="python">
print sum(x for x in xrange(1, 1000) if x%3==0 or x%5==0)
</syntaxhighlight>
</source>
 
[[C++]]:
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Riga 63 ⟶ 59:
return 0;
}
</syntaxhighlight>
</source>
 
Per i problemi più complicati, diventa importante trovare un algoritmo efficiente. Per questo problema, possiamo ridurre di molto i calcoli utilizzando il [[principio di inclusione ed -esclusione]] e una [[sommatoria]].
 
: <math>sum(n) = \sum_{i=1}^{\left \lfloor \frac{n}{3} \right \rfloor} 3i + \sum_{i=1}^{\left \lfloor \frac{n}{5} \right \rfloor} 5i - \sum_{i=1}^{\left \lfloor \frac{n}{15} \right \rfloor} 15i</math>
Riga 72 ⟶ 68:
 
Implementazione in python:
<sourcesyntaxhighlight lang="python">
def sum1toN(n):
return n * (n + 1) / 2
Riga 80 ⟶ 76:
 
sumMultiples(1000, 3) + sumMultiples(1000, 5) - sumMultiples(1000, 15)
</syntaxhighlight>
</source>
 
Nella notazione [[O-grande]], l'algoritmo a forza bruta è O(n) e l'algoritmo efficiente è O(1) (assumendo costante il tempo per le operazioni aritmetiche).
 
== Note ==
<references/>
 
== Voci correlate ==
 
* [[Eulero]]
 
== NoteCollegamenti esterni ==
==* {{Collegamenti esterni ==}}
*[{{cita web|http://euleres.zzl.org/ |EulerES : Project Euler in spagnolo]}}
*{{cita web | 1 = http://eulerdz.toile-libre.org/ | 2 = EulerDZ : Project Euler in francese | accesso = 8 maggio 2010 | urlarchivio = https://web.archive.org/web/20100522061217/http://eulerdz.toile-libre.org/ | dataarchivio = 22 maggio 2010 | urlmorto = sì }}
 
{{Portale|Matematica}}
<references/>
 
== Collegamenti esterni ==
*[http://projecteuler.net/ Home page]
*[http://euleres.zzl.org/ EulerES : Project Euler in spagnolo]
*[http://eulerdz.toile-libre.org/ EulerDZ : Project Euler in francese]
 
[[Categoria:Competizioni matematiche]]
[[Categoria:Iniziative web per la matematica]]
[[Categoria:Applicazioni dell'informaticaweb]]
 
[[en:Project Euler]]
[[fa:پروژه اویلر]]
[[fr:Project Euler]]
[[he:פרויקט אוילר]]
[[ko:오일러 프로젝트]]
[[pl:Projekt Euler]]
[[sv:Project Euler]]
[[ta:ஆய்லர் திட்டம்]]
[[tr:Project Euler]]
[[zh:欧拉计划]]