def hanoi(): from hornet import Database, pyfunc, _, greater, let, cut from hornet.symbols import play_hanoi, move, M, N, From, With, To @pyfunc def show_move(N, From, To, With): towers[To()].push(towers[From()].pop()) db = Database() db.tell( play_hanoi(N, From, To, With) << greater(N, 0) & move(N, From, To, With), move(1, From, To, _)[show_move] << cut, move(N, From, To, With) << let(M, N - 1) & move(M, From, With, To) & move(1, From, To, _) & move(M, With, To, From), ) for subst in db.ask(play_hanoi(6, 0, 1, 2)): print('Yes.') break else: print('No.')