Έχουν δημοσιευτεί Σάββατο, 2 Φεβρουαρίου 2008 1:30 μμ από το μέλος PALLADIN

Project Euler

Το Project Euler, είναι ένα πολύ ενδιαφέρον site για τους φίλους των μαθηματικών, που όμως διαθέτουν μια κλίση προς το coding.

Όπως διαβάζω στο site "Project Euler exists το encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics."
Τα προβλήματα ποικίλλουν σε δυσκολία, κάποια είναι brute force oriented, ενώ άλλα χρειάζονται την μαθηματική κομψότητα για να μειώσουν το search space. Τα πιο εύκολα είναι τα κλασικά brute force (είναι η αδυναμία μου...elegant brute force προγράμματα)

Ένα κλασικό παράδειγμα είναι να βρούμε Πυθαγόρειες τριάδες
Σε Haskell   

[ (a, b, c) | a <- [ 1 .. n ], b <- [ a + 1 .. n ], c <- [ b + 1 .. n ], (a * a) + (b * b) == (c * c) ]

και για τους φίλους της C#

var triples =  from a in Enumerable.Range(1, n)
               from b in Enumerable.Range(a + 1, n)
               from c in Enumerable.Range(b + 1, n)
               where (a * a) + (b * b) == c * c
               select new { a, b, c };

Παρατηρώντας τις δυο υλοποιήσεις, συνειδητοποιώ την εντυπωσιακή ομοιότητα... πως φαίνεται ότι ο άνθρωπος που σχεδίασε τα LINQ comprehensions έχει Haskell background... Δείξε μου τον κώδικά σου, να σου πω ποιός είσαι Smile
 

Share


Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

 

skynyrd έγραψε:

Εγώ το θεωρώ ένα ενδιαφέρον site για προγραμματιστές με κλίση προς τα μαθηματικά!

Haskell rules!!!

Φεβρουαρίου 2, 2008 3:32 μμ
 

panos έγραψε:

Δεν είμαι πολύ καλός στην LINQ, αλλά το

from b in Enumerable.Range(a + 1, n) δεν παράγει n αντικείμενα ξεκινώντας από το a+1?

Αντίθετα στην haskell το [a+1..n] παράγει αντικείμενα από το α+1 εώς το n (πλήθος n-a)?

Απριλίου 28, 2008 4:33 μμ
 

PALLADIN έγραψε:

Καλησπέρα φιλε μου...

Ναι, βασικά υπάρχει ενα "μικρό" θεματάκι με την  Enumerable.Range, και για αυτό το λόγο έχω φτιάξει ένα απλό (from.To(to)) extension method.

public static IEnumerable<int> To(this int from, int to)

{

 for (int i = from; i <= to; i++)

    yield return i;

}

from b in (a + 1).To(n)

Απριλίου 29, 2008 1:47 πμ
 

Aggelos Biboudis έγραψε:

My new F# testbed :)

Δεκεμβρίου 23, 2009 3:27 μμ

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
προαιρετικό
απαιτούμενο
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image