This kata focuses on the Numpy python package and you can read up on the Numpy array manipulation functions here: https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.array-manipulation.html

You will get two integers `N` and `M`. You must return an array with two sub-arrays with numbers in ranges `[0, N / 2)` and `[N / 2, N)` respectively, each of them being rotated `M` times.

```
reorder(10, 1)   =>  [[4, 0, 1, 2, 3], [9, 5, 6, 7, 8]]
reorder(10, 3)   =>  [[2, 3, 4, 0, 1], [7, 8, 9, 5, 6]]
reorder(10, 97)  =>  [[3, 4, 0, 1, 2], [8, 9, 5, 6, 7]]
```

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def reorder(a, b):
	

Solutions:
import numpy as np

def reorder(a, b):
	return np.roll(np.arange(a).reshape(2, -1), b, 1).tolist()


from collections import deque

def reorder(n, m):
	(a, b) = (deque(range(n // 2)), deque(range(n // 2, n)))
	a.rotate(m)
	b.rotate(m)
	return [list(a), list(b)]


def reorder(N, M):
	L1 = list(range(N >> 1))
	L2 = list(range(N >> 1, N))
	R = M % (N >> 1)
	return [L1[-R:] + L1[:-R], L2[-R:] + L2[:-R]]


def reorder(a, b):
	a >>= 1
	b %= a
	return [[d + (i - b) % a for i in range(a)] for d in (0, a)]


import numpy as np

def reorder(a, b):
	if a % 2:
		m = a // 2
		new_array = np.array([number for number in range(0, a)])
		c = np.array_split(new_array, len(new_array) / m)
		d = [list(np.roll(c[0], b)), list(np.roll(c[1], b))]
	else:
		new_array = np.array([number for number in range(0, a)])
		c = np.array_split(new_array, len(new_array) / (a // 2))
		d = [list(np.roll(c[0], b)), list(np.roll(c[1], b))]
	return d


reorder = lambda a, b: [x[-b % len(x):] + x[:-b % len(x)] for x in map(list, (range(a // 2), range(a // 2, a)))]


def reorder(a, b):
	(arr1, arr2) = (list(range(a // 2)), list(range(a // 2, a)))
	for _ in range(b):
		(arr1, arr2) = ([arr1[-1]] + arr1[:-1], [arr2[-1]] + arr2[:-1])
	return [arr1, arr2]


import numpy

def reorder(a, b):
	result = [list(numpy.roll([i for i in range(0, a // 2)], b)), list(numpy.roll([i for i in range(a // 2, a)], b))]
	return result


import numpy

def reorder(a, b):
	first = numpy.roll(numpy.array([i for i in range(0, int(a / 2))]), b)
	second = numpy.roll(numpy.array([i for i in range(int(a / 2), a)]), b)
	result = [[i for i in first], [j for j in second]]
	return result


def reorder(a, b):
	import numpy
	return [list(numpy.roll(numpy.split(numpy.arange(a), 2)[0], b)), list(numpy.roll(numpy.split(numpy.arange(a), 2)[1], b))]