Commit a93668ef authored by christof's avatar christof
Browse files

game of life

parent f0ba031e
......@@ -75,14 +75,14 @@
Das Urteil soll innerhalb einer Woche vollstrekt werden, aber der
Verurteilte soll, wenn er aufwacht, nicht wissen, dass er heute gehenkt wird.</li>
<li> Der Verurteilte überlegt: Wenn ich bis nächsten Freitag noch lebe,
<i>muss</i> ich am Freitag gehenkt werden. Das weiß ich dann aber, also
muß ich <i>vor</i> Freitag gehenkt werden.</li>
<em>muss</em> ich am Freitag gehenkt werden. Das weiß ich dann aber, also
muß ich <em>vor</em> Freitag gehenkt werden.</li>
</ul>
</section>
<section>
<h3>Die Rettung?</h3>
<ul>
<li> Wenn ich Donnerstag noch lebe, <i>muss</i> ich, da ich ja nicht Freitag
<li> Wenn ich Donnerstag noch lebe, <em>muss</em> ich, da ich ja nicht Freitag
gehenkt werde, am Donnerstag gehenkt werden. Das geht aber nicht, also
kann ich auch nicht Donnerstag gehenkt werden.</li>
<li>Völlig beruhigt richtet sich der Gefangene in seiner Zelle ein, sicher,
......@@ -107,8 +107,8 @@
unterwerfen, würde in der gleichen Formel die Bewegungen
der größten Himmelskörper und die des leichtesten Atoms
einbegreifen. Nichts wäre für sie ungewiss, Zukunft und
Vergangenheit lägen klar vor ihren Augen. <i>(Pierre-Simon
Laplace, 1814)</i></p>
Vergangenheit lägen klar vor ihren Augen. <em>(Pierre-Simon
Laplace, 1814)</em></p>
</section>
<section>
<h3>Das einfachste Universum</h3>
......@@ -122,6 +122,7 @@
</section>
<section>
<h3>Ein denkbares Naturgesetz</h3>
<small>
<table border=1>
<thead>
<tr>
......@@ -142,6 +143,7 @@
<tr><td>1</td><td>1</td><td>1</td><td>0</td></tr>
</tbody>
</table>
</small>
<p>Super-langweiliges Universum, unabhängig vom Anfangszustand
sind zum nächsten Zeitpunkt alle 0. Wieviele mögliche
Naturgesetze gibt es? </p>
......@@ -216,9 +218,203 @@
</section>
</section>
<section>
<section data-background-color="#388e3c">Zweidimensional</section>
<section>
<h3>Zweidimensional</h3>
<ul>
<li>Wir gehen jetzt in die <em>zweite<emi> Dimension</li>
<li>In 2 Dimensionen hat jede Position 8 Nachbarn</li>
<li>Wir machen keinen Unterschied zwischen linken,
rechten etc. Nachbarn, sondern fragen nur, <em>wiviele</em>
Nachbarn 1 (lebend) oder 0 (tot) sind</li>
<li>Unsere denkbaren Naturgesetze beziehen sich
auf die Frage: Ist man selber tot/lebendig, und wieviele
Nachbarn sind tot/lebendig.</li>
<li>Für jede Anzahl lebendiger Nachbarn legen wir in beiden
Fällen fest, ob man im nächsten Zeitschritt lebt</li>
</ul>
</section>
<section>
<h3>Unser Naturgesetz</h3>
<ul>
<li><em>Zwei</em> 8-Bit-Zahlen &ndash; Wieviele Möglichkeiten ergibt das?</li>
<li>Als Start legen wir einen 3x3-Block aus Nullen und Einsen in der Mitte fest</li>
</ul>
</section>
<section>
Lebend: <select id="law1" onchange="cancel2()"></select>
Tot: <select id="law0" onchange="cancel2()"></select>
Start: <textarea id="start2" cols="3" width="3" onclick="cancel2()" style="font-size:8px">000
010
000</textarea>
<a class="btn" onclick="simulate2()">Los!</a> <span id="generation2"></span><br>
<table class="unitable" id="universe2"></table>
<script>
for (let i=0;i<256;i++) {
document.getElementById("law0").add(
new Option(i.toString(2).padStart(8,'0'), i))
document.getElementById("law1").add(
new Option(i.toString(2).padStart(8,'0'), i))
}
function inittable2() {
var el = document.getElementById("universe2")
for (var i = 0; i < maxrows; i++) {
var tr = document.createElement('tr');
for (var j = 0; j < maxcols; j++) {
var td = document.createElement('td');
td.appendChild(document.createTextNode(''))
tr.appendChild(td)
}
el.appendChild(tr);
}
}
inittable2()
var uni2_current = []
var uni2_next = []
var uni2_timer
function cancel2() {
if (uni2_timer) {
clearTimeout(uni2_timer)
}
}
function showcurrent2() {
var tr = document.querySelectorAll("#universe2 tr")
for (var y=0;y<tr.length;y++) {
var td = tr[y].querySelectorAll("td")
for (var x=0;x<td.length;x++) {
td[x].style.color = uni2_current[y * maxcols + x] ? "red" : "blue"
}
}
}
function setstart2() {
for (var x=0;x<maxcols;x++) {
for (var y=0;y<maxrows;y++) {
uni2_current[y * maxcols + x]=0;
}
}
var midx = Math.floor(maxcols / 2) - 1
var midy = Math.floor(maxrows / 2) - 1
var sv = document.getElementById("start2").value.split(/[\r\n]+/).map(s =>
s.split('').map(s => parseInt(s)))
for (y=0;y<sv.length;y++) {
var sc = sv[y]
for (x=0;x<sc.length;x++) {
uni2_current[(y + midy)*maxcols + x + midx] = sc[x]
}
}
}
function simulate2() {
cancel2()
setstart2()
step2(0)
}
function step2(generation) {
function getAt(x,y) {
if (x<0 || x>= maxcols || y<0 || y>= maxrows) {
return 0;
} else {
return uni2_current[y * maxcols + x]
}
}
showcurrent2()
document.getElementById("generation2").innerText = generation
for (var y=0;y<maxrows;y++) {
for (var x=0;x<maxcols;x++) {
var law = document.getElementById("law" + (getAt(x,y) ? "1": "0")).value
var count = 0
for (var addy=-1;addy<=1;addy++) {
for (var addx=-1;addx<=1;addx++) {
if (!(addx == 0 && addy == 0)) {
count += getAt(x + addx, y + addy)
}
}
}
uni2_next[y * maxcols + x] = (law & (1 << count)) ? 1 : 0
}
}
uni2_current = [...uni2_next]
uni2_timer = window.setTimeout(function() {step2(generation+1)}, 500)
}
</script>
</section>
<section>
<h3>Viele interessante Universen</h3>
<ul>
<li>Interessantes Universum von John Conway:<br>
Regel für Tote: 00001000<br>
Regel für Lebende: 00001100<br>
Start:<pre>011
110
010</pre>
</li>
<li> Versuche einen Start zu finden, der gleich bleibt!</li>
<li> ... einen Start, der zwischen zwei Zuständen wechselt!</li>
</ul>
</section>
<section>
<h3>Andere Start-Konstellationen</h3>
<ul>
<li> Was passiert beim Start<pre>010
001
111</pre></li>
<li>Und bei<pre>
111
101
101
000
101
101
111</pre></li>
</ul>
</section>
<section>
<h3>Ein weiterer schöner Start</h3>
<pre>0000000000000000000000001
0000000000000000000000101
000000000000110000001100000000000011
000000000001000100001100000000000011
1100000000100000100011
1100000000100010110000101
0000000000100000100000001
0000000000010001
00000000000011</pre>
</section>
<section>
<h3>Eine andere interessante Welt</h3>
<ul>
<li>Regel für Tote und Lebende: 01010101</li>
<li>Probiere zB einen Startwert
<pre>
101
010
101
</pre>
</li>
</ul>
</section>
<section>
<h3>Game of Life</h3>
<ul>
<li>Manche einfache Regeln führen zu wunderbaren, komplexen Mustern</li>
<li>Die meisten Regeln führen zu einfachen Zuständen (alle tot, alle lebend)</li>
<li>Wie entsteht Komplexität, wie entsteht Leben?</li>
<li>In welchem Sinne <em>existiert</em> ein Gleiter, auch wenn entfernte Punkte
nichts voneinander <em>wissen</em> und jeder Punkt nur eine simple Regel befolgt?</li>
<li>In welchem Sinne <em>existiert</em> ein Gedanke, wenn alle Nervenzellen nur
einfachen naturwissenschaftlichen Gesetzen gehorchen?</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