def __init__(self, num_disks, number=None): self.disks = list() self.disks_by_name = dict() self.disk_names = list() disk_names = ["orange", "yellow", "green", "blue", "purple"] for idx in range(num_disks): disk = Disk() disk_name = disk_names[idx] self.disks.append(disk) self.disks_by_name[disk_names[idx]] = disk self.disk_names.append(disk_name) if number is not None: pos = self.num_disk_positions rest = number for disk_name in reversed(disk_names): disk = self.disks_by_name[disk_name] disk_idx = disk_names.index(disk_name) pole_idx = rest // pos**disk_idx disk.pole = pole_idx rest = rest - pole_idx * pos**disk_idx