Project Euler again, this time Python. The problem is to sort a list of 5000 names alphabetically then give them a value. For example “COLIN” is 3 + 15 + 12 + 9 + 14 = 53 and is the 938th item – so its value is 49714 (53*938).
The biggest hurdle here is reading the file. It’s in one big blob of values wrapped in quotes and seperated by a comma.
def readFile(): with open("data.txt", "r") as file: # The data file is a list of names in quotes # seperated by a comma. The replace method # strips the quotes and the split seperates # by comma. names = file.read().replace('"','').split(",") return names def alphaValue(name): # The unicode value for lowercase a is 97 # but we want 1, hence the magic number! value = 0 for letter in name.lower(): value += (ord(letter) - 96) return value # Read the data file and sort it. names = sorted(readFile()) count = 0 position = 1 for name in names: count+=(alphaValue(name) * position) position+=1 print(count)