Berechnen Sie anhand der Größe des Schachbretts und der Ausgangsposition des Ritters die Wahrscheinlichkeit, dass k
sich der Ritter nach Zügen innerhalb des Schachbretts befindet.
Hinweis:
Der Ritter macht alle 8 möglichen Züge mit gleicher Wahrscheinlichkeit.
Sobald sich der Ritter außerhalb des Schachbretts befindet, kann er nicht mehr hinein kommen.
Eingang
Eingaben werden in folgender Form durch Kommas getrennt:
l,k,x,y
Wo l
ist die Länge und Breite des Schachbretts, k
ist die Anzahl der Züge, die der Ritter machen wird, x
ist die x-Position der Ausgangsposition des Ritters und y
ist die y-Position der Ausgangsposition des Ritters. Beachten Sie, dass dies 0,0
die untere linke Ecke der Tafel und l-1,l-1
die obere rechte Ecke der Tafel ist.
Algorithmus:
Beginnen Sie mit den Anfangskoordinaten des Ritters. Machen Sie alle möglichen Züge für diese Position und multiplizieren Sie diese Züge mit ihrer Wahrscheinlichkeit. Rufen Sie die Funktion für jeden Zug rekursiv auf und setzen Sie diesen Vorgang fort, bis die Abbruchbedingung erfüllt ist. Die Abbruchbedingung ist, wenn sich der Springer außerhalb des Schachbretts befindet, in diesem Fall 0 zurückgeben, oder die gewünschte Anzahl von Zügen erschöpft ist, in diesem Fall 1 zurückgeben.
Wie wir sehen können, hängt der aktuelle Status der Rekursion nur von den aktuellen Koordinaten und der Anzahl der bisher ausgeführten Schritte ab. Daher können wir uns diese Informationen in tabellarischer Form merken.
Anerkennung
Diese Challenge stammt ursprünglich aus einem Blog- Eintrag von crazyforcode.com, der unter der CC BY-NC-ND 2.5 IN- Lizenz veröffentlicht wurde. Es wurde leicht modifiziert, um es etwas herausfordernder zu machen.