Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.22 KB | None | 0 0
  1. #@profile
  2. def foo():
  3.     from timeit import default_timer as timer
  4.     start = timer()
  5.     from operator import itemgetter
  6.     from more_itertools import locate
  7.     with open("output_text.txt", "w", encoding="utf") as f:
  8.         f.write("Begin\n")
  9.         start_1 = timer()
  10.         #with open("hidden_text.txt", "r", encoding="utf") as f2:
  11.         # open file, read lines
  12.         with open("input.txt", "r", encoding="utf") as f2:
  13.             end_1 = timer()
  14.             s = "Timer 0: " + str(end_1 - start_1)
  15.             f.write(s + "\n")
  16.             print(s)
  17.             start_1 = timer()
  18.             textlines = f2.readlines()
  19.             end_1 = timer()
  20.             s = "Timer 1: " + str(end_1 - start_1)
  21.             f.write(s + "\n")
  22.             print(s)
  23.  
  24.         #first, we need to sort this stuff.
  25.         #so somebody already posted a version where they read this directly into a sorted array. Which I might just steal at some point. Later.
  26.         start_1 = timer()
  27.         def getKey(item):
  28.             return (int(item[0]))
  29.         lines = []
  30.         for line in textlines:
  31.             lines.append(line.split(' # '))
  32.         lines = sorted(lines, key=getKey)
  33.         sorted_text = []
  34.         for index, line in lines:
  35.             sorted_text.append(line[:-1])
  36.         end_1 = timer()
  37.        
  38.         s = "Timer 2: " + str(end_1 - start_1)
  39.         f.write(s + "\n")
  40.         f.write("\n-----------------------\n")
  41.         print (s)
  42.         start_1 = timer()
  43.         # now we only need the words, not the line numbers
  44.         textblob = " ".join(sorted_text)
  45.         textblob.replace("\n", "")
  46.  
  47.         # and a list of the words
  48.         start_1 = timer()
  49.         textblob = textblob.strip()
  50.         end_1 = timer()
  51.         s = "Timer 3: " + str(end_1 - start_1)
  52.         f.write(s + "\n")
  53.         f.write("\n-----------------------\n")
  54.         print (s)
  55.         start_1 = timer()
  56.         words = textblob.split(" ")
  57.         end_1 = timer()
  58.         s = "Timer 4: " + str(end_1 - start_1)
  59.         f.write(s + "\n")
  60.         f.write("\n-----------------------\n")
  61.         print (s)
  62.         #finally, we have a list of all the words in the correct order
  63.         s = "Timer 5: " + str(end_1 - start_1)
  64.         f.write(s + "\n")
  65.         print (s)
  66.         f.write("\n-----------------------\n")
  67.  
  68.         start_1 = timer()
  69.         #now we count the occurence of all words
  70.         unique_words = set(words)
  71.         occurence = {}
  72.         for index, word in enumerate(unique_words):
  73.             occurence[word] = []
  74.         for index, word in enumerate(words):
  75.             occurence[word].append(index)
  76.         end_1 = timer()
  77.         s = "Timer 5: " + str(end_1 - start_1)
  78.         f.write(s + "\n")
  79.         f.write("\n-----------------------\n")
  80.         print (s)
  81.  
  82.         start_1 = timer()
  83.         resultspace = {}
  84.         for key, item in occurence.items():
  85.             if len(item) > 3:
  86.                 add = True
  87.                 last = item[1]
  88.                 interval = item[1] - item[0]
  89.                 for i in range(2, len(item)):
  90.                     if item[i] - item[i-1] != interval:
  91.                         add = False
  92.                 if add:
  93.                     print (key)
  94.                     resultspace[key] = (interval, item)
  95.         for key in resultspace:
  96.             interval = resultspace[key][0]
  97.             item = resultspace[key][1]
  98.             f.write(key + str(interval) + str(len(item)) + "\n")
  99.             result = []
  100.             for index in item:
  101.                 result.append(words[index + 1])
  102.             print ("Keyword: " + str(key))
  103.             print ("Interval: " + str(interval))
  104.             print("Result: " + " ".join(result))
  105.             f.write("Keyword: " + str(key))
  106.             f.write("Interval: " + str(interval))
  107.             f.write("Result: " + " ".join(result))
  108.                
  109.         s = "Timer 6: " + str(end_1 - start_1)
  110.         f.write(s + "\n")
  111.         f.write("\n-----------------------\n")
  112.         print (s)
  113.         end = timer()
  114.         s = "This took: " + str(end - start)
  115.         f.write(s + "\n")
  116.         print (s)
  117.         #input('Enter anything to close') #in case you want to leave the program running
  118.  
  119. if __name__ == '__main__':
  120.     foo()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement