Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- def count(file):
- n = 0
- for char in file.read():
- if char == " ":
- n += 1
- n += 1
- return n
- def separate(file, n):
- separator = True
- b = open('C:/Users/chuxo/Desktop/b.txt', 'w')
- c = open('C:/Users/chuxo/Desktop/c.txt', 'w')
- space_num = 0
- for char in file.read():
- if char != " ":
- if separator:
- b.write(char)
- else:
- c.write(char)
- else:
- space_num += 1
- if separator:
- b.write(' ')
- if space_num == n:
- separator = False
- space_num = 0
- elif not separator:
- c.write(' ')
- if space_num == n:
- separator = True
- space_num = 0
- b.close()
- c.close()
- def sym_count(file):
- n = 0
- for char in file.read():
- n += 1
- return n
- def read(file, s_count, num_count, counter):
- string = ""
- for i in range(s_count):
- sym = file.read(1)
- if sym == '':
- break
- if sym != ' ':
- string = string + sym
- else:
- num_b = int(string)
- return num_b
- if counter == num_count:
- num_b = int(string)
- return num_b
- def compare(a, b, c, n):
- num_in_group_c = 0
- num_in_group_b = 0
- c_marker = True
- b_marker = True
- count_b = count(b)
- b.seek(0)
- sym_count_b = sym_count(b)
- b.seek(0)
- count_c = count(c)
- c.seek(0)
- sym_count_c = sym_count(c)
- c.seek(0)
- counter_b = 1
- counter_c = 1
- looper_b = count_b
- looper_c = count_c
- for i in range(looper_b):
- if b_marker:
- num_b = read(b, sym_count_b, count_b, counter_b)
- counter_b += 1
- for j in range(looper_c):
- if num_in_group_c == n:
- a.write(str(num_b) + " ")
- num_in_group_b += 1
- for k in range(num_in_group_b, n):
- a.write(str(read(b, sym_count_b, count_b, counter_b)) + " ")
- counter_b += 1
- looper_b -= 1
- num_in_group_b = 0
- num_in_group_c = 0
- b_marker = True
- c_marker = True
- break
- if num_in_group_b == n:
- a.write(str(num_c) + " ")
- num_in_group_c += 1
- for k in range(num_in_group_c, n):
- a.write(str(read(c, sym_count_c, count_c, counter_c)) + " ")
- counter_c += 1
- num_in_group_b = 0
- num_in_group_c = 0
- b_marker = True
- c_marker = True
- break
- if c_marker:
- num_c = read(c, sym_count_c, count_c, counter_c)
- counter_c += 1
- if num_c <= num_b:
- a.write(str(num_c) + " ")
- b_marker = False
- c_marker = True
- num_in_group_c += 1
- if num_in_group_c == n:
- looper_c += 1
- else:
- a.write(str(num_b) + " ")
- c_marker = False
- b_marker = True
- num_in_group_b += 1
- if num_in_group_b == n:
- looper_c += 1
- else:
- break
- def sort(n):
- a = open('C:/Users/chuxo/Desktop/a.txt', 'w')
- b = open('C:/Users/chuxo/Desktop/b.txt', 'r')
- c = open('C:/Users/chuxo/Desktop/c.txt', 'r')
- b_count = count(b)
- b.seek(0)
- c_count = count(c)
- c.seek(0)
- if b_count >= c_count:
- compare(a, b, c, n)
- else:
- compare(a, c, b, n)
- a.close()
- b.close()
- c.close()
- def main():
- a = open('C:/Users/chuxo/Desktop/a.txt', 'r')
- n_count = count(a)
- print(n_count)
- a.close()
- nums_in_group = 1
- while nums_in_group < n_count:
- a = open('C:/Users/chuxo/Desktop/a.txt', 'r')
- separate(a, nums_in_group)
- a.close()
- # Убираем последний пробел
- c = open('C:/Users/chuxo/Desktop/c.txt', 'rb+')
- b = open('C:/Users/chuxo/Desktop/b.txt', 'rb+')
- c.seek(-1, os.SEEK_END)
- if c.read(1) == b' ':
- c.seek(-1, os.SEEK_END)
- c.truncate()
- else:
- b.seek(-1, os.SEEK_END)
- b.truncate()
- c.close()
- b.close()
- sort(nums_in_group)
- nums_in_group = nums_in_group * 2
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement