//GİRİLEN STRİNG KARAKTERLERİNİN VARYASYONLARI
//Bu program Hüseyin ÇAKANLI tarafından
//09.02.2012 tarihinde örnek bir algoritma olarak düzenlendi.
//Visual Studio 2010 ile test edilmiştir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Console.Clear();
Console.WriteLine("Kombinasyonları Hesap Edilecek String İsfadeyi Giriniz:");
string A = Console.ReadLine(); int Boy = A.Length;
Console.WriteLine("Girilen İfade: {0}, uzunluğu : {1}", A, Boy);
int DurumSayisi=1;
for (int i = 0; i < Boy; i++) DurumSayisi = DurumSayisi * Boy;
int Bolum = 0; int Kalan = 0; string Sonuc ;
for (int i = 0; i < DurumSayisi; i++)
{
Kalan = i; Sonuc = ""; Bolum = i;
do
{
Kalan = (Kalan%Boy); Bolum = Bolum / Boy;
Sonuc = Kalan.ToString() + Sonuc;
Kalan = Bolum;
} while (Bolum>=Boy);
Sonuc = Bolum.ToString()+Sonuc;
while (Sonuc.Length<Boy)
{
Sonuc = "0"+Sonuc;
}
char[] Cikti = Sonuc.ToCharArray();
for (int j = 0; j < Boy; j++) Cikti[j] = A[int.Parse(Sonuc[j].ToString())];
string al = new string(Cikti);
Console.WriteLine("{0}.Durum : {1}--> Karşılığı : {2}",i,Sonuc, al);
}
Console.ReadLine();
}
}
}