git.fiddlerwoaroof.com
Browse code

feat: add working partial_sort

Ed L authored on 16/03/2020 18:36:10
Showing 1 changed files
... ...
@@ -6,16 +6,20 @@ import heapq
6 6
 def file_iter(fil):
7 7
     the_line = 0
8 8
     while the_line != '':
9
-        the_line = fil.readline()
10
-        yield the_line
9
+        next_line = fil.readline().strip()
10
+        if next_line != '':
11
+            # yield int(next_line)
12
+            yield next_line
13
+        the_line = next_line
11 14
 
12 15
 def sorter(gen, len_):
13 16
     the_buffer = []
14 17
 
15 18
     for the_line in gen:
16
-        # print("pushing: ", the_line, end='')
19
+        # print("pushing: ", the_line)
17 20
         heapq.heappush(the_buffer, the_line)
18 21
         if len(the_buffer) == len_:
22
+            # print("buffer_before: ", repr(the_buffer))
19 23
             yield heapq.heappop(the_buffer)
20 24
         # print("buffer_after: ", repr(the_buffer))
21 25
 
... ...
@@ -26,5 +30,5 @@ def sorter(gen, len_):
26 30
 
27 31
 if __name__ == '__main__':
28 32
     import sys
29
-    for line in sorter(file_iter(sys.stdin), 10):
30
-        print(line, end='')
33
+    for line in sorter(file_iter(sys.stdin), int(sys.argv[1])):
34
+        print(line)