Πριν λίγες μέρες ρώτησε κάποιος πως με την python θα βρει τους αριθμούς harshad
en.wikipedia.org/wiki/Harshad_number στο διάστημα 1-1000,
και αφού διάβαζα πρόσφατα για map reduce filter κλπ έφτιαξα μια λύση και την μοιράζομαι εδώ μαζί σας.
Το πρώτο πράγμα που έχουμε να κάνουμε είναι να φιλτράρουμε τους αριθμούς που θέλουμε και να κρατήσουμε τους harshad τι καλύτερο λοιπόν
my_data=filter(is_harshad, range(1,1001))
πρέπει να γράψουμε τι κάνει η is_harshad
def is_harshad(a):
return not a%add_digits(a)#εφόσον το a%add_digits(a) θα είναι 0 (default False) το not
θα είναι True μπορούμε εναλλακτικά να γράψουμε return a%add_digits(a)==0
και τέλος η add_digits
def add_digits(a):
return sum(int(i) for i in str(a))
Με λίγες γραμμές κώδικα χωρίς πολλά if και for παίρνουμε τη λύση μας.