# Problem Description
The task is to manipulate a list of integers by converting each integer to its binary representation, truncating a specified number of digits from the end of this binary string, and then converting the truncated binary string back to a decimal integer. The function should return a list of these processed integers.

# Visual Facts
1. **Example 1:**
   - Input list: [4, 7, 11, 5]
   - Cut length: 2
   - Binary representations: 4 -> 100, 7 -> 111, 11 -> 1011, 5 -> 101
   - Truncated binaries: 1, 1, 10, 1
   - Decimal results: 1, 1, 2, 1

2. **Example 2:**
   - Input list: [59, 65, 21, 87, 37]
   - Cut length: 4
   - Binary representations: 59 -> 111011, 65 -> 1000001, 21 -> 10101, 87 -> 1010111, 37 -> 100101
   - Truncated binaries: 11, 100, 1, 101, 10
   - Decimal results: 3, 4, 1, 5, 2

# Visual Patterns
1. **Binary Conversion:** Each integer in the input list is converted to its binary representation.
2. **Truncation:** The binary string is truncated by removing the last `cut_len` digits.
3. **Decimal Conversion:** The truncated binary string is then converted back to a decimal integer.
4. **Output:** The function returns a list of these decimal integers.

# Solution
from typing import List

def solution(nums: List[int], cut_len: int) -> List[int]:
    """
    Manipulates a list of integers using a specified cut length.

    Parameters:
        nums (List[int]): The input list of integers to process.
        cut_len (int): The value used for cutting.

    Returns:
        List[int]: The processed list after applying the cut operation.
    """
    new_nums = []
    for  num in nums:

        new_nums.append( num //(2**cut_len))
    return new_nums


# Test Script
def test():
    test_cases = [
        ([4,7,11,5],2, [1,1,2,1]),
        ([59,65,21,87,37],4,[3,4,1,5,2]),
        ([136, 839, 614, 172, 834, 661, 751, 474, 352, 161], 5, [4, 26, 19, 5, 26, 20, 23, 14, 11, 5]),
        ([125, 132, 147, 725, 597, 492, 258], 8, [0, 0, 0, 2, 2, 1, 1]),
        ([103, 706, 283, 830, 358, 528, 67, 587, 940], 1, [51, 353, 141, 415, 179, 264, 33, 293, 470]),
        ([821, 287, 970, 212], 2, [205, 71, 242, 53]),
        ([257, 659, 429, 803], 5, [8, 20, 13, 25]),
        ([349, 965, 252, 53, 394, 816, 712, 546, 771],4, [21, 60, 15, 3, 24, 51, 44, 34, 48]),
        ([659, 804, 592, 307, 336, 952], 10,  [0, 0, 0, 0, 0, 0]),
        ([635, 208, 583, 480, 937], 5, [19, 6, 18, 15, 29]),
        
    ]
    def equal_arr(arr1, arr2):
        return arr1 == arr2

    for nums, cut_len, expected_output in test_cases:
        try:
            output = solution(nums, cut_len)
        except Exception as e:
            error_message = (
                f"An exception occurred while running the test case:\n"
                f"`nums`: {nums}\n"
                f"`cut_len`: {cut_len}\n\n"
                f"Exception: '{str(e)}'"
            )
            assert False, error_message

        if not equal_arr(output, expected_output):
            error_message = (
                f"The following Test Case failed:\n"
                f"`nums`: {nums}\n"
                f"`cut_len`: {cut_len}\n\n"
                f"Actual Output: {output}\n"
                f"Expected Output: {expected_output}"
            )
            assert False, error_message

test()