Nr. 165
Nr. 165
Nr. 165
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Quelle: Thiele, 1984, S. 166<br />
rum Araki Murahide. Dieser behandelt<br />
in einem seiner Werke ein<br />
Problem, das Mamakosan oder<br />
Stiefkinder-Problem heißt und wie<br />
folgt lautet (Ahrens, 1913, S.143f.):<br />
Ein reicher Landedelmann in Japan hatte<br />
von seiner ersten Frau 15 und von<br />
seiner zweiten ebenfalls 15 Kinder.<br />
Letztere beseelte nun der Wunsch, dass<br />
einer ihrer leiblichen Kinder ihrem Manne<br />
im Besitz nachfolgen möge und unterbreitete<br />
diesem den folgenden Vorschlag:<br />
Alle 30 Kinder sollten sich in einer<br />
bestimmten Ordnung im Kreise aufstellen,<br />
und nun sollte ausgezählt werden,<br />
wobei jeder zehnte ausscheiden<br />
müsste. Der zuletzt Übriggebliebene<br />
sollte den Besitz erben. Der Gatte ging<br />
auf den Vorschlag ein; bei der Durchführung<br />
des Verfahrens stellte er zunächst<br />
mit Staunen, dann aber mit wachsendem<br />
Entsetzen fest, dass die Kinder der<br />
ersten Frau (in Bild 4 weiß gekleidet)<br />
nacheinander bis auf eines als Erben<br />
ausschieden. Es waren jetzt also nur<br />
noch ein Stiefkind und die 15 leiblichen<br />
Kinder (schwarz) der zweiten Frau übrig.<br />
Da glaubte diese, dass der Sieg den<br />
Ihrigen bereits sicher sei, und in dieser<br />
festen Erwartung schien es ihr ganz<br />
gleichgültig, wie weitergezählt würde.<br />
Sie fing also bei dem allein noch übriggebliebenen<br />
Stiefkind von neuem zu<br />
zählen an, tat dies jedoch in umgekehrter<br />
Richtung zu vorher. Wieder wurde jedes<br />
zehnte Kind ausgeschieden; dabei<br />
ergab sich jedoch das überraschende<br />
Resultat, dass nun nacheinander alle<br />
leiblichen Kinder der zweiten Frau getroffen<br />
und ausgeschieden wurden, sodass<br />
schließlich das eine Stiefkind als<br />
Erbe aus der Abzählung hervorging.<br />
Seki scheint das zur die Lösung<br />
erforderliche Rekursionsgesetz be-<br />
LOG IN Heft <strong>Nr</strong>. <strong>165</strong> (2010)<br />
F O R U M<br />
reits gekannt zu haben, das im<br />
Abendland zuerst von Leonhard<br />
Euler (1707–1783, Bild 3b, vorige<br />
Seite) entdeckt und im Jahr 1776<br />
veröffentlicht wurde (in der Abhandlung<br />
Observationes circa novum<br />
et singulare progressionum genus,<br />
die Euler 1771 der Petersburger<br />
Akademie vorgelegt hatte).<br />
Die allgemeine Fragestellung lautet:<br />
Auf einem Kreis liegen n<br />
Punkte, die von 1 bis n<br />
durchnummeriert sind. Man<br />
zählt, mit Punkt 1 beginnend,<br />
der Reihe nach bis k. Der<br />
Punkt, den die Zahl k trifft,<br />
wird ausgestrichen. Bei dem in<br />
der Reihe nächsten Punkt beginnt<br />
man wieder zu zählen,<br />
und zwar wieder von 1 bis k;<br />
der entsprechende Punkt wird<br />
ausgestrichen – und so setzt<br />
man das Verfahren fort, bis alle<br />
Punkte ausgestrichen sind. Es<br />
soll berechnet werden, welche<br />
Nummer der Punkt hat, der als<br />
erster, zweiter, … (allgemein:<br />
als s-ter) ausgestrichen wird.<br />
Dabei sind n, k und s natürliche<br />
Zahlen; es kann k kleiner,<br />
gleich oder größer als n sein; s<br />
kann jedoch nicht größer als n<br />
sein. Fragt man, welcher Punkt<br />
als letzter ausgestrichen wird,<br />
hat man s = n zu setzen.<br />
Nun zu den Lösungen der Knobelei<br />
von Heft 122/123:<br />
Bild 4: Lösung<br />
des Problems<br />
der Stiefkinder.<br />
Zählbeginn an<br />
den Tafeln<br />
erkennbar;<br />
Stiefkind unten<br />
(mit eckiger<br />
Tafel).<br />
Das Josephus-Problem<br />
Zu Aufgabe 1: Es sollte ein Programm<br />
geschrieben werden, das<br />
den Auszählvorgang simuliert.<br />
LOG-IN-Leser Paul Weisenhorn<br />
hatte seinerzeit ein PASCAL-Programm<br />
gesandt, das die Nummern<br />
der Personen in der Reihenfolge ihres<br />
Ausscheidens sowie die zugehörige<br />
Runendarstellung lieferte. In<br />
JAVA umgeschrieben lautet es wie<br />
folgt:<br />
public class Petrus {<br />
// St. Peters Spiel<br />
(mit verketteter Liste)<br />
static class Knoten {<br />
int wert;<br />
Knoten nachfolger;<br />
Knoten (int zahl)<br />
{wert = zahl;}<br />
} // Ende Knoten<br />
public static void main<br />
(String[] eingabe) {<br />
int n = 10, k = 2;<br />
if (eingabe.length > 1) {<br />
n = Integer.parseInt<br />
(eingabe[0]);<br />
k = Integer.parseInt<br />
(eingabe[1]);<br />
} // Ende if<br />
String text =<br />
"\n PETRUS-PERMUTATION ";<br />
text += "(" + n + ", " + k<br />
+ ")\n";<br />
System.out.println(text);<br />
Knoten kopf = new Knoten(1);<br />
Knoten aktuell = kopf;<br />
for (int i = 2; i