def level5(file_path): start = (1, 1) end = (26, 25) board = Board(file_path, 32) board.set_knight_location(start) mover = Mover(board) path = mover.find_longest_path(start, end) print path mover.move(path, display=True)
def level3(file_path): """Find the shortest path between the start and end positions""" start = (1, 1) end = (6, 6) # Set starting point board = Board(file_path, 8) board.set_knight_location(start) mover = Mover(board) path = mover.find_shortest_path(start, end) print path mover.move(path, display=True)
def level4(file_path): """Find the shortest path between the start and end of the 32x32 weighted board, with additional constraints """ start = (1, 1) end = (26, 25) board = Board(file_path, 32) board.set_knight_location(start) mover = Mover(board) path = mover.find_shortest_path(start, end) print path mover.move(path, display=True)
def mover(number, args): window, target, source, wq, logger = args while True: # Object from queue takes by link # therefore changes the record gives changes in JsonArray element = wq.get() # Assigment filesize to db # Нет смысла включать это в цикл finder смысла нет, # тк все равно везде это делается отдельной операцией # element['size'] = source.get_size(element['source_path']) def f(elem_p): element['size'] = source.get_size(elem_p) try_again(0, 1, logger.info, f, element['source_path']) window.update_record(element) m = Mover(logger, source, target, element, number) m.move() window.update_record(element) wq.task_done()
from detector import Detector from mover import Mover if __name__ == '__main__': print('> > > Start > > > ') detector = Detector() mover = Mover() detector.capture_screen(-1) board = detector.get_board() mover.move(500, 500, 'up') print(board) print('< < < End < < < ')
def level1(file_path): """Pass in a list of moves, display them, and check if they are valid""" board = Board(file_path, 8) moves = [(1, 3), (2, 1), (4, 2), (8, 8)] mover = Mover(board) mover.move(moves, display=True)
def run(config, logger=None): if logger is None: logger = logging.getLogger() for user_name, values in config.items(): logger.info("moving for user {0}, domains {1}".format( user_name, values['domains'])) try: src = SshRemote(host=values['source']['host'], user=values['source']['user'], password=values['source']['password'], port=22, logger=logger) logger.info("source connected") dst = SshRemote(host=values['destination']['host'], user=values['destination']['user'], password=values['destination']['password'], port=22, logger=logger) logger.info("dst connected") except Exception: continue mover = Mover(dst, src, logger) try: start_dir = values['source']['start_dir'] except KeyError: start_dir = '~/' try: ticket = values['ticket'] except KeyError: logger.info("ticket not found for user {}".format(user_name)) ticket = None token = Api.get_token('t.transfer', 'w8et76r4g8s7df6eresdg') api = Api(token) domains_check = list(set(values['domains'])) domains = test_domains(domains_check, logger) post_comment = api.post_comment if ticket else lambda *x: None delay_ticket = api.delay_ticket if ticket else lambda *x: None result = {} try: delta = timedelta(hours=5) delay_ticket( user_name, ticket, delta, "transfer for user {0} has started, delayed for {1}".format( user_name, str(delta))) sites = mover.find_sites(domains, start_dir) for domain, dir in sites.items(): logger.info("moving {0}:{1} from {2}".format( user_name, domain, dir)) try: mover.move(dir, domain) result[domain] = "done" except: logger.warning( "transfer for user {0} domain {1} failed".format( user_name, domain)) result[domain] = "failed" continue finally: post_comment( "transfer finished for user {0}: {1}".format( user_name, '\n'.join( ["{}: {}".format(k, v) for k, v in result.items()])), user_name, ticket, True) logger.info("posted to {}".format(ticket)) subprocess.run([ "sshpass", "-p", "{0}".format( dst.password), "scp", "-o", "StrictHostKeyChecking=no", "/home/mover/logs/mover_{0}.log".format(user_name), "{0}@{1}:$HOME/.tmp/".format(dst.user, dst.host) ], stdout=sys.stdout, stderr=sys.stdout)