Пропуск итераций Python

У меня есть такая задача:

В первой строке вводится положительное число N, не превышающее 10000, определяющее количество входных данных. Во второй строке подается число M, по модулю не превышающее 1000000 (миллион). Далее в N строках вводится N целых чисел, по модулю не превышающих 1000000 (миллион). Необходимо найти количество чисел, больше М, при этом анализируя не все числа, а пропуская на каждом шаге на одно число больше. Таким образом нужно проверять числа со следующим порядковым номером: 1, (пропуск одного), 3, (пропуск двух) и т.д.

Я написал такой код:

with open('6.txt', 'r') as f:
    file = [line.strip('\n') for line in f.readlines()]

n, m = int(file[0]), int(file[1])
count = 0

for line in file[2:]:
    p = line.split()
    k = 0
    skip = 1
    for i in p:
        if k >= len(p):
            break
        if int(p[k]) > m:
            count += 1
        k += 1 + skip
        skip += 1
print(count)

Входные данные имеют такой вид:

6
32454
342343 
453453 
5645456 
324233 
666666 
777777 

Если бы все корректно работало, код вернул бы число 3, так как остальные числа он бы пропустил. Однако код возвращает число 6, то есть он не пропускает итерации, как должен. В чем моя ошибка?


Ответы (1 шт):

Автор решения: n1tr0xs
with open('6.txt', 'r') as f:
    file = [line.strip('\n') for line in f.readlines()]

n, m = int(file[0]), int(file[1])
count = 0

i = 2
skip = 1
while i<len(file):
    if int(file[i])>m:
        count += 1
    i += skip
    skip += 1
→ Ссылка