#!/usr/bin/perl
# your code goes here
my $output = 1 ; #0 - vivodit tolko resultat, 1 - vivodit' podrobnosti i resultat
my $count = 10 ; # skol'ko raz delat' vibor
my $answer = 1 ; # 0 - ne menyaem vibor, 1- menyaem vibor, 2 - menyaem randomom
#ispolzuem hash dlya naglyadnosti
my %init_doors = (
'red' => 0 ,
'green' => 0 ,
'blue' => 0
) ;
my @variants = ( 'red' , 'green' , 'blue' ) ;
my $success = 0 ;
my $failed = 0 ;
for ( my $i = 0 ; $i < $count ; $i ++ )
{
my $target = $variants [ int rand ( 3 ) ] ; #zagadivaem if ( $output )
{
print "Zagadali: $target\n " ; } ;
my $test = $variants [ int rand ( 3 ) ] ; #popitka ugadat
if ( $output )
{
print "Popitka: $test\n " ; } ;
my %temp_doors = %init_doors ;
my $add_variant = "" ;
my @result_array = ( ) ; # tut budem hranit spisok posle otbrasivaniya vedushchim lishnego varianta
if ( $target eq $test ) #esli zagadannoye sovpalo s vibrannim
{
delete ( $temp_doors { $target } ) ; #udalyaem zagadannoye my $temp = 0 ;
my @temp_array = ( ) ;
foreach my $key ( keys %temp_doors ) #pomeshchaem v massiv ostavsheesya #dva znacheniya chto bi po indeksu randomom vibrat'
{
$temp_array [ $temp ] = $key ;
$temp ++;
} ;
$add_variant = $temp_array [ int rand ( 2 ) ] ; #vibiraem kakoy neverniy variant ostavit' (verniy to uge uagadan) $result_array [ 0 ] = $test ;
$result_array [ 1 ] = $add_variant ;
}
else #esli zagadannoye vedushchim ne sovpalo s vibrannim igrayushchim, togda dobavlyaem zagadannoye k vibrannomu
{
$result_array [ 0 ] = $test ;
$result_array [ 1 ] = $target ;
} ;
if ( $output )
{
print "Vtoroy shans - vibor iz: " . join ( ',' , @result_array ) . "\n " ; #vivodim vse chto ostalos' posle otbrasivaniya } ;
if ( $answer == 0 ) #esli ne menyaem vibor
{
if ( $output )
{
print "Ne menyaem vibor\n " ; } ;
if ( $test eq $target )
{
if ( $output )
{
print "Resultat: Ugadali\n " ; } ;
$success ++;
}
else
{
if ( $output )
{
print "Resultat: Ne ugadali\n " ; } ;
$failed ++;
} ;
}
elsif ( $answer == 1 ) # esli menyaem vibor
{
if ( $output )
{
print "Menyaem vibor s $test на $result_array[1]\n " ; } ;
$test = $result_array [ 1 ] ; # v $result_array[0] - vsegda vibraniy varian, poetome dlyz smeni vibore berem $result_array[1]
if ( $test eq $target )
{
if ( $output )
{
print "Resultat: Ugadali\n " ; } ;
$success ++;
}
else
{
if ( $output )
{
print "Resultat: Ne ugadali\n " ; } ;
$failed ++;
} ;
}
elsif ( $answer == 2 ) #vibiraem randomom vtoroy raz
{
if ( $output )
{
print "Delaem vibor snova randomom, vibrali $test\n " ; } ;
if ( $test eq $target )
{
if ( $output )
{
print "Resultat: Ugadali\n " ; } ;
$success ++;
}
else
{
if ( $output )
{
print "Resultat: Ne ugadali\n " ; } ;
$failed ++;
} ;
} ;
if ( $output )
{
print "\n =========================================================\n " ; } ;
} ;
print "\n Vsego: $count\n " ; print "Ugadano: $success\n " ; print "Ne ugadano: $failed\n " ;
IyEvdXNyL2Jpbi9wZXJsCiMgeW91ciBjb2RlIGdvZXMgaGVyZQpteSAkb3V0cHV0PTE7ICMwIC0gdml2b2RpdCB0b2xrbyByZXN1bHRhdCwgMSAtIHZpdm9kaXQnIHBvZHJvYm5vc3RpIGkgcmVzdWx0YXQKbXkgJGNvdW50PTEwOyAjIHNrb2wna28gcmF6IGRlbGF0JyB2aWJvcgpteSAkYW5zd2VyPTE7ICMgMCAtIG5lIG1lbnlhZW0gdmlib3IsIDEtIG1lbnlhZW0gdmlib3IsIDIgLSBtZW55YWVtIHJhbmRvbW9tCgoKc3JhbmQodGltZSgpKTsKCiNpc3BvbHp1ZW0gaGFzaCBkbHlhIG5hZ2x5YWRub3N0aQpteSAlaW5pdF9kb29ycz0oCiAgICAgICAgICAncmVkJyA9PjAsCiAgICAgICAgICAnZ3JlZW4nID0+MCwKICAgICAgICAgICdibHVlJyA9PjAKICAgICAgICAgICk7CgoKbXkgQHZhcmlhbnRzPSgncmVkJywnZ3JlZW4nLCdibHVlJyk7CgpteSAkc3VjY2Vzcz0wOwpteSAkZmFpbGVkPTA7Cgpmb3IgKG15ICRpPTA7JGk8JGNvdW50OyRpKyspCnsKCiBteSAkdGFyZ2V0PSR2YXJpYW50c1tpbnQgcmFuZCgzKV07I3phZ2FkaXZhZW0KIGlmICgkb3V0cHV0KQogewogIHByaW50ICJaYWdhZGFsaTogJHRhcmdldFxuIjsKIH07CgoKIG15ICR0ZXN0PSR2YXJpYW50c1tpbnQgcmFuZCgzKV07I3BvcGl0a2EgdWdhZGF0CgogaWYgKCRvdXRwdXQpCiB7CiAgcHJpbnQgIlBvcGl0a2E6ICR0ZXN0XG4iOwogfTsKCiBteSAldGVtcF9kb29ycz0laW5pdF9kb29yczsKCiBteSAkYWRkX3ZhcmlhbnQ9IiI7CiBteSBAcmVzdWx0X2FycmF5PSgpOyAjIHR1dCBidWRlbSBocmFuaXQgc3Bpc29rIHBvc2xlIG90YnJhc2l2YW5peWEgdmVkdXNoY2hpbSBsaXNobmVnbyB2YXJpYW50YQoKIGlmICgkdGFyZ2V0IGVxICR0ZXN0KSAgICAjZXNsaSB6YWdhZGFubm95ZSBzb3ZwYWxvIHMgdmlicmFubmltCiAgewogICAgZGVsZXRlKCR0ZW1wX2Rvb3JzeyR0YXJnZXR9KTsgI3VkYWx5YWVtIHphZ2FkYW5ub3llCiAgICBteSAkdGVtcD0wOwogICAgbXkgQHRlbXBfYXJyYXk9KCk7CiAgICBmb3JlYWNoIG15ICRrZXkgKGtleXMgJXRlbXBfZG9vcnMpICAgICNwb21lc2hjaGFlbSB2IG1hc3NpdiBvc3RhdnNoZWVzeWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2R2YSB6bmFjaGVuaXlhIGNodG8gYmkgcG8gaW5kZWtzdSByYW5kb21vbSB2aWJyYXQnCiAgICB7CiAgICAgJHRlbXBfYXJyYXlbJHRlbXBdPSRrZXk7CiAgICAgJHRlbXArKzsKICAgIH07CgogICAgJGFkZF92YXJpYW50PSR0ZW1wX2FycmF5W2ludCByYW5kKDIpXTsgI3ZpYmlyYWVtIGtha295IG5ldmVybml5IHZhcmlhbnQgb3N0YXZpdCcgICh2ZXJuaXkgdG8gdWdlIHVhZ2FkYW4pCiAgICAkcmVzdWx0X2FycmF5WzBdPSR0ZXN0OwogICAgJHJlc3VsdF9hcnJheVsxXT0kYWRkX3ZhcmlhbnQ7CiAgfQogZWxzZSAgI2VzbGkgemFnYWRhbm5veWUgdmVkdXNoY2hpbSBuZSBzb3ZwYWxvIHMgdmlicmFubmltIGlncmF5dXNoY2hpbSwgdG9nZGEgZG9iYXZseWFlbSB6YWdhZGFubm95ZSBrIHZpYnJhbm5vbXUKICB7CiAgICAkcmVzdWx0X2FycmF5WzBdPSR0ZXN0OwogICAgJHJlc3VsdF9hcnJheVsxXT0kdGFyZ2V0OwogIH07CiBpZiAoJG91dHB1dCkKIHsKICBwcmludCAiVnRvcm95IHNoYW5zIC0gdmlib3IgaXo6ICIuam9pbignLCcsQHJlc3VsdF9hcnJheSkuIlxuIjsgI3Zpdm9kaW0gdnNlIGNodG8gb3N0YWxvcycgcG9zbGUgb3RicmFzaXZhbml5YQogfTsKCiBpZiAoJGFuc3dlciA9PSAwKSAjZXNsaSBuZSBtZW55YWVtIHZpYm9yCiB7CiAgaWYgKCRvdXRwdXQpCiAgewogICBwcmludCAiTmUgbWVueWFlbSB2aWJvclxuIjsKICB9OwogIGlmICgkdGVzdCBlcSAkdGFyZ2V0KQogICB7CiAgICBpZiAoJG91dHB1dCkKICAgIHsKICAgICBwcmludCAiUmVzdWx0YXQ6IFVnYWRhbGlcbiI7CiAgICB9OwogICAgJHN1Y2Nlc3MrKzsKICAgfQogICBlbHNlCiAgIHsKICAgIGlmICgkb3V0cHV0KQogICAgewogICAgIHByaW50ICJSZXN1bHRhdDogTmUgdWdhZGFsaVxuIjsKICAgIH07CiAgICAkZmFpbGVkKys7CiAgIH07CiB9CiBlbHNpZiAoJGFuc3dlciA9PTEpICMgZXNsaSBtZW55YWVtIHZpYm9yCiAgewogICBpZiAoJG91dHB1dCkKICAgewogICAgcHJpbnQgIk1lbnlhZW0gdmlib3IgcyAkdGVzdCDQvdCwICRyZXN1bHRfYXJyYXlbMV1cbiI7CiAgIH07CiAgICR0ZXN0PSRyZXN1bHRfYXJyYXlbMV07ICMgdiAkcmVzdWx0X2FycmF5WzBdIC0gdnNlZ2RhIHZpYnJhbml5IHZhcmlhbiwgcG9ldG9tZSBkbHl6IHNtZW5pIHZpYm9yZSBiZXJlbSAkcmVzdWx0X2FycmF5WzFdCgogICBpZiAoJHRlc3QgZXEgJHRhcmdldCkKICAgewogICAgaWYgKCRvdXRwdXQpCiAgICB7CiAgICAgcHJpbnQgIlJlc3VsdGF0OiBVZ2FkYWxpXG4iOwogICAgfTsKICAgICRzdWNjZXNzKys7CiAgIH0KICAgZWxzZQogICB7CiAgICBpZiAoJG91dHB1dCkKICAgIHsKICAgICBwcmludCAiUmVzdWx0YXQ6IE5lIHVnYWRhbGlcbiI7CiAgICB9OwogICAgJGZhaWxlZCsrOwogICB9OwogIH0KIGVsc2lmICgkYW5zd2VyPT0yKSAjdmliaXJhZW0gcmFuZG9tb20gdnRvcm95IHJhegogewogICAkdGVzdD0kcmVzdWx0X2FycmF5W2ludCByYW5kKDIpXTsKICAgaWYgKCRvdXRwdXQpCiAgIHsKICAgIHByaW50ICJEZWxhZW0gdmlib3Igc25vdmEgcmFuZG9tb20sIHZpYnJhbGkgJHRlc3RcbiI7CiAgIH07CiAgIGlmICgkdGVzdCBlcSAkdGFyZ2V0KQogICB7CiAgICBpZiAoJG91dHB1dCkKICAgIHsKICAgICBwcmludCAiUmVzdWx0YXQ6IFVnYWRhbGlcbiI7CiAgICB9OwogICAgJHN1Y2Nlc3MrKzsKICAgfQogICBlbHNlCiAgIHsKICAgIGlmICgkb3V0cHV0KQogICAgewogICAgIHByaW50ICJSZXN1bHRhdDogTmUgdWdhZGFsaVxuIjsKICAgIH07CiAgICAkZmFpbGVkKys7CiAgIH07CgoKIH07CiBpZiAoJG91dHB1dCkKIHsKICBwcmludCAiXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CiAgfTsKfTsKCnByaW50ICJcblZzZWdvOiAkY291bnRcbiI7CnByaW50ICJVZ2FkYW5vOiAkc3VjY2Vzc1xuIjsKcHJpbnQgIk5lIHVnYWRhbm86ICRmYWlsZWRcbiI7Cg==
stdout
Zagadali: blue
Popitka: green
Vtoroy shans - vibor iz: green,blue
Menyaem vibor s green на blue
Resultat: Ugadali
=========================================================
Zagadali: green
Popitka: red
Vtoroy shans - vibor iz: red,green
Menyaem vibor s red на green
Resultat: Ugadali
=========================================================
Zagadali: red
Popitka: red
Vtoroy shans - vibor iz: red,blue
Menyaem vibor s red на blue
Resultat: Ne ugadali
=========================================================
Zagadali: blue
Popitka: red
Vtoroy shans - vibor iz: red,blue
Menyaem vibor s red на blue
Resultat: Ugadali
=========================================================
Zagadali: blue
Popitka: blue
Vtoroy shans - vibor iz: blue,green
Menyaem vibor s blue на green
Resultat: Ne ugadali
=========================================================
Zagadali: blue
Popitka: red
Vtoroy shans - vibor iz: red,blue
Menyaem vibor s red на blue
Resultat: Ugadali
=========================================================
Zagadali: green
Popitka: red
Vtoroy shans - vibor iz: red,green
Menyaem vibor s red на green
Resultat: Ugadali
=========================================================
Zagadali: green
Popitka: red
Vtoroy shans - vibor iz: red,green
Menyaem vibor s red на green
Resultat: Ugadali
=========================================================
Zagadali: green
Popitka: green
Vtoroy shans - vibor iz: green,blue
Menyaem vibor s green на blue
Resultat: Ne ugadali
=========================================================
Zagadali: red
Popitka: green
Vtoroy shans - vibor iz: green,red
Menyaem vibor s green на red
Resultat: Ugadali
=========================================================
Vsego: 10
Ugadano: 7
Ne ugadano: 3