mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-28 07:21:07 +00:00
267b5eff40
* Added doctest and more explanation about Dijkstra execution. * tests were not passing with python2 due to missing __init__.py file at number_theory folder * Removed the dot at the beginning of the imported modules names because 'python3 -m doctest -v data_structures/hashing/*.py' and 'python3 -m doctest -v data_structures/stacks/*.py' were failing not finding hash_table.py and stack.py modules. * Moved global code to main scope and added doctest for project euler problems 1 to 14. * Added test case for negative input. * Changed N variable to do not use end of line scape because in case there is a space after it the script will break making it much more error prone. * Added problems description and doctests to the ones that were missing. Limited line length to 79 and executed python black over all scripts. * Changed the way files are loaded to support pytest call. * Added __init__.py to problems to make them modules and allow pytest execution. * Added project_euler folder to test units execution * Changed 'os.path.split(os.path.realpath(__file__))' to 'os.path.dirname()'
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
# -*- coding: latin-1 -*-
|
||
"""
|
||
Name scores
|
||
Problem 22
|
||
|
||
Using names.txt (right click and 'Save Link/Target As...'), a 46K text file
|
||
containing over five-thousand first names, begin by sorting it into
|
||
alphabetical order. Then working out the alphabetical value for each name,
|
||
multiply this value by its alphabetical position in the list to obtain a name
|
||
score.
|
||
|
||
For example, when the list is sorted into alphabetical order, COLIN, which is
|
||
worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would
|
||
obtain a score of 938 × 53 = 49714.
|
||
|
||
What is the total of all the name scores in the file?
|
||
"""
|
||
import os
|
||
|
||
|
||
try:
|
||
xrange # Python 2
|
||
except NameError:
|
||
xrange = range # Python 3
|
||
|
||
|
||
def solution():
|
||
"""Returns the total of all the name scores in the file.
|
||
|
||
>>> solution()
|
||
871198282
|
||
"""
|
||
with open(os.path.dirname(__file__) + "/p022_names.txt") as file:
|
||
names = str(file.readlines()[0])
|
||
names = names.replace('"', "").split(",")
|
||
|
||
names.sort()
|
||
|
||
name_score = 0
|
||
total_score = 0
|
||
|
||
for i, name in enumerate(names):
|
||
for letter in name:
|
||
name_score += ord(letter) - 64
|
||
|
||
total_score += (i + 1) * name_score
|
||
name_score = 0
|
||
return total_score
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print(solution())
|