
Matematik + computer -> stor underholdning
Denne er lidt off-topic, men alligevel værd at skrive om. Mange af jer læsere har en god viden om matematik og de fleste af jer hygger jer med at lave kode programmer selv, og passer den beskrivelse på dig så ved jeg godt hvor du skal bruge den kommende tid henne: http://projecteuler.net/.
"Project Euler" er en meget stor samling af matematiske opgaver, som beder om at du starter din Linux, FreeBSD eller (jeg diskriminerer ikke) Visual Studio på Windows op, Dels er det sjovt at gå i gang med - men illusterer også at nogle opgaver passer godt til script-sprog, andre til C/C++ - mens andre opgaver igen nok beder om andre sprog.
Et af de enklere eksempler er det 9. problem, som beder om at finde heltallene a,b og c, hvor a+b+c=1000 og a^2+b^2 = c^2. Tre minutters kodning og det problem er løst - men det er ingenlunde sådan det fortsætter 
Som en god ven beskrev det i går "Jeg forbander jer allesammen for at henlede min opmærksomhed på Project Euler" - citat fra #sslug på #EFnet 
Tak til #sslug for at henlede min opmærksom på dette sjove emne.
/pto
P.S. http://www.mathsfromouterspace.com/ er nu også sjov - ren matematik i den lettere ende (der er i øvrigt fejl i den ene opgave)....
Peter Toft er senior specialist hos Renesas Mobile og har blogget om open source og Linux siden Version2's begyndelse. Blogger også jævnligt om andre sjove teknologi-områder.
Follow @petertoftKommentarer (6)
Hej Peter
Therese har allerede haft det i bloggen:
http://www.version2.dk/artikel/11058-hjernegymnastik-for-programmoerer
:D
Ja, det er en dejlig side. Som ekstra udfordring kan man prøve at løse #29 med 2 <= a,b <= 100,000. Den naive løsning, hvor man regner alle værdierne ud kommer til at lave en liste med ca. 10^10 elementer (for ikke at tale om alle multiplikationerne...), så der skal lidt mere snedighed til. euler29(2,100000,2,100000) på min laptop gav svaret på ca. et minut og brugte aldrig over 20MB hukommelse.
Jeg tror at den er failed; #29 blev added i Oktober 2002.
Sp med mindre at din laptop er oldgammel, ville din løsning nok tage en god del over 1 minut dengang, og bryde Project Euler's "1-minute rule" (hvis det tager over 1 minut, er det temmelig sikkert ikke den optimale/tænkte løsning).
(Det skal lige siges at jeg ikke er nået så langt, er selv ved #15)
Læs, hvad jeg skrev igen. Det tog 1 minut at regne for problemstørrelsen 2-100000. Hvis jeg kommenterer de ekstra "for sjov" kald til euler29() ud og kører programmet, går det pænt stærkt:
time ./problem29.py
<output fra "print euler29(2,100,2,100)">
real 0m0.093s
user 0m0.044s
sys 0m0.000s
Og med 2-100000 problemet:
time ./problem29.py
<output fra "print euler29(2,100000,2,100000)">
real 0m48.344s
user 0m39.426s
sys 0m1.392s
1.73GHz Centrino 512MB RAM.

