Anar al contingut

Project Euler

De L'Enciclopèdia, la wikipedia en valencià
Archiu:Leonhard Euler.jpg
Project Euler

Project Euler (Proyecte Euler, cridat aixina pel matemàtic Leonhard Euler) és un lloc web dedicat a una série de problemes matemàtics dissenyats per a ser resolts per programes computacionals. El proyecte atrau a adults i a estudiants interessats en matemàtiques i programació informàtica. Des de la seua creació en 2001 per Colin Hughes, Project Euler ha guanyat notabilidad i popularitat internacional.[1] Inclou més de 700 problemes,[2] en un nou sent agregat cada fi de semana, llevat durant l'estiu. Els problemes varien de dificultat, pero tots són resolubles en menys d'un minut usant un algoritme eficient.[3] Un fórum específic per a cada pregunta pot ser visitat en acabant de que l'usuari haja respost correctament a una pregunta donada. Per a novembre de 2016, Project Euler va alcançar a 650 000 usuaris al voltant del món que han resolt a lo manco un problema.[4]

Els participants poden consultar el seu progrés per mig de guanys basats en el número de problemes resolts. Un nou guany és alcançat per cada 25 problemes resolts. Existixen premis especials per resoldre combinacions de problemes especials; per eixemple, hi ha un guany oferit per resoldre cinquanta problemes numerats com primers. També existix un nivell especial per a registrar guanys basats en els cinquanta primers usuaris que resolen problemes nous.[5]

Un subset de problemes de Project Euler va ser usat en un concurs de programació d'APL.[6] Hi ha 97 seqüències en l'Enciclopèdia Electrònica de Seqüències de Sancers (OEIS) referenciadas en problemes de Project Euler.[7]

Problemes i solucions d'eixemple

[editar | editar còdic]

El primer problema de Project Euler és:[8]


Encara que este problema és molt més simple que els tradicionals, servix per a ilustrar la gran diferència que un algoritme eficient fa. L'algoritme de força bruta examina cada número natural menor a 1000 i realisa una suma d'aquells que complixen estos requisits. Este método és senzill d'implementar, com s'indica en el següent pseudocódigo:

Set TOTAL to 0;
for NUM from 1 through 999 do
  if NUM mod 3 = 0 or if NUM mod 5 = 0 then
    add NUM to TOTAL;
output TOTAL

Per a problemes més difícils, es torna més important trobar un algoritme eficient. Per a este problema, podem reduir 1000 operacions a unes poques usant el principi d'inclusió-exclusió i usant una sumatoria de forma tancada:

sum3 o 5(n)=sum3(n)+sum5(n)sum15(n)sumk(n)=i=1n1kkii=1pki=k(p+1)p2

Ací, sumk(n) denota una suma de vàries k menors de n.

En una cota superior asintòtica, l'algoritme de força bruta és O(n) i l'algoritme eficient és O(1) (assumint temps constant d'operacions aritmètiques).

  1. James Somers. How I Failed, Failed, and Finally Succeeded at Learning How to Code - Technology, The Atlantic. Recuperate le 14 de decembre de 2013.
  2. «Project Euler (llista de problemes)». Consultat el 8 d'abril de 2022.
  3. «Project Euler - About». Consultat el 4 d'abril de 2008.
  4. Hughes, Colin. «About - Project Euler».
  5. «Project Euler (Notícies)». Consultat el 31 de març de 2015.
  6. «APL programming contest problem list». Consultat el 17 d'agost de 2014.
  7. «OEIS sequences referencing Project Euler problems». Consultat el 30 de maig de 2016.
  8. «Project Euler Problem 1». Project Euler. Consultat el 1 de març de 2017.

Referències

[editar | editar còdic]


Referències

[editar | editar còdic]