PythonmaniaScript Different! |
|
|
Navigation
Artikel zu Python
Warum Python? Hallo Welt Wie alt ist der Kapitän? Schmetterlingskurve Apfelmännchen Dancing Python User-Agenten fakeMail() Template Engine Python & XML (1) wxPython (1) wxPython (2) wxPython (3) How To's ftp mit Python Filedialog Piddle und Mac OS X XML-RPC Blogger API Zope und Python ZWiki und Plone Navigation und DTML »Last Update« Book Reviews Python und Tkinter Python Cookbook Alte Artikel O'Reilly MacPython & Tkinter (d) MacPython & Tkinter (e) Modul W Easy Dialogs File Dialogs Archiv Oktober 2009 Juni 2009 Mai 2009 April 2009 März 2009 Februar 2009 Januar 2009 Dezember 2008 November 2008 Oktober 2008 September 2008 August 2008 Juli 2008 Juni 2008 Mai 2008 April 2008 März 2008 Februar 2008 Januar 2008 Dezember 2007 November 2007 Oktober 2007 September 2007 August 2007 Juli 2007 Juni 2007 Mai 2007 April 2007 März 2007 Februar 2007 Januar 2007 Dezember 2006 November 2006 Oktober 2006 September 2006 August 2006 Juli 2006 Juni 2006 Mai 2006 April 2006 März 2006 Februar 2006 Januar 2006 Dezember 2005 November 2005 Oktober 2005 September 2005 August 2005 Juli 2005 Juni 2005 Mai 2005 April 2005 März 2005 Februar 2005 |
Anzeigen
|
|
Wie alt ist der KapitänWer von uns ist nicht als Kind mit folgender »Denksportaufgabe« reingelegt worden? Ein Schiff ist 99 Meter lang, hat drei Masten und 157 Quadratmeter Segelfläche; an Bord befinden sich 36 Mann Besatzung, darunter 11 Chinesen und ein Puertoricaner, ferner zwei Hunde, fünf Katzen und ein Papagei. Wie alt ist der Kapitän? Diese angebliche Denksprtaufgabe wurde von Georg Polya aus Zürich in ein echtes Rätsel verwandelt: Die Länge eines Schiffes in Metern ist eine ganze Zahl, der Kapitän hat Söhne und Töchter und er ist älter als die Anzahl seiner Kinder, aber noch nicht 100 Jahre alt. Wie alt ist der Kapitän, wieviele Kinder hat er und wie lang ist sein Schiff, wenn das Produkt dieser drei Zahlen 32118 beträgt? Dies ist eine sogenannte »diophantische« Aufgabe, das sind Aufgaben der Art Finde ganze Zahlen x, y, z mit x*y*z = n n ist in unserem Fall 32118. Mathematiker lösen die Aufgabe, indem sie die Zahl 32118 in ihre Primfaktoren 2, 3, 53, 101 zerlegen und dann daraus die sechs Tripel (6, 53, 101), (3, 101, 106), (3, 53, 202), (2, 101, 159), (2, 53, 303) und (2, 3, 5353) bilden. Nur eines davon entspricht allen Nebenbedingungen unseres Rätsels. Der Kapitän ist also 53 Jahre alt. Diophantische Aufgaben können auch leicht vom Computer gelöst werden. Der geht allerdings meist viel primitiver vor, er weiß nichts von Primfaktoren, ja nicht einmal etwas von Primzahlen. Er löst das Problem einfach durch Ausprobieren - natürlich immer schön der Reihe nach. Im Falle des Kapitän-Rätsels lassen wir den Computer einfach von vier Kindern an durchzählen, dann für das Kapitänsalter von Kinderanzahl + 1 bis 100. Dabei prüfen wir, ob die Division von 32118 geteilt durch Kinderanzahl mal Kapitänsalter eine ganze Zahl ergibt (d.h. ob der Rest gleich Null ist). In einem Pythonskript sieht das dann so aus:
for kinderanzahl in range(4, 12): for kapitaensalter in range(kinderanzahl + 1, 100): if (32118 % (kinderanzahl * kapitaensalter) == 0): schiffslaenge = 32118 / (kinderanzahl * kapitaensalter) print "%i Kinder, der Kapitän ist %i Jahre alt und das Schiff %i Meter lang." % (kinderanzahl, kapitaensalter, schiffslaenge) Wenn wir das Skript starten, erhalten wir, ehe wir atmen können, folgende Antwort:
6 Kinder, der Kapitän ist 53 Jahre alt und das Schiff 101 Meter lang. Literatur:Rüdeger Baumann: Spiel, Idee und Strategie programmiert in Pascal, Würzburg (Vogel-Buchverlag) 1983 Werbung: |
||