Josephus-Problem

Hatte mich spaßeshalber mal mit dem Josephus Problem beschäftigt. Stelle Dir einen Kreis mit n Elemente vor, sagen wir einfach mal 19. Also z.B. ein Kreis mit 19 Orangen. Dann wird reihum immer jede zweite Orange entfernt bis am Ende nur noch eine Orange übrig ist. Welche Orange wird es sein. Das war auch mal ein Rätsel in einer TV-Show (https://www.youtube.com/watch?v=_o-kPhCYVGQ)

Mit diesem Code kannst Du in PHP die übrig gebliebene Orange berechnen. Als Variante könnte man einbauen, dass jede 3., 4. oder k. Orange entfernt wird.

class swebMath {
    public static function josephus($n) {
        if($n == 1) {
            return 1;
        }
        if(($n%2) == 0) {
            return 2 * self::josephus($n / 2) - 1;
        }
        if(($n%2) == 1) {
            return 2 * self::josephus(($n - 1) / 2) + 1;
        }
    }
}
echo swebMath::josephus(19);

Ähnliche Beiträge