Skip to content

Instantly share code, notes, and snippets.

@valignatev
Last active November 24, 2016 21:05
Show Gist options
  • Save valignatev/20d3665aa7f8f790d962 to your computer and use it in GitHub Desktop.
Save valignatev/20d3665aa7f8f790d962 to your computer and use it in GitHub Desktop.
Имеется вектор размера N. Необходимо разделить его на M < N равных частей (то есть чтобы количество элементов в каждой части было одинаковым). Части не должны пересекаться и должны покрывать весь вектор (исключение - допускаются промежутки от начала вектора до начала первой части и от конда последней части до конца вектора, но в этом случае необ…
#! -*- coding: utf-8 -*-
def divide(n, m):
# Выходной список интервалов
intervals = []
# Количество элементов в каждой части
el_count = n / m
# Количество элементов вектора, не попадающих в части
rest_part = n % m
# Отступ от начала вектора
divide_start = rest_part / 2
# Отступ от конца вектора
divide_end = n - (rest_part - rest_part / 2)
for i in range(divide_start, divide_end, el_count):
intervals.append([i, i + (el_count-1)])
return intervals
if __name__ == '__main__':
n = int(input('Enter vector size N: '))
m = int(input('Enter number of parts M: '))
if m >= n:
raise ValueError('M must be less then N!')
parts = divide(n, m)
print(parts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment