File17. Файли ададҳои бутун дода шудааст. Файли наве, ки дарозиҳои ҳамаи серияҳои файли ибтидоиро нигоҳ медорад, сохта шавад.

Серия гуфта маҷмӯи элементҳои якхелаи пайдарпайро меноманд. Серия иборат аз як элемент ҳам буда метавонад. Дарозии серия гуфта миқдори элементҳои ин серияро меноманд.

Масалан, барои файли соҳиби элементҳои 1, 5, 5, 5, 4, 4, 5 буда дар файли натиҷавӣ пайдарпаии зерин нигоҳ дошта мешавад: 1, 3, 2, 1.

Решение на Python 3:

import random
import numpy

def GenerateLine(fname):
N = random.randrange(1,20)
line = ""
L = []
for i in range(N):
x = str(random.randint(1,3))
L.append(x)
line = ", ".join(L)
try:
f = open(fname, "w")
try:
f.write(line)
finally:
f.close()
except IOError:
print('Write error: ',fname)
print(line)

f_source = "file17_source.txt"
GenerateLine(f_source)

try:
with open(f_source,'r') as f:
lines = f.readlines()
lst = []
lst_result = []
print(lines)
for line in reversed(lines):
for i in line.split(", "):
lst.append(int(i))
print(lst)
k = 1
ser_num = 1
i_prev = lst[0]
for i in lst[1::]:
if i == i_prev:
k += 1
else:
lst_result.append(i)
k = 1
ser_num += 1
i_prev = i
print("Number of series:",ser_num)
print("Length of series:",lst_result)

except IOError:
print('Open error: ',f_source)

Вариант 2:

import random
import numpy

def GenerateLine(fname):
N = random.randrange(1,20)
#N = 1
line = ""
L = []
for i in range(N):
x = str(random.randint(1,2))
L.append(x)
line = ", ".join(L)
#line = "1, 5, 5, 5, 4, 4, 5"
try:
f = open(fname, "w")
try:
f.write(line)
finally:
f.close()
except IOError:
print('Write error: ',fname)
print(line)

f_source = "file17_source.txt"
GenerateLine(f_source)

try:
with open(f_source,'r') as f:
lines = f.readlines()
lst = []
lst_result = []
print(lines)
for line in reversed(lines):
for i in line.split(", "):
lst.append(int(i))
print(lst)
k = 1
ser_num = 0
lst_result.append(k)
for i, j in zip(lst, lst[1:]):
#print(i,j)
if i == j:
lst_result[ser_num] += 1
else:
lst_result.append(1)
ser_num += 1
print("Number of series:",ser_num+1)
print("Length of series:",lst_result)

except IOError:
print('Open error: ',f_source)