Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.56 KB | None | 0 0
  1. import time
  2. import sys
  3. from collections import defaultdict
  4.  
  5.  
  6. def read_phrases(filename):
  7.     lines = [line.rstrip('\n') for line in open(filename, encoding='utf-8')]
  8.     return lines
  9.  
  10.  
  11. def create_points_map():
  12.     points_map = defaultdict(int)
  13.     for letter in "aeinorswz":
  14.         points_map.update({letter: 1})
  15.     for letter in "cdklmpty":
  16.             points_map.update({letter: 2})
  17.     for letter in "bghjłu":
  18.             points_map.update({letter: 3})
  19.     for letter in "ąęfóśż":
  20.         points_map.update({letter: 5})
  21.     points_map.update({'ć': 6})
  22.     points_map.update({'ń': 7})
  23.     points_map.update({'ź': 9})
  24.  
  25.     return points_map
  26.  
  27.  
  28. def search_phrases(phrases, char_dict, points_map):
  29.     points_dict = {}
  30.     points = 0
  31.  
  32.     for phrase in phrases:
  33.         for char, amount in char_dict.items():
  34.             number = phrase.count(char)
  35.             if number <= amount:
  36.                 points += number * points_map[char]
  37.             else:
  38.                 points += amount * points_map[char]
  39.         points_dict[phrase] = points
  40.         points = 0
  41.  
  42.     return points_dict
  43.  
  44.  
  45. def default_char_dict(char_seq):
  46.     char_dict = {char: char_seq.count(char) for char in char_seq}
  47.     return char_dict
  48.  
  49.  
  50. def count_max_points_for_phrase(phrase, points_map):
  51.     points = 0
  52.     for char in phrase:
  53.         if char in points_map:
  54.             points += points_map[char]
  55.     return points
  56.  
  57.  
  58. def count_max_points_for_chars(chars, points_map):
  59.     points = 0
  60.     for char in chars:
  61.         if char in points_map:
  62.             points += points_map[char]
  63.     return points
  64.  
  65.  
  66. def get_best_answer(points_dict, points_map, char_seq):
  67.     best = 0
  68.     for v in points_dict.values():
  69.         if v > best:
  70.             best = v
  71.     for k, v in points_dict.items():
  72.         if v == best:
  73.             print("Fraza: ", k, '\nPunkty: ', points_dict[k], '/', count_max_points_for_chars(char_seq, points_map))
  74.  
  75.  
  76. #niwpizdeniwoko
  77. def main():
  78.     phrases = read_phrases('data.txt')
  79.     points_map = create_points_map()
  80.     # while True:
  81.     # char_seq = input('Podaj litery, jedna po drugiej, bez spacji i innych znaków\n> ')
  82.     # print(('Podaj litery, jedna po drugiej, bez spacji i innych znaków\n> '))
  83.     char_seq = sys.argv[1]
  84.  
  85.     t0 = time.clock()
  86.  
  87.     char_dict = default_char_dict(char_seq)
  88.     points_dict = search_phrases(phrases, char_dict, points_map)
  89.     get_best_answer(points_dict, points_map, char_seq)
  90.  
  91.     t1 = time.clock()
  92.     print("Czas: %.5f" % ((t1 - t0)*1000.0), "ms\n")
  93.  
  94.  
  95. if __name__ == "__main__":
  96.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement