FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Allgemeines

Project Euler

Project Euler 2007-12-04 18:31
Lazy
Vielleichts hats schonmal jemand geposted, aber ich habs heute erst entdeckt:

http://projecteuler.net/

Sind mehrere mathematische Programmieraufgaben, z.T. recht anspruchsvoll. Löst man eine Aufgabe bekommt man dafür Punkte, und ein Thread im Forum zu dieser Aufgabe wird freigesschaltet. Je weniger Leute die Aufgabe bisher gelöst haben, desto mehr Punkte bekommt man.
Versuch mich gerade an Aufgabe Nr. 165 "Intersections". Klappt aber noch nicht so ganz.

RE: Project Euler 2007-12-06 12:58
Anonymer User
Wieso kann man denn da nicht einfach nacheinander alle Schnitte ausrechnen
und in einem Baum ablegen (so dass doppelte nicht mehr aufgenommen werden)?
Dann muss man ca. 5000^2=25 Mio Schnitte ausrechnen, das ist doch machbar,
oder wäre das zu aufwendig?

(Und das Berechnen der Schnitte ist doch mit dem Lösen eines
linearen Gleichungssystems getan…)

RE: Project Euler 2007-12-06 18:22
Anonymer User
Rofl! Obwohl unter den 25, die alles gelöst haben, C++ die dominante Sprache ist, programmiert der 1. mit Java und der 2. mit Python! Und es ist sogar mehrmals Haskell zu finden! Irre.

RE: Project Euler 2007-12-06 18:44
Fred
Was ist daran irre?

RE: Project Euler 2007-12-06 19:42
Popcorn
Was ist daran irre?
Ich finde es ja schon irre, sich mit Mathematik ODER funktionaler Programmierung zu beschäftigen. Aber noch irrer, als beides zusammen zu tun - finde ich - ist zu fragen, was daran irre ist! [24]

RE: Project Euler 2007-12-06 20:06
Lazy
(Und das Berechnen der Schnitte ist doch mit dem Lösen eines
linearen Gleichungssystems getan…)

Die Segmente sind keine Geraden.
Aber n ähnlichen Ansatz hab ich auch. Ich verlängere einfach die Segmente zu Geraden und schau ob sie die Geraden anderer Segmente schneiden. Wenn ja, überprüf ich ob der Schnittpunkt auf den Segmenten liegt. Mein Ergebnis ist: 1710231 echte innere Schnittpunkte. Ist aber leider falsch. Hab aber keine Ahnung was ich falsch mache.

RE: Project Euler 2007-12-07 00:50
Anonymer User
(Und das Berechnen der Schnitte ist doch mit dem Lösen eines
linearen Gleichungssystems getan…)

Die Segmente sind keine Geraden.

Ja, schon klar, man muss natürlich noch gucken, ob die Lösung des
LGS ggf. die Randbedingung erfüllt, aber das ist ja dann auch nicht
schwierig. Ehrlich gesagt sehe ich wirklich nicht, warum die Aufgabe
schwierig ist. Vielleicht übersehe ich ja was… (Performance?)
Vielleicht ist die Schwierigkeit, die ganzen Formeln (Lösungsformeln
für LGS) fehlerfrei in ein Programm zu tippen?

RE: Project Euler 2007-12-07 13:26
Anonymer User
Mein Ergebnis ist: 1710231 echte innere Schnittpunkte. Ist aber leider falsch. Hab aber keine Ahnung was ich falsch mache.

Hmm, vielleicht Rundungsfehler? Vergleiche von floating-point-Zahlen sind immer sehr heikel.
Wahrscheinlich soll man hier drauf kommen, dass die Schnittpunkte als Lösungen von LGS mit
rationalen Koeffizienten wieder rationale Koordinaten haben und man sich daher auf Integer-
Arithmetik beschränken kann um Rundungsfehler auszuschließen.

RE: Project Euler 2007-12-07 23:24
Anonymer User
"students for whom the basic curriculum is not feeding their hunger to learn"

Lazy mein Bester, komm mal lieber zu deinen Vorlesungen, da kannst deinen Hunger stillen
:)…

dein _-_-M.s.-_-_

RE: Project Euler 2010-01-04 00:38
Fred
Problem 1:
multiplesOf n = sum [0,n..999] solution = multiplesOf 3 + multiplesOf 5 - multiplesOf 15
Problem 2:
fibs = 0 : 1 : zipWith (+) fibs (tail fibs) everyThird (a:b:c:rest) = a : everyThird rest solution = sum . takeWhile (<= 4000000) . everyThird $ fibs