def __init__(self, array, pos): super(LMove, self).__init__(array, pos) self.move = np.zeros((2, 3)) self.move[0, asint(array[pos + 2:pos + 4]) - 1] = asint(array[pos + 12:pos + 16]) - 5 self.move[1, asint(array[pos:pos + 2]) - 1] = asint(array[pos + 8:pos + 12]) - 5
def __init__(self, array, pos): super(Fission, self).__init__(array, pos) packed = asint(array[pos:pos + 5]) self.dir = np.zeros(3) for i in reversed(range(3)): self.dir[i] = packed % 3 - 1 packed //= 3 self.size = asint(array[pos + 8:pos + 16])
def __init__(self, data): self.size = asint(bitarray(data[:8], endian="big")) cell_count = self.size**3 cells = numpy.frombuffer(data[8:8 + cell_count].unpack(), dtype=bool).astype(int) cells.resize(cell_count) self.data = cells.reshape((self.size, self.size, self.size))
def __init__(self, array, pos): super(SMove, self).__init__(array, pos) self.move = np.zeros(3) self.move[asint(array[pos + 2:pos + 4]) - 1] = asint(array[pos + 11:pos + 16]) - 15