Problem Józefa Flawiusza

Józef Flawiusz podczas wojny żydowsko-rzymskiej wraz 40 towarzyszami został otoczony przez Rzymian. Nie chcąc się poddać postanowili popełnić samobójstwo. Ustawili się w kręgu i co trzecia osoba odbierała sobie życie. Na końcu pozostał przy życiu przyjaciel Flawiusza oraz on sam. Oddali się w ręce wroga. Chcemy napisać aplikację, która zasymuluje nam, w jakiej kolejności ginęli żołnierze oraz, na której pozycji w kręgu ustawił się Flawiusz wraz ze swoim przyjacielem. Do rozwiązania tego problemu wykorzystamy przedstawioną wcześniej klasę Kolejka (Kolejka - implementacja tablicowa).
/**
 * Problem Józefa Flawiusza
 * @author kodatnik.blogspot.com
 */
public class JozefFlawiusz {
    
 public static void main(String[] args) {
  // zmienna przechowuje liczbę żołnierzy (Flawiusz + 40)
  int zolnierze = 41;
  // zmienna określa co który będzie ginął
  int coKtory = 3;

  // tworzymy kolejkę o rozmiarze równych liczbie żołnierzy
  Kolejka k = new Kolejka(zolnierze);
  
  // dodajemy żołnierzy do kolejki (od 1 do 41)
  for (int i = 1; i <= zolnierze; i++)
   k.dodaj(i);
            
  // w pętli dopóki kolejka nie jest pusta
  while ( !k.czyPusta() ) {
   // przestawiamy dwóch żołnierzy z początku na koniec kolejki
   for (int i = 0; i < coKtory - 1; i++)
    k.dodaj(k.usun());

   // eliminujemy trzeciego (usuwamy go z kolejki)
   // i wyświetlamy jego numer ekranie
   System.out.print(k.usun() + " ");
  } 
  System.out.println();
 }
}
Uruchomiona aplikacja:
3 6 9 12 15 18 21 24 27 30 33 36 39 1 5 10 14 19 23 28 32 37 41
7 13 20 26 34 40 8 17 29 38 11 25 2 22 4 35 16 31
Jak widać na wynikach generowanych przez program, Józef Flawiusz wraz z przyjacielem ustawili się na pozycji 16 i 31.

0 Komentarzy - Problem Józefa Flawiusza

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty