class BasicRegister:

    def __init__(self, memory: list[bool]):
        self.memory: list[bool] = memory

    def __str__(self) -> str:
        return f"Memory: [{', '.join([str(int(value)) for value in  self.memory])}]"

    def reverse(self):
        self.memory = [not value for value in self.memory]

    def left_shift(self, digit_to_fill: bool = False, steps_shifted: int = 1) -> list[bool]:
        self.memory.extend([digit_to_fill] * steps_shifted)
        shifted_radices: list[bool] = self.memory[:steps_shifted]
        del self.memory[:steps_shifted]
        return shifted_radices

    def right_shift(self, digit_to_fill: bool = False, steps_shifted: int = 1) -> list[bool]:
        self.memory[:0] = [digit_to_fill] * steps_shifted
        shifted_radices: list[bool] = self.memory[-steps_shifted:]
        del self.memory[-steps_shifted:]
        return shifted_radices