İpucu

Lig Fikstürü Oluşturma

Lig tarzında her takımın her round'da bir kere karşılacağı şekilde bir lig veya turnuva fikstürü oluşturmak için aşağıdaki gibi bir algoritma kullanılabilir. 

Örneğin 8 takımlı bir turnuva-lig olur ise ilk round aşağıdaki gibi yapılır 

1.Round
1. 2. 3. 4.
8. 7. 6. 5.
2.Round
1. 8. 2. 3.
7. 6. 5. 4.
3.Round
1. 7. 8. 2.
6. 5. 4. 3.

Bu şekilde devam eder ve son round aşağıdaki gibi olur :

7.Round
1. 3. 4. 5.
2. 8. 7. 6.

Round'ların oluşturulması şu şekildedir : İlk round'da 1. takımdan 8. takıma kadar takım "saat yönüne" göre sıralanır. Saat yönüne göre sıralandığında alt-üst olarak gelen iki takım o round'da karşılaşacak demektir. Her yeni round'da 1. takım sabit tutulur ve diğer takımlar saat yönünde kaydırılır. Örneğin 2. raound'da 8. yukarı çıkar ve 1. yanına geçer. Kaydırma bu şekilde devam eder ve 1. takımın altında 2. takım olana kadar devam eder. Bu şekilde tüm takımlar sıra ile 1. takımın rakibi olmuş olur ve diğer karşılaşmalar ayarlanmış olur. 

Bu algoritma tüm çift sayı değerleri için uygulanabilir. Tek takım için ise tek sayı çift sayıya tamamlanır (son takım varmış gibi) sonra son takım ile oynayan takım o round'u pas geçer. 

Bu algoritma ile round'lar (Her hafta oynanan ligler için round hafta anlamına gelir) üretildikten sonra hangi takımın kaçıncı sıra olduğu kurası çekilir. Çekilen kura sonucu hangi takımın kiminle oynayacağı belirlenmiş olur.

Java ile istenilen sayıda takımdan oluşacak lig aşağıdaki gibi oluşturulabilir : 

 

private void generateFixture(int teamSize){
        
        // Kaç round sonrası lig tamamlanacak
        int roundCount=teamSize-1; 
        // Bir round'da ne kadar maç oynanır
        int matchCountPerRound=teamSize/2; 
        
        List<Integer> list=new ArrayList<Integer>();
        
        // Takim listesini oluşturuyoruz. 
	//0. takımdan (teamSize-1). takima kadar.
        for (int i = 0; i < teamSize; i++) {
                list.add(i);
        }
        
        for (int i = 0; i < roundCount; i++) {
                
                System.out.println(i+".nci Round:");
                
                for(int j=0;j<matchCountPerRound;j++){
                        
                        int firstIndex=j;
                        int secondIndex=(teamSize-1)-j;
                        
                        System.out.println(list.get(firstIndex)
+"-"+list.get(secondIndex));
                        
                }
                
                // İlk eleman sabit olacak şekilde elamanları kaydırıyoruz
                List<Integer> newList=new ArrayList<Integer>(); 
                
                // İlk eleman sabit
                newList.add(list.get(0)); 

                // Son eleman ikinci eleman yapıyoruz.
                newList.add(list.get(list.size()-1)); 
                
                for(int k=1;k<list.size()-1;k++){                            
                        newList.add(list.get(k));
                }
                
                // Keydırılan liste yeni liste oluyor.
                list=newList;                    
                 
        }
        
        System.out.println("Toplam Round Sayısı : "+roundCount);
        System.out.println("Bir Round'daki Maç Sayısı:  "+matchCountPerRound);
        
}

Yukarıda tanımlanmış generateFixture fonksiyonu verilen değer kadar round oluşturup , ekrana basmaktadır. Ekrana basmak yerine oluşan değerler bir listeye atanıp döndürülebilir. 

 


İçeriği Ekleyen : tekzaf

Üyelerin Seçimleri
Üyelerin Girmiş Olduğu Seçim/Yorum Bulunmuyor
İçerik ile ilgili seçim/yorum yapabilirsiniz ve eklediğiniz seçim/yorum için değişiklik yapabilirsiniz : Tıklayınız

Facebook Üyelerinin Yorumları

Ana Sayfa | Bize Yazın | fibiler@fibiler.com | Facebook | Twitter | Google+ | fibiler@googlegroups.com
Her Hakkı Saklıdır
Bu sitede yayınlanan tüm maddelerin (kavram,veri,sav,manifesto,etiket,kişi,eser,soru,kaynak,anket,blog,olay,ipucu,öneri,materyal,hata) ve içeriklerinin hepsi başka kaynaklardan derlemedir ve site yönetimine ait değildir.
Bu sitede bulunan resim,ses,video ve sanat eserleri gibi materyaller internet üzerinden derlenmiştir ve telif hakkları sahiplerine aittir.
Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir
Üyenin girdiği tüm yazı ve içeriklerden üyenin kendisi sorumludur ve bu içerikler ile ilgili site yönetimi sorumluluk kabul etmez.
Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir.