3 γραμμές;;;
30 θες να πεις έτσι..;
Συντονιστής: konnn



tot = 0
for i, name in enumerate(sorted(names)):
for char in name:
tot += (i + 1) * (1 + ord(char) - ord("A"))
print tot
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 αλλά το άφησα για να είναι πιο κοντά στο πρωτότυπο.
gcc -O3 euler22.c -o euler22time -p euler22
pmav99 έγραψε:ok περίμενε. Θα το τρέξω και με pypyγια να είναι ακόμη πιο γρήγορο.
Off topic:
linux δεν έχεις?

real 0m0.058s
user 0m0.050s
sys 0m0.007sreal 0m0.056s
user 0m0.043s
sys 0m0.010sreal 0m0.054s
user 0m0.040s
sys 0m0.010sreal 0m0.063s
user 0m0.053s
sys 0m0.007sreal 0m0.078s
user 0m0.070s
sys 0m0.007s

real 0m0.073s
user 0m0.070s
sys 0m0.000s
