23 Mart 2017 Perşembe
Twitter

String üzerinde permütasyon işlemi

Bir string düşünün "123" gibi, "123", "132", "213", "231", "321" , "312" permütasyonları nasıl elde edersiniz? Çözüm için yazıyı okuyunuz.

Permütasyon,  birbirinden ayrılabilir nesnelerin değişik sıralarda dizilmelerini ifade eden kavramdır. 1 Elimizde "ABCDE" gibi bir bilgi varsa, bu bilginin bir permütasyonu "EABDC" şeklindedir.

Matematikte ise permütasyon, her sembolün sadece bir kez ya da birkaç kez kullanıldığı sıralı bir dizidir.

Eleman sayısı n olan bir kümenin içinden r kadar eleman seçerek yapılabilecek permütasyonlar aşağıdaki formülle hesaplanır:
Permütasyon Formülü

Eğer "123" metninin 3 elemanı dizilimlerinin sayısını hesaplamak istiyorsak formül n!'e eşit olur.

Aşağıdaki programda, verilen bir stringin permütasyonlarını listeleyen programı bulabilirsiniz.
Listenin en altına yazılan adet bilgisi ise permütasyon sayısını vermektedir.

static int adet = 0; 

static void Main(string[] args) 
{
  char[] metin = "123".ToCharArray(); 
  Permutasyon(metin, 0, metin.Length - 1); 
  Console.WriteLine("----------------");
  Console.WriteLine(adet + " adet"); 
}

static void Degistir(ref char a, ref char b)
{
  if(a == b) return; 
  char c = a;
  a = b;
  b = c;
}

static void Permutasyon(char[] dizi, int sol, int sag) 
{
  if(sol == sag) 
    {
       adet++; 
       Console.WriteLine(dizi); 
    }
  else 
    for(int i = sol; i <= sag; i++) 
      {
        Degistir(ref dizi[sol], ref dizi[i]);
        Permutasyon(dizi, sol + 1, sag); 
        Degistir(ref dizi[sol], ref dizi[i]);
      }
}

Ekran çıktısı şu şekildedir:
Program çıktısı




1 Wikipedia

Değerlendirme

Yazım dilinin sadeliği ve anlaşılabilirliği Puan: 0,00 (0 oy)
Yazıdaki kodların kalitesi Puan: 0,00 (0 oy)
İhtiyaca cevap verme Puan: 0,00 (0 oy)
Tavsiye edilebilirlik Puan: 3,55 (1 oy)
Genel değerlendirme Puan: 0,00 (0 oy)
Puanlamalar 5 üzerindendir.
  • Site Yorumları
  • Facebook Yorumları Facebook Yorumları
Yeni yorum yaz Toplam: 2, Onay bekleyen: 0.
  1. Yusuf goktas

    İyi günler dilerim, ismim yusuf gkötaş.. Çalışmalarınızı siteniz üzerinden gördüm.. Petmütasyon listeleme programı linki vermişsiniz ama linki göremedim.. Bana mail atabilirmisiniz acaba? Saygılarımla..

  2. özlem öztürk

    yhav arakadasım bu nebiçim sorular çözümlü soru lazım bana performans ödev için....