Series 39. Дано целое число K, а также K наборов ненулевых целых чисел. Каждый набор содержит не менее трех элементов, признаком его завершения является число 0. Найти количество пилообразных наборов (определение пилообразного набора дано в задании Series23).

Решение на Python 3

import random

K = random.randrange(1,9)
print("K = ",K)

count_saw = 0
for i in range(0,K):
x_prev = random.randrange(1,10)
x_curr = random.randrange(x_prev+1,x_prev+11)
print(x_prev,end="; ")
print(x_curr,end="; ")
k = -1
saw = 0
i = 2
while True:
if k == 1:
y = list(range(x_curr-1,x_curr+11))
y.append(0)
#x_next = random.randrange(x_curr-1,x_curr+11)
x_next = random.choice(y)
else:
#x_next = random.randrange(x_curr-10,x_curr+1)
y = list(range(x_curr-10,x_curr+1))
y.append(0)
x_next = random.choice(y)
k *= -1
print(x_next,end="; ")
if x_next == 0:
break

if saw == 0:
if not ((x_prev < x_curr and x_curr > x_next) \
or (x_prev > x_curr and x_curr < x_next)):
saw = i
x_prev = x_curr
x_curr = x_next
i += 1

print()
if saw == 0:
print("saw: ", saw)
count_saw += 1
else:
print("not saw: ", saw)
print()
print("Number of saws: ", count_saw)