<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_zigzag(points, num_cols):
 """ Converts linear sequence of points into a zig-zag shape. This function is designed to create input for the visualization software. It orders the points to draw a zig-zag shape which enables generating properly connected lines without any scanlines. Please see the below sketch on the functionality of the ``num_cols`` parameter:: num cols <-=============-> ------->>-------| |------<<-------| |------>>-------| -------<<-------| Please note that this function does not detect the ordering of the input points to detect the input points have already been processed to generate a zig-zag shape. :param points: list of points to be ordered :type points: list :param num_cols: number of elements in a row which the zig-zag is generated :type num_cols: int :return: re-ordered points :rtype: list """

    new_points = []
    points_size = len(points)
    forward = True
    idx = 0
    rev_idx = -1
    while idx < points_size:
        if forward:
            new_points.append(points[idx])
        else:
            new_points.append(points[rev_idx])
            rev_idx -= 1
        idx += 1
        if idx % num_cols == 0:
            forward = False if forward else True
            rev_idx = idx + num_cols - 1

    return new_points