Δημοσιεύτηκε: 06 Αύγ 2011, 23:24
pmav99 έγραψε:Δουλεύουν.
Το πρώτο είναι περίπου ισοδύναμο (αλλά πιο γρήγορο) με αυτό:
- Κώδικας: Επιλογή όλων
tot = 0
for i, name in enumerate(sorted(names)):
for char in name:
tot += (i + 1) * (1 + ord(char) - ord("A"))
print tot
To '1 - ord("Α")' είναι σταθερή ποσότητα (=64) οπότε δε χρειάζεται να υπολογίζεται μέσα στο loop αλλά το άφησα για να είναι πιο κοντά στο πρωτότυπο.
Αν η python μπορεί να βγάλει ανεξάρτητα εκτελέσιμα αρχεία, απλά από περιέργεια θα μπορούσες να κάνεις time -p τα παραπάνω με το εκτελέσιμο του κώδικα C που έχω δώσει στο ideone.com? Κατά προτίμηση εκείνου με τις λιγότερες συναρτήσεις.
Για να τα κάνεις compile, κι αν υποθέσουμε πως έχεις σώσει τον κώδικα ως "euler22.c", γράψε στο τερματικό σου:
- Κώδικας: Επιλογή όλων
gcc -O3 euler22.c -o euler22
και μετά:
- Κώδικας: Επιλογή όλων
time -p euler22
Προφανώς θα πρέπει να κάνεις το ίδιο και για το εκτελέσιμο της python.
Είμαι πολύ περίεργος να δω αν και πόση διαφορά υπάρχει σε ταχύτητα εκτέλεσης.