
das Spiel Flip
Von: Delastelle
Datum: So. 26. März 2023 10:15:32 Thema: Spiele+Rätsel
| David H.Ahl stellte in seinen 2 Bänden "Basic Computer Spiele"
(erschienen kurz vor 1980) das Spiel Flip vor.
Dabei geht es darum 50 mal ja oder nein zu tippen.
Der Computer wählt auch 50 mal ja oder nein.
Nach jedem Tipp wird verglichen:
hat man den Tipp des Computers korrekt?
Ziel ist es bei 50 mal 25 mal oder mehr korrekte Züge des Computers vorherzusagen.
Hier wird das Basic-Programm von Ahl übersetzt als Octave File mit den Antworten 0 und 1 wiedergegeben.
Es folgen ein paar Testläufe.
1.Basic Quelltext von Ahl
Beschreibung, Testlauf bei Ahl, Basic-Quelltext
2.Octave Quelltext
\sourceon Octave
% Flip nach Ahl
% Anzeige '*' bei richtig geraten
% bei 50 Versuchen ist eine Anzahl von 25 oder besser gut
b1 = 50;
s1 = 0;
s2 = 0;
eps = 0.0000001;
erg = ' ';
p = zeros(16,1);
x = zeros(4,1);
for i = 1:16
p(i) = 0.5;
end
for i = 1:4
x(i) = 0;
if (rand < 0.5)
x(i) = 1;
end
end
f1 = 0.8;
f2 = 0.3;
s1 = 0;
s2 = 0;
ende = 0;
erg = ' ';
while (ende == 0)
i9 = 8*x(4)+4*x(3)+2*x(2)+x(1)+1;
z1 = p(i9);
z2 = z1;
z5 = 0;
if (abs(z2-0.5) < eps)
z2 = rand;
end
if (z2 <= 0.5)
z2 = z2*f2+0*(1-f2);
else
z2 = z2*f2+1*(1-f2);
end
if (rand >= z2)
z5 = 1;
end
% Eingabe Benutzer
fprintf(erg);
fprintf('(%i)',s2+1);
% Eingabe
a = '';
ende2 = 0;
while (ende2 == 0)
a = input(' 0 oder 1 ');
if (a == 0)
ende2 = 1;
end
if (a == 1)
ende2 = 1;
end
end
if (a == 1)
z3 = 1;
end
if (a == 0)
z3 = 0;
end
erg = ' ';
s2 = s2 + 1;
if (z3 == z5)
% richtig geraten
erg = '*';
s1 = s1 + 1;
end
% erneuere x - die letzten 4 Antworten
x(1) = x(3);
x(2) = x(4);
x(3) = z3;
x(4) = z5;
p(i9) = f1*p(i9)+(1-f1)*x(3);
if (s2 >= b1)
ende = 1;
end
end
fprintf(erg);
fprintf('Ende\n');
fprintf('von %i hast du %i richtig erraten.\n',s2,s1);
\sourceoff
3.Testläufe
(a) alles 0 tippen
\sourceon Test 1
>> FlipAhl
(1) 0 oder 1 0
(2) 0 oder 1 0
(3) 0 oder 1 0
*(4) 0 oder 1 0
*(5) 0 oder 1 0
*(6) 0 oder 1 0
(7) 0 oder 1 0
(8) 0 oder 1 0
(9) 0 oder 1 0
(10) 0 oder 1 0
*(11) 0 oder 1 0
(12) 0 oder 1 0
(13) 0 oder 1 0
(14) 0 oder 1 0
(15) 0 oder 1 0
(16) 0 oder 1 0
(17) 0 oder 1 0
(18) 0 oder 1 0
(19) 0 oder 1 0
(20) 0 oder 1 0
(21) 0 oder 1 0
(22) 0 oder 1 0
(23) 0 oder 1 0
(24) 0 oder 1 0
(25) 0 oder 1 0
(26) 0 oder 1 0
(27) 0 oder 1 0
(28) 0 oder 1 0
(29) 0 oder 1 0
(30) 0 oder 1 0
(31) 0 oder 1 0
(32) 0 oder 1 0
(33) 0 oder 1 0
(34) 0 oder 1 0
(35) 0 oder 1 0
(36) 0 oder 1 0
(37) 0 oder 1 0
(38) 0 oder 1 0
(39) 0 oder 1 0
(40) 0 oder 1 0
(41) 0 oder 1 0
(42) 0 oder 1 0
(43) 0 oder 1 0
(44) 0 oder 1 0
(45) 0 oder 1 0
(46) 0 oder 1 0
(47) 0 oder 1 0
(48) 0 oder 1 0
(49) 0 oder 1 0
(50) 0 oder 1 0
Ende
von 50 hast du 4 richtig erraten.
\sourceoff
(b) 0 1 0 1 0 1 usw.
\sourceon Test 2
>> FlipAhl
(1) 0 oder 1 0
(2) 0 oder 1 1
*(3) 0 oder 1 0
*(4) 0 oder 1 1
(5) 0 oder 1 0
*(6) 0 oder 1 1
(7) 0 oder 1 0
(8) 0 oder 1 1
*(9) 0 oder 1 0
(10) 0 oder 1 1
(11) 0 oder 1 0
*(12) 0 oder 1 1
(13) 0 oder 1 0
(14) 0 oder 1 1
(15) 0 oder 1 0
(16) 0 oder 1 1
(17) 0 oder 1 0
(18) 0 oder 1 1
(19) 0 oder 1 0
(20) 0 oder 1 1
(21) 0 oder 1 0
(22) 0 oder 1 1
(23) 0 oder 1 0
(24) 0 oder 1 1
(25) 0 oder 1 0
(26) 0 oder 1 1
(27) 0 oder 1 0
(28) 0 oder 1 1
(29) 0 oder 1 0
(30) 0 oder 1 1
(31) 0 oder 1 0
(32) 0 oder 1 1
(33) 0 oder 1 0
(34) 0 oder 1 1
(35) 0 oder 1 0
(36) 0 oder 1 1
(37) 0 oder 1 0
(38) 0 oder 1 1
(39) 0 oder 1 0
(40) 0 oder 1 1
(41) 0 oder 1 0
(42) 0 oder 1 1
(43) 0 oder 1 0
(44) 0 oder 1 1
(45) 0 oder 1 0
(46) 0 oder 1 1
(47) 0 oder 1 0
(48) 0 oder 1 1
(49) 0 oder 1 0
(50) 0 oder 1 1
Ende
von 50 hast du 5 richtig erraten.
\sourceoff
(c) bei Primzahlen Wechsel
primes(50)
Columns 1 through 11:
2 3 5 7 11 13 17 19 23 29 31
Columns 12 through 15:
37 41 43 47
\sourceon Test 3
>> FlipAhl
(1) 0 oder 1 0
(2) 0 oder 1 1
(3) 0 oder 1 0
(4) 0 oder 1 0
*(5) 0 oder 1 1
(6) 0 oder 1 1
(7) 0 oder 1 0
(8) 0 oder 1 0
(9) 0 oder 1 0
(10) 0 oder 1 0
(11) 0 oder 1 1
*(12) 0 oder 1 1
(13) 0 oder 1 0
(14) 0 oder 1 0
(15) 0 oder 1 0
(16) 0 oder 1 0
(17) 0 oder 1 1
(18) 0 oder 1 1
*(19) 0 oder 1 0
(20) 0 oder 1 0
(21) 0 oder 1 0
(22) 0 oder 1 0
(23) 0 oder 1 1
*(24) 0 oder 1 1
(25) 0 oder 1 1
*(26) 0 oder 1 1
*(27) 0 oder 1 1
(28) 0 oder 1 1
(29) 0 oder 1 0
(30) 0 oder 1 0
(31) 0 oder 1 1
*(32) 0 oder 1 1
(33) 0 oder 1 1
(34) 0 oder 1 1
*(35) 0 oder 1 1
(36) 0 oder 1 1
(37) 0 oder 1 0
(38) 0 oder 1 0
(39) 0 oder 1 0
*(40) 0 oder 1 0
*(41) 0 oder 1 1
(42) 0 oder 1 1
(43) 0 oder 1 0
(44) 0 oder 1 0
(45) 0 oder 1 0
(46) 0 oder 1 0
(47) 0 oder 1 1
*(48) 0 oder 1 1
(49) 0 oder 1 1
(50) 0 oder 1 1
*Ende
von 50 hast du 12 richtig erraten.
\sourceoff
(d) Zufall von Hand
\sourceon Test 4
>> FlipAhl
(1) 0 oder 1 0
*(2) 0 oder 1 0
(3) 0 oder 1 1
(4) 0 oder 1 1
*(5) 0 oder 1 1
(6) 0 oder 1 0
(7) 0 oder 1 0
(8) 0 oder 1 1
*(9) 0 oder 1 1
(10) 0 oder 1 0
*(11) 0 oder 1 1
(12) 0 oder 1 0
*(13) 0 oder 1 0
*(14) 0 oder 1 1
(15) 0 oder 1 1
*(16) 0 oder 1 0
*(17) 0 oder 1 0
*(18) 0 oder 1 1
(19) 0 oder 1 0
*(20) 0 oder 1 1
*(21) 0 oder 1 0
*(22) 0 oder 1 0
(23) 0 oder 1 1
(24) 0 oder 1 1
(25) 0 oder 1 0
(26) 0 oder 1 0
(27) 0 oder 1 1
(28) 0 oder 1 1
*(29) 0 oder 1 0
(30) 0 oder 1 0
(31) 0 oder 1 1
(32) 0 oder 1 1
*(33) 0 oder 1 1
*(34) 0 oder 1 1
*(35) 0 oder 1 1
(36) 0 oder 1 0
(37) 0 oder 1 1
*(38) 0 oder 1 1
(39) 0 oder 1 0
(40) 0 oder 1 0
*(41) 0 oder 1 1
*(42) 0 oder 1 1
*(43) 0 oder 1 1
*(44) 0 oder 1 1
(45) 0 oder 1 0
(46) 0 oder 1 0
(47) 0 oder 1 1
(48) 0 oder 1 1
(49) 0 oder 1 1
*(50) 0 oder 1 1
Ende
von 50 hast du 22 richtig erraten.
\sourceoff
(e) Zufall per Hand Versuch -2-
\sourceon Test 5
>> FlipAhl
(1) 0 oder 1 0
*(2) 0 oder 1 0
*(3) 0 oder 1 1
(4) 0 oder 1 1
*(5) 0 oder 1 1
*(6) 0 oder 1 0
(7) 0 oder 1 1
(8) 0 oder 1 01
(9) 0 oder 1 1
*(10) 0 oder 1 1
(11) 0 oder 1 1
*(12) 0 oder 1 0
*(13) 0 oder 1 0
(14) 0 oder 1 1
*(15) 0 oder 1 1
*(16) 0 oder 1 1
*(17) 0 oder 1 1
(18) 0 oder 1 0
*(19) 0 oder 1 0
(20) 0 oder 1 0
*(21) 0 oder 1 0
(22) 0 oder 1 1
*(23) 0 oder 1 1
(24) 0 oder 1 1
*(25) 0 oder 1 0
(26) 0 oder 1 0
(27) 0 oder 1 0
(28) 0 oder 1 1
*(29) 0 oder 1 1
(30) 0 oder 1 0
(31) 0 oder 1 1
*(32) 0 oder 1 0
*(33) 0 oder 1 1
*(34) 0 oder 1 0
(35) 0 oder 1 1
*(36) 0 oder 1 1
(37) 0 oder 1 0
(38) 0 oder 1 0
*(39) 0 oder 1 1
*(40) 0 oder 1 0
(41) 0 oder 1 1
(42) 0 oder 1 0
*(43) 0 oder 1 1
(44) 0 oder 1 0
*(45) 0 oder 1 1
(46) 0 oder 1 1
*(47) 0 oder 1 0
(48) 0 oder 1 1
(49) 0 oder 1 0
*(50) 0 oder 1 1
Ende
von 50 hast du 25 richtig erraten.
\sourceoff
(f) Zufall per Hand Versuch -3-
\sourceon Test 6
>> FlipAhl
(1) 0 oder 1 0
(2) 0 oder 1 0
*(3) 0 oder 1 0
*(4) 0 oder 1 0
*(5) 0 oder 1 1
*(6) 0 oder 1 1
*(7) 0 oder 1 1
(8) 0 oder 1 0
*(9) 0 oder 1 0
(10) 0 oder 1 1
*(11) 0 oder 1 0
(12) 0 oder 1 1
*(13) 0 oder 1 0
(14) 0 oder 1 1
*(15) 0 oder 1 1
*(16) 0 oder 1 1
(17) 0 oder 1 0
(18) 0 oder 1 0
*(19) 0 oder 1 1
*(20) 0 oder 1 1
(21) 0 oder 1 0
(22) 0 oder 1 0
(23) 0 oder 1 0
(24) 0 oder 1 1
*(25) 0 oder 1 1
*(26) 0 oder 1 1
(27) 0 oder 1 1
*(28) 0 oder 1 1
(29) 0 oder 1 0
(30) 0 oder 1 1
*(31) 0 oder 1 0
*(32) 0 oder 1 0
(33) 0 oder 1 1
*(34) 0 oder 1 1
*(35) 0 oder 1 1
*(36) 0 oder 1 0
*(37) 0 oder 1 0
(38) 0 oder 1 1
(39) 0 oder 1 1
(40) 0 oder 1 0
(41) 0 oder 1 1
*(42) 0 oder 1 1
(43) 0 oder 1 1
*(44) 0 oder 1 0
*(45) 0 oder 1 1
*(46) 0 oder 1 0
*(47) 0 oder 1 1
*(48) 0 oder 1 0
(49) 0 oder 1 1
*(50) 0 oder 1 0
*Ende
von 50 hast du 29 richtig erraten.
\sourceoff
Ein Stern (*) bedeutet, dass man richtig geraten hat.
Wer möchte, kann versuchen gegen den Computer noch besser abzuschneiden.
Oder aber einen besseren Computergegner programmieren.
Danke fürs Lesen
sagt Ronald
|
|