Advertisement
Guest User

Untitled

a guest
Jan 13th, 2013
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.21 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. # A harom fuggony mogott egyelore nincs semmi
  7. our %harom_fuggony = (
  8.     1 => "",
  9.     2 => "",
  10.     3 => "",
  11. );
  12.  
  13. # Ezek mutatjak, hogy hanyszor nyertem osszesen:
  14. my $nyer_kitarto   = "0";
  15. my $nyer_valtoztat = "0";
  16.  
  17. # ismeteljuk meg a kiserletet 2oooox
  18. for (my $i = 0; $i < 200000 ; $i ++){
  19.    
  20.    # Elhelyezzuk a szajret a fuggonyok mogott
  21.    &elhelyezes();
  22.  
  23.    # kivalasztunk veletlenul egy poziciot
  24.    my $valasztas = &valasztas();
  25.  
  26.    # segitsegkent az egyik ajtot kinyitjuk, ami mogott kecske van
  27.    my $help = &help($valasztas);
  28.    
  29.    # megvaltoztatjuk a velemenyunket:
  30.    my $ujvalasztas = "";
  31.    for (0..2){
  32.       unless (($_ == $help) or ($_ == $valasztas)){
  33.          $ujvalasztas = $_;
  34.       }
  35.    }
  36.  
  37.    # kinyitjuk az ajtot, megnezzuk, hogy nyertunk-e, ha kitartoak voltunk
  38.    if ($harom_fuggony{$valasztas} eq "kocsi"){
  39.       $nyer_kitarto++;
  40.    }
  41.    
  42.    # kinyitjuk az ajtot, megnezzuk, hogy nyertunk-e, ha meggondoltuk magunkat
  43.    if ($harom_fuggony{$ujvalasztas} eq "kocsi"){
  44.       $nyer_valtoztat++;
  45.    }
  46. }
  47.  
  48. # Kiszamoljuk, hogy mikor jartunk jobban:
  49. print "Kitarto vagyok: ", $nyer_kitarto/200000*100,"% az eselyem.\n";
  50. print "Okos vagyok: ", $nyer_valtoztat/200000*100,"% az eselyem.\n";
  51.  
  52. # Valasztas utan, a maradek kettokozul kivalasztjuk azt a fuggonyt, ami mogott kecske van.
  53. sub help {
  54.    my $valasztas = $_[0];
  55.    my @sor = ();
  56.    
  57.    for (my $i = 0; $i < 3; $i ++){
  58.       if ($i == $valasztas){
  59.          next;
  60.       }
  61.       elsif($harom_fuggony{$i} eq "kocsi"){
  62.          next;
  63.       }
  64.       elsif($harom_fuggony{$i} eq "kecske"){
  65.          push(@sor, $i);
  66.       }
  67.    }
  68.    
  69.    my $range = scalar(@sor);
  70.    return $sor[int(rand($range))];
  71. }
  72.  
  73. # Veletlenszeruen kivalasztuk a 3 fuggony egyiket
  74. sub valasztas {
  75.    my $range = 3;
  76.    return int(rand($range));
  77. }
  78.  
  79. # Veletlenszeruen kiosztjuk a kecskeket es a kocsit a fuggonyok mogott.
  80. sub elhelyezes {
  81.    my $range = "3";
  82.    my $kocsi_poz = int(rand($range));
  83.    
  84.    for (my $pos = 0 ; $pos < 3 ; $pos ++){
  85.       if ($kocsi_poz == $pos){
  86.          $harom_fuggony{$pos} = "kocsi";
  87.       }
  88.       else {
  89.          $harom_fuggony{$pos} = "kecske";        
  90.       }
  91.    }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement