def solve_but_last(self): """Löst die ersten n-2 der obersten Reihe und bringt den n-1ten in eine geeignete Position um ihn zusammen mit dem n-ten zu lösen (z.B.: '12.3')""" d = self.get_target_positions() for i in sorted(d): log.info("solving element {}".format(i)) self.p, acts = move_one_tile(self.p, i, d[i], self.locked) self._moves += acts self.locked.add(puz.get_position(self.p, i))
def map( self, event_type, ctrl_id, value ): if event_type==EVENT_BUTTON and ctrl_id==self.shift_button: if not self.toggle or (self.toggle and value==1): self.shift_state= 1-self.shift_state #0->1, 1->0 log.info("shift key at {}".format(self.shift_state)) if not self.output_shift_key_events: return None i= self.type_dict[event_type] if self.shift_state and ctrl_id in self.shift_elements[i]: ctrl_id+= self.offsets[i] return event_type, ctrl_id, value
def solve(p): counter = 0 moves = [] while not puz.is_solved(p): log.info("solve, iteration {}, puzzle:\n{}".format(counter, p)) counter += 1 transp = next_is_column(p) ss = SolverStruct(p, moves, transp) p, moves = ss.execute() log.info("another row solved:\n{}".format(p)) p = p[:, 1:] if transp else p[1:, :] log.info("shrinking p:\n{}".format(p)) log.info("solved: " + str(puz.is_solved(p))) return moves
parser.add_argument('shiftbtn', type=int, help='Number of the button acting as shift') return parser if __name__=="__main__": parser= argument_parser() args= parser.parse_args() my_logging.set_level( args.debug ) #open file descriptors and configure linux joystick_file= open( args.device ) system_setup.setup_system1( args.device ) log.info( "Creating virtual joystick" ) vj= VirtualJoystick( args.n_axes*2, args.n_buttons*2 ) system_setup.setup_system2( vj.name ) system_setup.drop_privileges() buttons_to_shift= set(range(args.n_buttons+1)) - set((args.shiftbtn,)) axes_to_shift= set(range(args.n_axes+1)) mapper= ShiftMapper( receiver= vj.send, buttons_to_shift= buttons_to_shift, axes_to_shift= axes_to_shift, button_offset= args.n_buttons, axes_offset= args.n_axes, shift_button= args.shiftbtn,