Commit 5d31dfcd authored by christof's avatar christof
Browse files

gefangene

parent 6ca0bdf3
......@@ -90,7 +90,7 @@
while (keepsecret == tipp || (doors[tipp] != 1 && doors[keepsecret] != 1)) {
keepsecret = Math.floor(Math.random() * doors.length)
}
console.log("keeping secret " + keepsecret + " tipp was "+ tipp)
console.log("keeping secret " + keepsecret + " tipp was "+ tipp + "array is " + doors)
for (i=0;i<doors.length;i++) {
if (i != keepsecret && i != tipp) {
document.getElementById(eid + i).innerText = '🔒'
......@@ -99,10 +99,15 @@
document.getElementById(eid + "explain").innerText = "Wähle nochmal!"
state = 1
} else {
for (i=0;i<doors.length;i++) {
if (doors[i] == 0) {
document.getElementById(eid + i).innerText = '🔒'
}
}
if (doors[tipp]==1) {
document.getElementById(eid).innerText = "Endlich frei!"
document.getElementById(eid).innerHTML += "<center>Endlich frei!</center>"
} else {
document.getElementById(eid).innerText = "Weiter gefangen!"
document.getElementById(eid).innerHTML += "<center>Weiter gefangen!</center>"
}
}
}
......@@ -159,8 +164,13 @@
<h3>Zwei Gefangene</h3>
<ul>
<li>Der Wärter hat drei Boxen, und zwei passende Schlüssel für die
Zellen der beiden Gefangenen (eine Box ist leer). </li>
Zellen von zwei Gefangenen (eine Box ist leer). </li>
<li>Die drei Boxen werden in völlig zufälliger Reihenfolge angeordnet</li>
</ul>
</section>
<section>
<h3>Zwei Gefangene II </h3>
<ul>
<li>Jeder Gefangene kann nacheinander zwei Boxen aufmachen, aber der
zweite Gefangene sieht nicht, welche Boxen der erste aufgemacht hat, und die
Gefangenen können auch nicht miteinander kommunizieren, nachdem
......@@ -168,6 +178,7 @@
<li>Sie kommen nur frei, wenn <i>beide</i> ihren Schlüssel finden.</li>
</ul>
</section>
<section>
<h3>Normale Wahrscheinlichkeit</h3>
<ul>
......@@ -177,7 +188,7 @@
<li> Mit welcher Wahrscheinlichkeit findet der zweite seinen Schlüssel,
wenn er zufällig zwei Boxen öffnet?</li>
<li>Mit welcher Wahrscheinlichkeit finden <i>beide</i> ihre
Schlüssel, wenn sie zufällix Boxen öffnen?</li>
Schlüssel, wenn sie zufällig Boxen öffnen?</li>
<li>Können sie eine Strategie entwickeln, um die Wahrscheinlichkeit zu steigern?</li>
</ul>
</section>
......@@ -195,14 +206,116 @@
</section>
<section>
<h3>Optimale Strategie</h3>
<ul>
<li>Spieler 1 wählt Box1. Wenn S2 drin ist, wählt er Box3, wenn nichts drin ist,
wählt er Box2 (Wenn S1 drin ist, ist er sowieso fertig).</li>
<li>Spieler 2 wählt zuerst Box 2. Wenn nichts drin ist, wählt er Box 3,
wenn S1 drin ist, wählt er Box 1.</li>
<li>Überprüfe die Strategie für alle Fälle! Warum klappt das?</li>
</ul>
<div id="strategy">
<a class="btn" onclick="countdown(1000)">Starte Countdown zur Enthüllung</a>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
</div>
<script>
function countdown(n) {
var s
if (n==0) {
document.getElementById("strategy").innerHTML = `<ul>
<li>Spieler 1 wählt Box1. Wenn S2 drin ist, wählt er Box3, wenn nichts drin ist,
wählt er Box2 (Wenn S1 drin ist, ist er sowieso fertig).</li>
<li>Spieler 2 wählt zuerst Box 2. Wenn nichts drin ist, wählt er Box 3,
wenn S1 drin ist, wählt er Box 1.</li>
<li>Überprüfe die Strategie für alle Fälle! Warum klappt das?</li>
</ul>`
} else {
document.getElementById("strategy").innerHTML = `<center>${n}</center>`
window.setTimeout(function() {countdown(n-1)}, 300)
}
}
</script>
</section>
</section>
<section>
<section data-background-color="#388e3c">Und jetzt mal 100</section>
<section>
<h3>Um Mathe-Halbprofis zu ärgern...</h3>
<table><tr><td width="80%"> <ul>
<li>100 Gefangene, 100 Boxen mit nummerierten Schlüsseln 1-100.</li>
<li>Jeder Gefangene darf 50 Boxen öffnen, keiner sieht was der andere gemacht hat.</li>
<li>Sie kommen frei, wenn <i>jeder</i> seinen Schlüssel findet</li>
<li>Wahrscheinlichkeit bei zufälliger Wahl 0.5<sup>100</sup> &approx; 0</li>
<li>Beste Strategie?</li>
</ul>
</td><td><img src="wtf.jpg"></td></tr>
</table>
</section>
<section>
<h3>Strategie</h3>
<ul>
<li>Wähle die Box mit deiner Nummer</li>
<li>Dann wähle die Box mit der Nummer des Schlüssels, den du gefunden hast usw 50 mal</li>
<li><i><a href="https://arxiv.org/pdf/1110.1556.pdf">еврейская проблема</a></i>
= <i>jüdisches Problem</i>
russische Bezeichnung für Mathe-Prüfungsfragen, um in der Sowietunion den Zugang von jüdischen Menschen
zum Mathestudium zu begrenzen: praktisch unknackbar, aber wenn man
die Lösung kennt, eigentlich ganz einfach</li>
</ul>
</section>
<section>
<h3>Warum ist das besser?</h3>
<a onclick="simulate100()">Simuliere 20x 100 Boxen, längste Kette</a>
<script>
function simulate100() {
var l = 100
var success = 0
var e = document.getElementById("boxen100")
e.innerHTML = ""
for (i=0;i<30;i++) {
var a = [...Array(l).keys()]
shuffle(a)
var maxpos = 0
var maxlength = -1
for (j=0;j<l;j++) {
var pos = j
var curlength = 0
while (a[pos] != j) {
pos = a[pos]
curlength += 1
}
if (curlength > maxlength) {
maxlength=curlength
maxpos = j
}
console.log("j=" + j + ", maxlength = " + maxlength)
}
var a2 = new Array(l)
pos = maxpos
while (a[pos] != maxpos) {
a2[pos] = 1
pos = a[pos]
}
if (maxlength <= 50) {
success += 1
}
s = a.map((nr,index) => `<span style="color:${a2[index] ? 'red' : 'white'}">${nr}</span>`)
.join(",")
e.innerHTML += `<div style="overflow:visible;white-space: nowrap;font-size:8px">${s}
<span style="color:blue">Länge: ${maxlength}</span>
</div>`
}
e.innerHTML += `<center>${Math.round(success / 30 * 100)}% Erfolg</center>`
}
</script>
<div id="boxen100">
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
</div>
</section>
</section>
<section>
<section data-background-color="#388e3c">Viele Schlüssel, eine Tür</section>
......@@ -270,9 +383,11 @@
<option>8</option>
<option>9</option>
<option>10</option>
</select> Wärtern anwesend sein müssen, braucht man
<option>11</option>
<option>12</option>
</select> Wärtern anwesend sein müssen, <br>braucht man<br>
<input id="schloesser" size=3 type="number"> Schlösser und
für jeden Wärter <input id="schluessel" size=3 type="number">
für jeden Wärter <input id="schluessel" size=3 type="number">Schlüssel.
<a class="btn" onclick="checkschloss()">Prüfen</a>
<div id="schlossergebnis"></div>
......@@ -283,57 +398,44 @@
}
function checkschloss() {
var w = parseInt(document.getElementById("waerter").value)
var w2 = parseInt(document.getElementById("waerter").value)
var w2 = parseInt(document.getElementById("waerter2").value)
var guess1 = parseInt(document.getElementById("schloesser").value)
var guess2 = parseInt(document.getElementById("schluessel").value)
if (w2
if ((w2 >= w) && binomial(w2, w-1)==guess1 && binomial(w2-1, w-1) == guess2) {
document.getElementById("schlossergebnis").innerHTML = "Korrekt!"
} else {
document.getElementById("schlossergebnis").innerHTML = "Leider nein!"
}
}
</script>
<ul>
<li>Ein Wärter hat folgende Idee: Wir machen drei Schlösser, und
geben drei Wärtern jeweils zwei Schlüssel:
<ul>
<li>W1: S1, S2</li>
<li>W2: S2, S3</li>
<li>W3: S1, S3</li>
</ul>
</li>
<li>Wenn man sichergehen will, dass mindestens zwei von
drei Wärtern aufschließen, braucht man also mindestens
3 Schlösser und jeder Wärter braucht 2 Schlüssel.
</li>
</ul>
<i>Wer schafft das korrekte Ergebnis mit der meisten Anzahl Schlössern?</i>
</section>
</section>
<section>
<section data-background-color="#388e3c">Das Schachbrett</section>
<section>
<h3>Der versteckte Schlüssel I</h3>
<h3>Vorschau: Der versteckte Schlüssel I</h3>
<ul>
<li>Diesmal hat der Wärter auf ein zufälliges Feld eines Schachbrettes
<li>Diesmal hat der Wärter auf ein Feld eines Schachbrettes
den Code für die Zellentür geschrieben, und alle Felder mit
Münzen bedeckt</li>
<li>Die Münzen liegen zufällig mit Kopf oder Zahl nach oben</li>
<li>Die Münzen liegen völlig zufällig mit Kopf oder Zahl nach oben</li>
<li>Wenn ein Gefangener beim ersten Versuch das Feld mit dem Code
findet, ist er frei</li>
findet, ist er frei (welche Wahrscheinlichkeit hat das?)</li>
</ul>
</section>
<section>
<h3>Der versteckte Schlüssel II</h3>
<ul>
<li>Aus Gemeinheit erklärt der Wärter, dass er einem anderen Gefangenen die Position des
<li>Aus Gemeinheit erklärt der Wärter, dass er einem zweiten Gefangenen vorher die Position des
Codes zeigen werde, dieser dürfe seinem Mitgefangenen aber <i>nichts</i> sagen.</li>
<li>Wie zum Hohn fügt der Wärter hinzu, er würde dem ersten Gefangenen
erlauben, ihm eine Münze zu zeigen, die er umdrehen soll.</li>
<li>Wie zum Hohn fügt der Wärter hinzu, er würde dem zweiten Gefangenen
erlauben, ihm <b>eine</b> Münze zu zeigen, die er umdrehen soll.</li>
<li>Können die beiden Gefangenen sich vorher so verabreden, dass
der zweite Gefangene die Position des Codes erraten kann?</li>
der erste Gefangene die Position des Codes erraten kann? (Spoiler: Ja. Aber wie?)</li>
</ul>
</section>
</section>
</div>
</div>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment