Advertisement
Guest User

Gefangenenraetsel

a guest
Feb 26th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.15 KB | None | 0 0
  1. % Initialisiere Gefangene mit Status 0 (noch nie im Raum gewesen)
  2. % Gefangener A = Gef(1), mit Null initialisiert, weil noch nichts gezählt
  3. Gef=zeros(100,1);
  4. % Initialisiere den Raum mit Status 1 (Licht ist aus)
  5. r=1;
  6. % Starttag ist Tag 0
  7. days=0;
  8. while Gef(1)<99
  9.     % morgens (neuer Tag)
  10.     days=days+1;
  11.     % zufälliger Gefangener wird gewählt (Gefangener x)
  12.     x=randi(100);
  13.     if (x==1 && r==0)
  14.     % ist Gefangener x der Gefangene A UND die Lampe leuchtet
  15.     % dann merkt sich Gefangener A eine Zahl mehr und macht den Raum aus
  16.         Gef(x)=Gef(x)+1;
  17.         r=1;
  18.     elseif (x~=1)
  19.     % Ist der Status vom ausgewählten Gefangenen 0 (er war noch nie im
  20.     % Raum)dann setzt er den Raumstatus auf 0 (Licht an)
  21.     % hat er den Raumstatus geändert (von 1 auf 0), dann ändert er seinen
  22.     % eigenen Status auf 1. War der Raumstatus vorher schon 0, dann
  23.     % belässt der Gefangene seinen Status auf 0.
  24.     % Ist der Status des Gefangenen 1, dann ändert er nichts am Raumstatus
  25.         dr=r-Gef(x)*r + Gef(x);
  26.         r = Gef(x)*r;
  27.         Gef(x) = dr;
  28.    
  29.     end
  30.     % wiederhole das Ganze, bis Gefangener A 99 mal gezählt hat
  31. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement