Anagram
4 Eylül Perşembe, 2008 | C# /*Yorumlar (2)*/
Bir kelimenin yada sözcüğün harflerinin yerlerini değiştirerek yeni bir kelime yada sözcük elde etme durumuna Anagram denir. Yunanca bir kelime olan anagramma' dan gelir.
Örneğin, Vin Diesel -> 'I End Lives' yada Bahri -> 'İhbar' gibi.
Bu mantık ile bir uygulama yapmak istersek iki adet string dizisiarray tanımlamak gerekir;

Şimdi mantığı biraz değiştirerek ve basit bir de algoritma ile uygulamayı daha dinamik bir hale nasıl getirebiliriz ona bakalım.
Öncelikle orjinal kelimeleri ';' noktali virgül ile ayırarak text dosyasına kaydedelim. Bu sayede kelimelerimizde uygulama içinde statik olarak kalmayacak.

Dosyadaki kelimeleri bir diziye atayalım.
Daha sonra basit bir metot yazarak sırası ile dizideki kelimelerin harflerini karıştırarak yeni kelimeler elde edelim. Buradaki durum anagram da olduğu gibi mantıklı değil fakat harf kaybı olmaksızın yeni kelimeler elde etmek olacak. Metot, kelimedeki harfleri değil de harflerin indexlerini karıştıracaktır. Bu sayede kelime içinde bir harfin birden fazla olması durumunda ekstra kod yazmamız gerekmeyecek.



Burada her nekadar dizi içinde tutulacak değerler tam sayı olsada ben string tipini tercih ettim. Sebebi ise, int veri türünün başlangıç değeri 0 olduğundan 0 nolu indeks değerinin kontrolünün yapılmasının kolay olmasıdır.

Kodun tamamı;
anagramgame.rar
Kaynak : Wikipedia