Google AI рдЪреИрд▓реЗрдВрдЬред рдЕрдкрдирд╛ рдмреЙрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рднрд╛рдЧ рез, реи

рдпрд╣ рд╡рд┐рд╖рдп Google рдР рдЪреИрд▓реЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб рдХреЗ рдкрд╣рд▓реЗ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред
рд╕рднреА рдХреЛрдб рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред


рдЪрд░рдг 1: рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪреЗрдВ


рдпреЛрдЬрдирд╛

рддрд╛рдХрд┐ рдЪреАрдВрдЯрд┐рдпрд╛рдВ рдЯрдХрд░рд╛рдП рдирд╣реАрдВ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
1) рдПрдХ рдЪреАрдВрдЯреА рдХреА рд╣рд░рдХрдд рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рд░реЛрдХрдирд╛;
2) рдПрдХ рд╣реА рдмрд┐рдВрджреБ рдкрд░ рджреЛ рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рд░реЛрдХреЗрдВ;
3) рд╣рдорд╛рд░реЗ рд╕рднреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рдард┐рдХрд╛рдиреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦреЗрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдЪреАрдВрдЯрд┐рдпрд╛рдВ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╢рдмреНрджрдХреЛрд╢ (рдЙрд░реНрдл рд╣реИрд╢рдкреЙрдк, рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕рд░рдгреА рдХреА рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреА, рдФрд░ рдорд╛рди рдПрдХ рдЪреАрдВрдЯреА рд╣реИ рдЬреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рддреА рд╣реИред рд╕реНрдерд╛рди рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдЯрдкрд▓ (рд╕реВрдЪреА, рд╕рд░рдгреА) рд╣реЛрдЧрд╛ - рдирдХреНрд╢реЗ рдкрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рд╕реНрддрдВрднред рдлрд┐рд░ рд╣рдо рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ 2 рдЪреАрдВрдЯрд┐рдпрд╛рдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рди рдЬрд╛рдПрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдЪреАрдВрдЯреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдЪреЗрдХ рдмрд╛рдж рдореЗрдВ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдХрд╛рдо рдЖрдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдРрд╕рд╛ рдлрдВрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрджрдо рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ (рд╕рд╣реА рдпрд╛ рдЧрд▓рдд) рдорд╛рди рджреЗрддрд╛ рд╣реИред
рдХреЛрдб

рд╣рдо рдХреЛрдб рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХрд╛рдЯрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдХреЛрдб рдХреЛ рдирдП рдХреЛрдб рдореЗрдВ рдЪрд┐рдкрдХрд╛рддреЗ рд╣реИрдВ:

def do_turn(self, ants): # track all moves, prevent collisions orders = {} def do_move_direction(loc, direction): new_loc = ants.destination(loc, direction) if (ants.unoccupied(new_loc) and new_loc not in orders): ants.issue_order((loc, direction)) orders[new_loc] = loc return True else: return False # default move for ant_loc in ants.my_ants(): directions = ('n','e','s','w') for direction in directions: if do_move_direction(ant_loc, direction): break 


(рдиреЛрдЯ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╕рд╣реА рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛрдб рдФрд░ рд╕реНрдХреЛрдк рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)

Do_move_direction рдлрд╝рдВрдХреНрд╢рди рдЪреАрдВрдЯреА рдХреА рд╕реНрдерд┐рддрд┐ (рдЯреНрдпреВрдкрд▓ (рдкрдВрдХреНрддрд┐, рд╕реНрддрдВрдн)) рдФрд░ рджрд┐рд╢рд╛ ('рдПрди', 'рдИ', 'рдПрд╕' рдпрд╛ 'рдбрдмреНрд▓реНрдпреВ') рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдВрджреЛрд▓рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреНрд▓рд╛рд╕ рдкрджреНрдзрддрд┐ (рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИ) рдХреЗ рдЕрдВрджрд░ рд╣реИ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред (рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ) рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреЙрдЯ рд╕реЗ рдХреБрдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

ants.destination рд╕реНрдерд╛рди рдФрд░ рджрд┐рд╢рд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЧрдВрддрд╡реНрдп рджреЗрддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдирдХреНрд╢реЗ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдЪреАрдВрдЯреА рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

ants.unoccupied рд╕реНрдерд╛рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪреАрдВрдЯреА рдХреЛ рд╡рд╣рд╛рдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдЪреАрдВрдЯрд┐рдпреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдЬреЛ рд╣рдореЗрдВ рднреЛрдЬрди рдпрд╛ рдЕрдиреНрдп рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред

рд╡рд░реНрддрдорд╛рди рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред New_loc рдХреЗ рд░реЛрдЬрдЧрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдФрд░ рдЖрджреЗрд╢ рд╕рд░рдгреА рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЯрдХрд░рд╛рд╡ рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред

рдкрд░рд┐рдгрд╛рдо

рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рдмреЙрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:
C:\aichallenge>tutorial.cmd
running for 60 turns
ant_count c_turns climb? cutoff food r_turn ranking_bots s_alive s_hills score w_turn winning
turn 0 stats: [1,1,0] 0 [1,1] - 18 0 None [1,1] [1,1] [1,1] 0 None
turn 1 stats: [1,1,0] 0 [1,1] - 16 1 [0,0] [1,1] [1,1] [1,1] 1 [0,1]
turn 2 stats: [2,1,0] 0 [1,1] - 16 1 [0,0] [1,1] [1,1] [1,1] 1 [0,1]
...
turn 60 stats: [1,5,0] 0 [1,1] - 12 1 [0,0] [1,1] [1,1] [1,1] 1 [0,1]
score 1 1
status survived survived
playerturns 60 60


рджреЛрд╣рд░рд╛рдПрдБ: http://aichallenge.org/ants_tutorial_step_1.php

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрдХреЗрд▓рд╛ рдЪреАрдВрдЯреА рдмрд╛рд╣рд░ рдЖрдИ рдФрд░ рд╣рдВрдЯрд░рдмреЙрдЯ рд╕реЗ рд▓рдбрд╝реАред рдпрд╣ рдЖрддреНрдорд╣рддреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╕рдорд╛рд░реЛрд╣ рдмрдирд╛рдпрд╛ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдХрд╛рдо рдЖрддрд╛ рд╣реИред

рдЪрд░рдг 2: рднреЛрдЬрди рдПрдХрддреНрд░ рдХрд░рдирд╛


рдпреЛрдЬрдирд╛

рд╣рдореЗрдВ рдЬреАрддрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЪреАрдВрдЯреА рдХреА рд╢реБрд░реБрдЖрддреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд░реАрдм рднреЛрдЬрди рд╣реИ! рдЖрдЗрдП рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреЛрдЬрди рдореЗрдВ рдЪреАрдВрдЯреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдпрд╣ рднреА рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдВрдЯрд░рдмреЙрдЯ рдиреЗ рдЖрдЦрд┐рд░реА рдЧреЗрдо рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЛ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдерд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рднреЛрдЬрди рд╕реЗ рдХрд┐рддрдиреА рджреВрд░ рд╣реИред рдлрд┐рд░ рд╣рдо рд╕реВрдЪреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪреАрдВрдЯреА рдХреЛ рдирд┐рдХрдЯрддрдо рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдВрдЯреАред рдЕрдиреНрдп рдЪреАрдВрдЯрд┐рдпрд╛рдВ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдВрдЧреА рдФрд░ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рдо рдХрд░реЗрдВрдЧреАред рд╣рдо рдмреЗрд╡рдХреВрдл рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдВрджреЛрд▓рдиреЛрдВ рд╕реЗ рднреА рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрдВрдЧреЗ рдЬреЛ рд╢реБрд░реБрдЖрддреА рдмреЙрдЯ рд╕реЗ рд░рд╣рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рднреЛрдЬрди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреАрдЫрд╛ рдХрд░ рд░рд╣реА рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдФрд░ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╣ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдХреНрд╖реНрдп рднреЛрдЬрди рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдФрд░ рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕реНрдерд╛рди рдЬреЛ рдЗрд╕реЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдХреБрдВрдЬреА рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рд╣реА рднреЛрдЬрди рдореЗрдВ рджреЛ рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдВрджреЛрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рд╣рд╛рдпрдХ рд╕рдорд╛рд░реЛрд╣ рдмрдирд╛рдПрдВрдЧреЗред рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рджрд┐рд╢рд╛ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рд▓рдХреНрд╖реНрдп рд╕реНрдерд╛рди рдХреЛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рджрд┐рд╢рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ред

рдХреЛрдб

Do_move_direction рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ:
  targets = {} def do_move_location(loc, dest): directions = ants.direction(loc, dest) for direction in directions: if do_move_direction(loc, direction): targets[dest] = loc return True break else: return False 

рд▓рдХреНрд╖реНрдп рд╕рд░рдгреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд▓рдХреНрд╖реНрдп рднреЛрдЬрди рд╣реИред рд╣рдо рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдорд╛рдирдХ рдмреЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
ants.direction рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдФрд░ рд▓рдХреНрд╖реНрдп рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдирд┐рдХрдЯрддрдо рджрд┐рд╢рд╛рдУрдВ рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд▓рдХреНрд╖реНрдп рдКрдкрд░реА рдмрд╛рдИрдВ рдУрд░ рд╣реИ, рддреЛ рдпрд╣ ['рдПрди', 'рдбрдмреНрд▓реНрдпреВ'] рд▓реМрдЯреЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдЗрди рджреЛ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЕрдкрдиреА рдЪреАрдВрдЯреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд╕реАрдзреЗ рдиреАрдЪреЗ рд╣реИ, рддреЛ рдпрд╣ ['рдПрд╕'] рд▓реМрдЯрд╛рдПрдЧрд╛ - рдПрдХ рддрддреНрд╡ рдХреА рдПрдХ рд╕реВрдЪреАред

рдЪрд╛рд▓ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:
  # find close food ant_dist = [] for food_loc in ants.food(): for ant_loc in ants.my_ants(): dist = ants.distance(ant_loc, food_loc) ant_dist.append((dist, ant_loc, food_loc)) ant_dist.sort() for dist, ant_loc, food_loc in ant_dist: if food_loc not in targets and ant_loc not in targets.values(): do_move_location(ant_loc, food_loc) 


рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реВрдЪреА рд╣реИ - ant_dist - рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЪреАрдВрдЯреА рдХреЛ рднреЛрдЬрди рдФрд░ рджреВрд░реА рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реЗрдЧреА (рдЯреБрдкрд▓ (рджреВрд░реА, ant_loc, food_loc)ред рд╕реВрдЪреА рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдпреЛрдЬрди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕реВрдЪреА рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдкрд╛рдпрдерди рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЫрдБрдЯрд╛рдИ рдХрд╛рд░реНрдп рд╣реИрдВред рдЯреБрдкрд▓ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЬрдЧрд░ рдкреНрд░рддреНрдпреЗрдХ рдЯрдкрд▓ рдХреЗ рдкрд╣рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░, рдпрджрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рджреВрд╕рд░реЗ рдореВрд▓реНрдп рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд░реА рдХреЛ рдмрдЪрд╛рдпрд╛ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо рджреВрд░реА рдкрд╣рд▓реЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛, рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдкрд░ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ, рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдореБрдлреНрдд рдЪреАрдВрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рднреЛрдЬрди рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреА рд╣реИрдВред Food_loc рдЙрди рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рднреЛрдЬрди рдореЗрдВ рдПрдХ рдЪреАрдВрдЯреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реА рд╣реИред Ant_loc рд▓рдХреНрд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЕрдВрддрд░рд╛рд▓ () рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдВрдЯреА рдХреЛ рдЕрднреА рддрдХ рдПрдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЪреАрдВрдЯреА рдкрд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо do_move_location рдХрд╣рддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо

рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рдмреЙрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:
C:\aichallenge>tutorial.cmd
running for 60 turns
ant_count c_turns climb? cutoff food r_turn ranking_bots s_alive s_hills score w_turn winning
turn 0 stats: [1,1,0] 0 [1,1] - 18 0 None [1,1] [1,1] [1,1] 0 None
turn 1 stats: [1,1,0] 0 [1,1] - 16 1 [0,0] [1,1] [1,1] [1,1] 1 [0,1]
turn 2 stats: [1,1,0] 0 [1,1] - 16 1 [0,0] [1,1] [1,1] [1,1] 1 [0,1]
...
turn 60 stats: [4,6,0] 0 [1,1] - 6 1 [0,0] [1,1] [1,1] [1,1] 1 [0,1]
score 1 1
status survived survived
playerturns 60 60


рджреЛрд╣рд░рд╛рдПрдБ: http://aichallenge.org/ants_tutorial_step_2.php

рд╣рдо рдЬреЛ рднреА рднреЛрдЬрди рджреЗрдЦ рд╕рдХрддреЗ рдереЗ, рдЙрд╕реЗ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдВрдерд┐рд▓ рдореЗрдВ 3 рдЪреАрдВрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд╕рдХрддреА рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЪреАрдВрдЯрд┐рдпрд╛рдБ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЖ рд╕рдХрддреА рд╣реИрдВ, рддреЛ рд╡реЗ рд╣рдореЗрдВ рдЬреАрддрдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдореВрд▓:


PS рдЬрдмрдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рд╡реЗрдмрдХреБрдореЛ рдиреЗ рдПрдХ рд╕рдорд╛рди рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред рдЙрдирдХреЗ рд▓реЗрдЦ рдореЗрдВ рдЪреАрдВрдЯрд┐рдпрд╛рдБ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ рдЪрд░рдг 1 рд╣реИрдВ: рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрдирд╛, рдпрд╣ рдПрдХ рдЪрд░рдг 1 рд╣реИ: рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрдирд╛ рдФрд░ рдЪрд░рдг 2: рднреЛрдЬрди рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ред

Source: https://habr.com/ru/post/In130931/


All Articles