Advertisement
Guest User

Untitled

a guest
Sep 17th, 2020
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.95 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import re
  3.  
  4. names = {}
  5. for i in range(1880, 2020):
  6.   f = open('yob' + str(i) + '.txt')
  7.   for line in f:
  8.     fields = line.lower().strip().split(',')
  9.     if fields[0] not in names:
  10.       names[fields[0]] = 0
  11.     names[fields[0]] = names[fields[0]] + int(fields[2])
  12.  
  13. syls = [{}, {}]
  14. for name in names:
  15.   name_syls = re.findall('[bcdfghjklmnpqrstvwxz]+[aeiouy]+', name)
  16.   for i, syl in enumerate(name_syls):
  17.     pos = int(i == 0 and name.startswith(syl))
  18.     if syl not in syls[pos]:
  19.       syls[pos][syl] = 0
  20.     syls[pos][syl] += names[name]
  21.  
  22. ranked = [sorted(syls[p].keys(), key=lambda s: -syls[p][s]) for p in range(2)]
  23.  
  24. scores = []
  25. for syl in syls[0]:
  26.   if syl in syls[1]:
  27.     rank = max([ranked[p].index(syl) for p in range(2)])
  28.     scores.append([rank, syl])
  29.  
  30. cv = [c+v for c in 'bcdfghjklmnprstvwxz' for v in 'aeiouy']
  31.  
  32. final = cv + [x[1] for x in sorted(scores) if len(x[1])==3][:(256-len(cv))]
  33.  
  34. print(final)
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement