C# Anagram Bulma Programı
Kullanıcının girdiği metindeki harflerin tüm anagramlarını bulan C# programı. Dikkat ! uzun bir metin girmemeniz tavsiye edilir.
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
Console.Write("Metni girin: ");
string metin = Console.ReadLine();
List< string > anagramlar = new List< string >();
bool[] kullanilanHarfler = new bool[metin.Length];
FindAnagrams(metin, "", kullanilanHarfler, anagramlar);
Console.WriteLine("Tüm anagramlar:");
foreach (var anagram in anagramlar)
{
Console.WriteLine(anagram);
}
}
private static void FindAnagrams(
string metin,
string anagram,
bool[] kullanilanHarfler,
List< string > anagramlar
)
{
if (anagram.Length == metin.Length)
{
anagramlar.Add(anagram);
return;
}
for (int i = 0; i < metin.Length; i++)
{
if (!kullanilanHarfler[i])
{
kullanilanHarfler[i] = true;
FindAnagrams(metin, anagram + metin[i], kullanilanHarfler, anagramlar);
kullanilanHarfler[i] = false;
}
}
}
}
C# ile Kullanıcıdan metni alarak bir string değişkenine atıyoruz.
Console.Write("Metni girin: ");
string metin = Console.ReadLine();
C# ile Anagramları saklamak için bir liste oluşturuyoruz.
List< string > anagramlar = new List< string >();
C# ile Kullanılan harfleri takip etmek için bir bool dizisi oluşturuyoruz.
// Başlangıçta tüm değerler false olarak ayarlanır.
bool[] kullanilanHarfler = new bool[metin.Length];
FindAnagrams metodu ile metindeki tüm anagramları buluyoruz.
FindAnagrams(metin, "", kullanilanHarfler, anagramlar);
C# ile Bulunan tüm anagramları ekrana yazdırıyoruz.
Console.WriteLine("Tüm anagramlar:");
foreach (var anagram in anagramlar)
{
Console.WriteLine(anagram);
}
}
C# ile Metindeki tüm anagramları bulmak için geri izlemeli (backtracking) metot.
private static void FindAnagrams(
string metin,
string anagram,
bool[] kullanilanHarfler,
List< string > anagramlar
)
{
// Anagramın boyutu metinden büyük olduğunda, tüm harfleri kullanmışız demektir.
// Bu durumda anagramı sonuç listesine ekliyoruz ve metotu bitiriyoruz.
if (anagram.Length == metin.Length)
{
anagramlar.Add(anagram);
return;
}
C# ile Metindeki her harfi denemek için döngü kullanıyoruz.
for (int i = 0; i < metin.Length; i++)
{
// Eğer harf daha önce kullanılmamışsa, onu anagrama ekleyip işleme devam ediyoruz.
if (!kullanilanHarfler[i])
{
kullanilanHarfler[i] = true; // Harfi kullanılmış olarak işaretliyoruz.
// Yeni bir harf ekleyerek yeni bir anagram oluşturuyoruz.
// Recursive olarak devam ediyoruz ve tüm olası düzenlemeleri deniyoruz.
FindAnagrams(metin, anagram + metin[i], kullanilanHarfler, anagramlar);
kullanilanHarfler[i] = false; // Harfi kullanılmamış olarak işaretliyoruz (geri izleme).
}
}