C# Josephus Problems

Posted: October 8, 2014 in Algorithms, C#
Tags: , ,

Efsaneye göre Jewish-Roman savaşında 41 Jewish askeri Romalılarca bir mağaraya sıkıştırılır.Esir olmak istemeyen askerler intihar etmeyi düşünür ve bir karar alırlar.Bir çember oluşturacaklar her 3.kişinin intihar edeceğine karar veriyorlar.Son kalan kendini öldürecek.Josephus ise ölmeyi düşünmediğinden son kalanın sırasını hesapladı ve çemberde uygun sıraya geçti.Örnek vermek gerekirse bizim

4,5,6,7,8,9,10,11,12,13 elemanlı bir dizimiz olsun. Ve iki oyuncumuz olsun. biz eleman sayımızdan küçük(10 elemanımız var suan) bir x değeri belirleyelim. Daha sonra 2 oyuncumuz olduğu için diziyi 2 eşit parçaya bölelim.

1. oyuncu 2.oyuncu

4,5,6,7,8 9,10,11,12,13

x değerimiz 3 olsun. Şimdi gelelim bu 3 değerine ,3.elemanları silelim ve sonunda elemanı kalan oyunu kazansın.

1.eleman =4
2.eleman= 5
3.eleman =6 sildik

daha sonra

1.eleman =7
2.eleman =8
3.eleman =9 sildik

.
.
.

1. oyuncu 2.oyuncu

4,5,6,7,8 9,10,11,12,13

4,5,*,7,8 *,10,11, *,13

4,5,7,8 10,11,13

1.eleman=13
2.eleman=4
3.eleman=5 sildik

4,7,8 11,13

7,8 13

7 13

7 kazandı.

1.oyuncu kazandı.

Eğer biz bunu programda yapmaya çalıştığımızda indeks numarasını buluruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int a, b;
b = 3;
a = 10;

Console.WriteLine(Josephus(b, a));
Console.ReadLine();
}

public static int Josephus(int m,int n)
{
int x,y=0;
for(x=2; x<=n; x++)
y=(y+m)%x;

return y+1;

}

15

4.elemanımız -> 7 .

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s