Commit cbd3d2c7 authored by christof's avatar christof
Browse files

schachbrett funktioniert

parent 4bf19bab
......@@ -13,6 +13,10 @@
<!-- Theme used for syntax highlighted code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme">
<style>
.hand {
cursor:pointer;
}
.btn {
cursor:pointer;
border-style:dotted;
......@@ -43,33 +47,7 @@
<body>
<div class="reveal">
<div class="slides">
<section>Das Ultimative Gefangenen-Schachbrett-Rätsel (&amp; Codes)</section>
<section>
<section data-background-color="#388e3c">Rückschau: Das Schachbrett</section>
<section>
<h3>Rückschau: Der versteckte Schlüssel I</h3>
<ul>
<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 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 (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 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 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 erste Gefangene die Position des Codes erraten kann? (Spoiler: Ja. Aber wie?)</li>
</ul>
</section>
</section>
<section>Codes &amp; Das Ultimative Gefangenen-Schachbrett-Rätsel</section>
<section>
<section data-background-color="#388e3c">Manipulation entdecken</section>
<section>
......@@ -113,9 +91,40 @@
}
</script>
</section>
<section>
<h3>Erweiterungen</h3>
<ul>
<li>Wie kann man feststellen, ob <i>zwei</i> Ziffern geändert wurden?</li>
<li>Wie könnte man feststellen, ob <i>irgendetwas</i> an der Nachricht geändert wurde?</li>
<li>Wie könnte man trotz fehlerhafter Übertragung die korrekte Nachricht erhalten?</li>
</ul>
</section>
</section>
<section>
<section data-background-color="#388e3c">Das nummerierte Schachbrett</section>
<section data-background-color="#388e3c">Rückschau: Das Schachbrett</section>
<section>
<h3>Rückschau: Der versteckte Schlüssel I</h3>
<ul>
<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 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 (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 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 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 erste Gefangene die Position des Codes erraten kann? (Spoiler: Ja. Aber wie?)</li>
</ul>
</section>
<section>
<a class="btn" onclick="mischen()">Mischen</a><br>
<small>
......@@ -202,12 +211,27 @@
</tr>
</table>
<p>Position <span id="pos"></span><br>
Farbposition: <span id="colorpos"></span>
Farbposition: <span id="colorpos"></span><br>
<textarea id="colortext"></textarea>
</p>
</small>
<script>
var posx;
var posy;
function inithandlers() {
for(var x=1;x<9;x++) {
for (var y=1;y<9;y++) {
var e = document.getElementById("ss" + x + y)
e.classList.add("hand")
function sethandler(x1,y1) {
e.addEventListener('click', function() {changecolor(x1,y1)})
}
sethandler(x,y)
}
}
}
inithandlers()
function mischen() {
var x;
var y;
......@@ -229,6 +253,48 @@
}
}
}
colorpos()
}
filtercol = [(x,y) => x < 5,
(x,y) => (x-1) % 4 < 2,
(x,y) => (x-1) % 2 == 0,
(x,y) => y < 5,
(x,y) => (y-1) % 4 < 2,
(x,y) => (y-1) % 2 == 0]
function changecolor(x,y) {
console.log(`changing color of ${x} ${y}`)
var e = document.getElementById("ss" + x + y)
e.style.color = (e.style.color == "red")? "blue" : "red"
colorpos()
}
function colorpos() {
var s = ""
var sum = [0,0,0,0,0,0]
for(y=1;y<9;y++) {
for (x=1;x<9;x++) {
var e = document.getElementById("ss" + x + y)
if (e.style.color=="red") {
s += "1"
for (i=0;i<sum.length;i++) {
if (filtercol[i](x,y)) {
sum[i] = (sum[i] + 1) % 2
}
}
} else {
s += "0"
}
}
s = s + "\n"
}
document.getElementById("colortext").value = s
document.getElementById("colorpos").innerHTML =
sum.map((val,i) => `<span onmouseenter="colorize(${i})"
onmouseleave="resetcolor()">${val}</span>`)
.join('')
}
function resetcolor() {
var x;
......@@ -240,6 +306,16 @@
}
}
}
function colorize(i) {
for(x=1;x<9;x++) {
for (y=1;y<9;y++) {
if (filtercol[i](x,y)) {
var e = document.getElementById("ss" + x + y)
e.style.backgroundColor = "grey"
}
}
}
}
</script>
</section>
......
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