fork download
  1. #!/usr/bin/perl
  2. # your code goes here
  3. my $output=1; #0 - vivodit tolko resultat, 1 - vivodit' podrobnosti i resultat
  4. my $count=10; # skol'ko raz delat' vibor
  5. my $answer=1; # 0 - ne menyaem vibor, 1- menyaem vibor, 2 - menyaem randomom
  6.  
  7.  
  8.  
  9. #ispolzuem hash dlya naglyadnosti
  10. my %init_doors=(
  11. 'red' =>0,
  12. 'green' =>0,
  13. 'blue' =>0
  14. );
  15.  
  16.  
  17. my @variants=('red','green','blue');
  18.  
  19. my $success=0;
  20. my $failed=0;
  21.  
  22. for (my $i=0;$i<$count;$i++)
  23. {
  24.  
  25. my $target=$variants[int rand(3)];#zagadivaem
  26. if ($output)
  27. {
  28. print "Zagadali: $target\n";
  29. };
  30.  
  31.  
  32. my $test=$variants[int rand(3)];#popitka ugadat
  33.  
  34. if ($output)
  35. {
  36. print "Popitka: $test\n";
  37. };
  38.  
  39. my %temp_doors=%init_doors;
  40.  
  41. my $add_variant="";
  42. my @result_array=(); # tut budem hranit spisok posle otbrasivaniya vedushchim lishnego varianta
  43.  
  44. if ($target eq $test) #esli zagadannoye sovpalo s vibrannim
  45. {
  46. delete($temp_doors{$target}); #udalyaem zagadannoye
  47. my $temp=0;
  48. my @temp_array=();
  49. foreach my $key (keys %temp_doors) #pomeshchaem v massiv ostavsheesya
  50. #dva znacheniya chto bi po indeksu randomom vibrat'
  51. {
  52. $temp_array[$temp]=$key;
  53. $temp++;
  54. };
  55.  
  56. $add_variant=$temp_array[int rand(2)]; #vibiraem kakoy neverniy variant ostavit' (verniy to uge uagadan)
  57. $result_array[0]=$test;
  58. $result_array[1]=$add_variant;
  59. }
  60. else #esli zagadannoye vedushchim ne sovpalo s vibrannim igrayushchim, togda dobavlyaem zagadannoye k vibrannomu
  61. {
  62. $result_array[0]=$test;
  63. $result_array[1]=$target;
  64. };
  65. if ($output)
  66. {
  67. print "Vtoroy shans - vibor iz: ".join(',',@result_array)."\n"; #vivodim vse chto ostalos' posle otbrasivaniya
  68. };
  69.  
  70. if ($answer == 0) #esli ne menyaem vibor
  71. {
  72. if ($output)
  73. {
  74. print "Ne menyaem vibor\n";
  75. };
  76. if ($test eq $target)
  77. {
  78. if ($output)
  79. {
  80. print "Resultat: Ugadali\n";
  81. };
  82. $success++;
  83. }
  84. else
  85. {
  86. if ($output)
  87. {
  88. print "Resultat: Ne ugadali\n";
  89. };
  90. $failed++;
  91. };
  92. }
  93. elsif ($answer ==1) # esli menyaem vibor
  94. {
  95. if ($output)
  96. {
  97. print "Menyaem vibor s $test на $result_array[1]\n";
  98. };
  99. $test=$result_array[1]; # v $result_array[0] - vsegda vibraniy varian, poetome dlyz smeni vibore berem $result_array[1]
  100.  
  101. if ($test eq $target)
  102. {
  103. if ($output)
  104. {
  105. print "Resultat: Ugadali\n";
  106. };
  107. $success++;
  108. }
  109. else
  110. {
  111. if ($output)
  112. {
  113. print "Resultat: Ne ugadali\n";
  114. };
  115. $failed++;
  116. };
  117. }
  118. elsif ($answer==2) #vibiraem randomom vtoroy raz
  119. {
  120. $test=$result_array[int rand(2)];
  121. if ($output)
  122. {
  123. print "Delaem vibor snova randomom, vibrali $test\n";
  124. };
  125. if ($test eq $target)
  126. {
  127. if ($output)
  128. {
  129. print "Resultat: Ugadali\n";
  130. };
  131. $success++;
  132. }
  133. else
  134. {
  135. if ($output)
  136. {
  137. print "Resultat: Ne ugadali\n";
  138. };
  139. $failed++;
  140. };
  141.  
  142.  
  143. };
  144. if ($output)
  145. {
  146. print "\n=========================================================\n";
  147. };
  148. };
  149.  
  150. print "\nVsego: $count\n";
  151. print "Ugadano: $success\n";
  152. print "Ne ugadano: $failed\n";
  153.  
Success #stdin #stdout 0s 3608KB
stdin
Standard input is empty
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