Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def draw(t, length, n):\n",
" if n == 0:\n",
" return\n",
" angle = 50\n",
" t.fd(length*n)\n",
" t.lt(angle)\n",
" draw(t, length, n-1)\n",
" t.rt(2*angle)\n",
" draw(t, length, n-1)\n",
" t.lt(angle)\n",
" t.bk(length*n)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"#### Aufgabe 6\n",
"\n",
"Die [Koch-Kurve](https://de.wikipedia.org/wiki/Koch-Kurve) ist ein [Fraktal](https://de.wikipedia.org/wiki/Fraktal), welches ungefähr so aussieht:\n",
"\n",
"\n",
"\n",
"Um eine Koch-Kurve der Länge x zu zeichnen, müssen wir nur folgendes tun:\n",
"1. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"2. Um 60° nach links drehen.\n",
"3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"2. Um 120° nach rechts drehen.\n",
"3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"2. Um 60° nach links drehen.\n",
"3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"\n",
"Eine Ausnahme gibt es, falls x kleiner als 3 ist: dann zeichnen wir einfach eine Strecke der Länge 3.\n",
"\n",
"1. Schreiben Sie eine Funktion `koch`, die eine Schildkröte und eine Länge als Argumente erwartet und die Schildkröte nutzt, um eine Koch-Kurve der gegebenen Länge zu zeichnen.\n",
"2. Schreiben Sie eine Funktion `schneeflocke`, die drei Koch-Kurven zeichnet, so dass sich der Umriss einer Schneeflocke ergibt.\n",
"\n",
" Lösung: http://thinkpython2.com/code/koch.py\n",
"3. Die Koch-Kurve kann auf verschiedene Art und Wiese verallgemeinert werden. Schauen Sie sich die [Beispiele auf Wikipedia](https://en.wikipedia.org/wiki/Koch_snowflake#Variants_of_the_Koch_curve) an und implementieren Sie ihren Favoriten.\n",
"\n",
"\n",
"\n",
"([Eric Baird](https://commons.wikimedia.org/wiki/File:Koch_Curve_in_Three_Dimensions_%28%22Delta%22_fractal%29.jpg))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Speichern Sie dieses Notebook, so dass Ihre Änderungen nicht verlorengehen (nicht auf einem Pool-Rechner). Klicken Sie dazu oben links auf das Disketten-Icon und nutzen Sie beispielsweise einen USB-Stick, E-Mail, Google Drive, Dropbox oder Ihre [HU-Box](https://box.hu-berlin.de/). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Herzlichen Glückwunsch! Sie haben das 5. Kapitel geschafft. Weiter geht es in [6: Ergebnisreiche Funktionen](seminar06.ipynb)."