Протокол испытаний самодвижущегося экипажа состоит из карты, расписания отчётности и отчёта о времени.
- Карта — это последовательность положительных чисел — расстояний между остановками
- Расписание отчётности — это (небольшая) последовательность натуральных чисел, в которой сказано, сколько остановок сделать перед тем, как отослать следующий отчёт (1 — отчитаться на следующей же остановке); когда последовательность заканчивается, её следует начать заново
- Отчёт о времени — результат испытаний: время, затраченное на то, чтобы доехать от предыдущей отчётной остановки до следующей
Испытания могут проходить непрерывно, а могут и поэтапно, поэтому отчёт может выдать и гораздо больше, и меньше информации, чем предусмотрено картой и расписанием. Написать генератор-функцию speed(path, stops, times), параметры которой — (возможно, слишком большая для хранения) карта, расписание и (возможно, бесконечный) отчёт, а возвращать она должна итератор, вычисляющий среднюю скорость, которую самодвижущийся экипаж показал на отчётных участках пути.
1 print(*list(speed([2, 3, 4] * 11, [3, 4, 5], [1, 2, 4, 8] * 3)))
Отчётные участки пути и время:
2, 3, 4: 1
2, 3, 4, 2: 2
3, 4, 2, 3, 4: 4
2, 3, 4: 8
2, 3, 4, 2: 1
3, 4, 2, 3, 4: 2
2, 3, 4: 4
2, 3, 4, 2: 8
3, 4: 1
(здесь закончилась карта)
9.0 5.5 4.0 1.125 11.0 8.0 2.25 1.375 7.0