Last active
November 24, 2016 21:05
-
-
Save valignatev/20d3665aa7f8f790d962 to your computer and use it in GitHub Desktop.
Имеется вектор размера N. Необходимо разделить его на M < N равных частей (то есть чтобы количество элементов в каждой части было одинаковым). Части не должны пересекаться и должны покрывать весь вектор (исключение - допускаются промежутки от начала вектора до начала первой части и от конда последней части до конца вектора, но в этом случае необ…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! -*- 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