Google AI рдЪреИрд▓реЗрдВрдЬ рдПрдВрдЯреНрд╕ рдЬрд▓реНрдж рд╣реА рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рджреЛ рджрд┐рди рдкрд╣рд▓реЗ рдЗрд╕ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм рдкрд░ рдПрдХ рдШреЛрд╖рдгрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереА:
http://habrahabr.ru/blogs/sport_programming/130457/
ред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ "рдХреНрд╡рд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯ" рд▓рд┐рдЦрд╛ рдерд╛ред
рд▓реЗрдЦ рд╕реЗ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рдЧреЗрдо рдХреИрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИ, рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдмреЙрдЯ рд▓рд┐рдЦреЗрдВ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВредрдореИрдВ
рд▓рд┐рдирдХреНрд╕ (рдбреЗрдмрд┐рдпрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдЯ рдореЗрдВ
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд┐рдЯ рднреА рд╣реИ (рдЕрдЬрдЧрд░ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдореИрдВ
рдкрд░реНрд▓ рдореЗрдВ рдПрдХ рдмреЙрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдирдХрд╛рд░рддрд╛ рдирд╣реАрдВ рд╣реИред
Aichallenge рдХреА рдХрд┐рдЯ рдореЗрдВ рд░реЗрдбреА-рдореЗрдб рдмреЙрдЯреНрд╕ рд╣реИрдВ рдЬреЛ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ: рдЬрд╛рд╡рд╛, рдкреАрдПрдЪрдкреА, рд╕реА #, рдкрд╛рдпрдердиред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдм рд╕рд╛рдЗрдЯ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреИрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕реА #, рд╕реА ++, рдХреЙрдорди рд▓рд┐рд╕реНрдк, рдбреА, рдЧреЛ, рдЬрд╛рд╡рд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд▓реБрдЖ, рдУрдХреЗрдПрдордПрд▓, рдкрд╛рд╕реНрдХрд▓, рдкрд░реНрд▓, рдкреАрдПрдЪрдкреА, рдкрд╛рдпрдерди, рд░реВрдмреА, рд╕реНрдХрд╛рд▓рд╛ред
рдЬрд▓реНрдж рд╣реА рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛:
рд╕реА, рдХреНрд▓реЛрдЬрд░, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрд░рд▓реИрдВрдЧ, рдЧреНрд░реВрд╡реА, рд╣рд╛рд╕реНрдХреЗрд▓, рд╡рд┐рдЬрд╝реБрдЕрд▓ рдмреЗрд╕рд┐рдХред
рдФрд░ рд╣рд╛рдБред рдЖрдк рдПрдХ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдмреЙрдЯ рдХреА рд▓рдбрд╝рд╛рдИ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд┐рджрд╛рдИ рд╢рдмреНрдж
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЕрдиреБрднрд╡ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдЪрдордХ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИ, рддреЛ рднреА рдореИрдВ рдХрдо рд╕реЗ рдХрдо рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЕрдкрдирд╛ рд╣рд╛рде рдЖрдЬрдорд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдХрдо рд╕реЗ рдХрдо, рдЖрдк рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреМрд╢рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рдФрд░ рд╡реИрд╕реЗ, Google рдкреНрд░рдердо рд╡рд░реНрд╖ рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдкреБрд░рд╕реНрдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИред
рдЕрдЪреНрдЫрд╛, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рднреА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:
http://beta.aichallenge.org/рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреЗрдЬ рдкрд░
http://beta.aichallenge.org/starter_packages.php рдЕрдкрдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЪреБрдиреЗрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдореИрдВрдиреЗ рдкрд░реНрд▓ рдЪреБрдирд╛:
$ wget http://beta.aichallenge.org/starter_packages/perl_starter_package.zip
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MyBot рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ Unpack:
$ unzip -d MyBot perl_starter_package.zip Archive: perl_starter_package.zip inflating: MyBot/Ants.pm inflating: MyBot/MyBot.pl inflating: MyBot/MyBot.pm inflating: MyBot/Position.pm inflating: MyBot/README.md
рдпрд╣ рдмреЙрдЯ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ! рдЖрдк рдЗрд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?
рд▓рдбрд╝рд╛рдИ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИред рд╕рд╛рдЗрдЯ рдкрд░ рднреВрдорд┐, рдкрд╛рдиреА, рднреЛрдЬрди, рдПрдВрдерд┐рд▓реНрд╕ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЦреНрдп рдкрд╛рддреНрд░ рдЪреАрдВрдЯрд┐рдпрд╛рдВ рд╣реИрдВред
рдЦреЗрд▓ рдЯрд░реНрди-рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдЖрдкрдХрд╛ рдмреЙрдЯ рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдПрдХ рдЕрдВрддрд╣реАрди рдЪрдХреНрд░ (рдПрдХ рдЪрдХреНрд░ - рдПрдХ рдЪрд░рдг) рдореЗрдВ рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рди рджреЗрддрд╛ рд╣реИред
рдЖрдкрдХрд╛ рдмреЙрдЯ рдЖрдкрдХреЗ рд╕рднреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдореВрд╣рд┐рдХ рджрд┐рдорд╛рдЧ рд╣реИ, рдпрд╣ рд╕рдм рдХреБрдЫ рдЬрд╛рдирддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдкрд░, рдЖрдкрдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪреАрдВрдЯреА рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдХреЛ рдЕрдЧрд▓реЗ рдЪрд░рдг рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдЪреАрдВрдЯреА рдЬрд╛рдПрдЧреА: рдЙрддреНрддрд░, рджрдХреНрд╖рд┐рдг, рдкреВрд░реНрд╡, рдкрд╢реНрдЪрд┐рдо рдпрд╛ рдЬрдЧрд╣ рдкрд░ рд░рд╣реЗрдВред рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдЦреЗрд▓ рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рд╣реИред
рдЕрдм рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рдмреЙрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
MyBot.pm рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИред
рдЦреЗрд▓ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЗрдВ
Ants.pm рдФрд░
рд╕реНрдерд┐рддрд┐. pm рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓
MyBot.pl - рдмреЙрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ред
рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рд╛рд░рд╛ рдХрд╛рдо MyBot.pm рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдЧрд╛ред
рдФрд░ рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИ:
sub create_orders { my $self = shift; for my $ant ($self->my_ants) { my @food = $self->nearby_food($ant); for my $f (@food) { my $direction = $self->direction($ant, $f); next unless $self->passable( Position->from($ant)->move($direction) ); $self->issue_order( $ant, $direction ); last; } } }
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдлрдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рд░ рдХрджрдо рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдкрдиреЗ рд╕рднреА рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХреЗ рд╣рд░ рдЪреАрдВрдЯреА рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ
for my $ant ($self->my_ants) {
рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ... рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
$self->issue_order( $ant, $direction );
рдХрд┐ рдпрд╣ рдЪреАрдВрдЯреА рдЗрд╕ рддрд░рд╣ рдЬрд╛рдПрдЧреАред
рд╡рд╣ рд╕рдм рд╣реИред рдФрд░ рдХреМрди рдХрд╣рд╛рдБ рдЬрд╛рдПрдЧрд╛ - рдпрд╣ рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЪреАрдВрдЯреА рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рднреЛрдЬрди рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧреАред
рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдФрд░ рд╕рдмрдХ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдмреЗрдХрд╛рд░ рд╡рд┐рдХрд▓реНрдк рднреА рд▓рд┐рдЦреЗрдВрдЧреЗ - рдЪреАрдВрдЯреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓реЗрдЧреАред
рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯреНрд╕ рдХреА рд▓рдбрд╝рд╛рдИ рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦреЗрдВрдЧреЗред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд┐рдЯ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ:
рдЪреАрдВрдЯреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд┐рдд
рдЪреАрдВрдЯрд┐рдпреЛрдВ рдХрд╛ рдЦреЗрд▓ ред
рд▓рд┐рдирдХреНрд╕ / рдореИрдХрдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг:
http://beta.aichallenge.org/tools.tar.bz2рд╡рд┐рдВрдбреЛрдЬ рд╕рдВрд╕реНрдХрд░рдг:
http://beta.aichallenge.org/tools.zipрд╣рдо рд▓реЗрддреЗ рд╣реИрдВ:
$ wget http://beta.aichallenge.org/tools.tar.bz2
рдирд┐рдХрд╛рд▓реЗрдВ:
$ tar -xjvf tools.tar.bz2
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВред рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЬрдбрд╝ рдореЗрдВ рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ:
play_one_game.sh
play_one_game_live.shрдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓
play_one_game_live.sh рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдЗрдП рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВ:
рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп:
$ ./play_one_game_live.sh
рдПрдХ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдк 4 рдПрдВрдерд┐рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝рд╛ рдХреНрд╖реЗрддреНрд░ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдЖрдк рд▓рдбрд╝рд╛рдИ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ 4 рдЕрдЬрдЧрд░ рдмреЙрдЯ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред рдЕрдЬрдЧрд░ рдмреЙрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╕реА #, рдЬрд╛рд╡рд╛ рдФрд░ рдкреАрдПрдЪрдкреА рдореЗрдВ рд▓рд┐рдЦреЗ рдмреЙрдЯ рд╣реИрдВред
рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдФрд░ рдлрд┐рд░ рд╣рдо рдЕрдкрдиреЗ рдкрд░реНрд▓ рдмреЙрдЯ рдХреЛ рдЦреЗрд▓ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓ рджреЗрдВрдЧреЗред
рд▓рд╛рдЗрди
"рдкрд╛рдпрдерди рдирдореВрдирд╛_рдмреЙрдЯреНрд╕ / рдЕрдЬрдЧрд░ / рд╣рдВрдЯрд░рдмреЙрдЯреЛ" рдЖрдкрдХреЗ рдмреЙрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рд╣реИред рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреА рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЖрдкрдХреЗ рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╣рд╛рдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░рд╛ рдмреЙрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо
MyBot.pl рд╣реИ ред
рдирдореВрдирд╛_рдмреЙрдЯреНрд╕ / рдкрд░реНрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рд╕реЗ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХреА рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ:
$ cp MyBot/*.pl MyBot/*.pm tools/sample_bots/perl/
рдПрдХ рдмреЙрдЯ рд╣реИред рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рдорд╛рдирдЪрд┐рддреНрд░ рдЪреБрдиреЗрдВред рдирдХреНрд╢реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдб рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╣реИред рдкрд╣рд▓реЗ рддреАрди рд░реЗрдЦрд╛рдПрдБ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВред
рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рдмрд┐рд▓реНрдХреБрд▓ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ!
рдореИрдВрдиреЗ рджреЛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рдирдХреНрд╢рд╛ рдЪреБрдирд╛:
рдирдХреНрд╢реЗ / рдЙрджрд╛рд╣рд░рдг / tutorial1.mapрдореИрдВ
play_one_game_live.sh рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛
рд╣реВрдВ :
рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЗ рдЦреЗрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ
рд╣рдо рдХрд╛рд░реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред MyBot.pm рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░
рд╕рдм create_orders рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣рдЯрд╛ рджреЗрдВред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛:
sub create_orders { my $self = shift; for my $ant ($self->my_ants) { $self->issue_order( $ant, $direction ); } }
рд╡рд╣ рдЕрднреА рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕
$ рджрд┐рд╢рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЛ
рджреЗрдЦрддреЗ рд╣реИрдВ рдЕрдВрдХ_рдСрд░реНрдбрд░ (рдпрд╣
рдЪреАрдВрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╣реИред рдкреАрдкреАрдПрдо рдлрд╝рд╛рдЗрд▓), рддреЛ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЕрдХреНрд╖рд░
рдПрди рдХреЛ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
рдПрди, рдПрд╕, рдбрдмреНрд▓реНрдпреВ рдпрд╛ рдИ (рдЙрддреНрддрд░, рджрдХреНрд╖рд┐рдг, рдкрд╢реНрдЪрд┐рдо рдпрд╛ рдкреВрд░реНрд╡)ред
рдЕрдХреНрд╖рд░реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдБ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪреАрдВрдЯреА рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рддрддреНрд╡ рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рд░ рдХрджрдо рдкрд░ рд╣рд░ рдЪреАрдВрдЯреА рдПрдХ рдЕрдЬреНрдЮрд╛рдд рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдПрдЧреАред
рдкрд░реНрд▓ рднрд╛рд╖рд╛ рдПрдХ рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдпрд╣ рд╕рдм рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реБрднрд╛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреВрдВрдЧрд╛:
sub create_orders { my $self = shift; my @directions = qw(NSWE); for my $ant ($self->my_ants) { my $index = int (rand (4)); $self->issue_order( $ant, $directions[$index] ); } }
рд╣рдо рдмрдЪрд╛рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдХреЛ рдЪреБрдирддреЗ рд╣реИрдВ, рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╣рдорд╛рд░реЗ рдЕрдВрдзреЗ рдмрд┐рд▓реНрд▓реА рдХреЗ рдмрдЪреНрдЪреЗ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдирд┐рд░реНрджрдп рдЪреАрдВрдЯрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рддреЛ рдареАрдХ рд╣реИред рдмреЙрдЯ рддреИрдпрд╛рд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреЗрд╡рдХреВрдл рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд╣реАред рдмрд┐рдВрджреБ рдЫреЛрдЯрд╛ рд╣реИ: рдмреЙрдЯ рдореЗрдВ рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ рднреЛрдЬрди рдХреА рдЦреЛрдЬ рдХрд░рдирд╛, рд▓рдбрд╝рд╛рдИ рдХрд░рдирд╛, рдФрд░ рдЖрдк рдЗрд╕реЗ рдЬреАрдд рдХреЗ рд▓рд┐рдП рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рд░рд╛рд╕реНрддреЗ рдореЛрдбрд╝рддреЗ рд╣реИрдВред
рдореИрдВ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рднреЛрдЬрди рдФрд░ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред Ants.pm рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВред
рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕рд╣реА рдкрдВрдЬреАрдХрд░рдг рд▓рд┐рдВрдХ рдпрд╣рд╛рдБ рд╣реИ:
beta.aichallenge.org/submit.phpрд╕рд╛рдЗрдЯ рдкрд░ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдПрдХ рдЧрд▓рдд рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЕрдВрддрд┐рдо рдЪреИрдореНрдкрд┐рдпрдирд╢рд┐рдк), рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд░рд╛ рджрд┐рдпрд╛ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдЙрджреНрдпрдо рдХреЛ рд▓рдЧрднрдЧ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдерд╛ред
рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреИрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИ, рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рдирд╛рдо рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд░реЗрдЯрд┐рдВрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗред
рдпреБрджреНрдз рдХреЗ рдореИрджрд╛рди рдкрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ!