البرمجة

استخراج أطول وأقصر باليندروم من ملف النصوص في C#

في البداية، يجدر بك أن تعلم أن الشيفرة التي كتبتها لديها بعض الأخطاء والتحسينات الممكنة. على سبيل المثال، تحتاج إلى تغيير الشرط في حلقة for لتكون “i < charArray.Length" بدلاً من "i < 1" لتكون قادرًا على الوصول إلى جميع الأحرف في الكلمة. الشيفرة المعدلة ستكون كالتالي:

csharp
static void Main(string[] args) { string[] lines = System.IO.File.ReadAllLines(@"C:\palindromy.txt"); string longestPalindrome = string.Empty; string shortestPalindrome = string.Empty; foreach (string line in lines) { char[] charArray = line.ToCharArray(); // Initialize longest and shortest palindromes with the first word in the file if (string.IsNullOrEmpty(longestPalindrome)) longestPalindrome = line; if (string.IsNullOrEmpty(shortestPalindrome)) shortestPalindrome = line; for (int i = 0; i < charArray.Length; i++) { char[] reversedArray = (char[])charArray.Clone(); Array.Reverse(reversedArray); bool isPalindrome = charArray.SequenceEqual(reversedArray); if (isPalindrome) { // Update longest palindrome if (line.Length > longestPalindrome.Length) longestPalindrome = line; // Update shortest palindrome if (line.Length < shortestPalindrome.Length) shortestPalindrome = line; // Break the loop once a palindrome is found in the current word break; } } } // Output the longest and shortest palindromes Console.WriteLine("Longest Palindrome: " + longestPalindrome); Console.WriteLine("Shortest Palindrome: " + shortestPalindrome); }

الآن، قمت بإضافة متغيرين جديدين، longestPalindrome و shortestPalindrome، لتخزين أطول وأقصر كلمة بالنسبة للباليندروم في الملف. في كل تكرار في حلقة الـ foreach، يتم التحقق من إذا كانت الكلمة الحالية تحتوي على باليندروم وإذا كان الأمر كذلك، يتم التحقق مما إذا كانت هذه الكلمة هي الأطول أو الأقصر بالمقارنة مع السابق. يتم طباعة النتائج في النهاية.

المزيد من المعلومات

فيما يخص البرنامج الذي قمت بتطويره، يمكننا إجراء بعض التحسينات لتحسين أدائه وفهمه. يمكن أن تكون الإصدارات الأحدث من لغة C# قد أدخلت بعض التحسينات التي يمكننا الاستفادة منها. إليك نسخة معدلة من الشيفرة:

csharp
static void Main(string[] args) { string[] lines = System.IO.File.ReadAllLines(@"C:\palindromy.txt"); string longestPalindrome = string.Empty; string shortestPalindrome = string.Empty; foreach (string line in lines) { string cleanedLine = CleanString(line); // Initialize longest and shortest palindromes with the first word in the file if (string.IsNullOrEmpty(longestPalindrome)) longestPalindrome = cleanedLine; if (string.IsNullOrEmpty(shortestPalindrome)) shortestPalindrome = cleanedLine; bool isPalindrome = IsPalindrome(cleanedLine); if (isPalindrome) { // Update longest palindrome if (cleanedLine.Length > longestPalindrome.Length) longestPalindrome = cleanedLine; // Update shortest palindrome if (cleanedLine.Length < shortestPalindrome.Length) shortestPalindrome = cleanedLine; } } // Output the longest and shortest palindromes Console.WriteLine("Longest Palindrome: " + longestPalindrome); Console.WriteLine("Shortest Palindrome: " + shortestPalindrome); } static string CleanString(string input) { // Remove non-alphabetic characters and convert to lowercase return new string(input.Where(char.IsLetter).Select(char.ToLower).ToArray()); } static bool IsPalindrome(string input) { // Check if the string is a palindrome return input.SequenceEqual(input.Reverse()); }

تمت إضافة دوال جديدة لتحسين قراءة الشيفرة وجعلها أكثر فهمًا. تم إضافة دالة CleanString لإزالة جميع الأحرف غير الأبجدية وتحويل السلسلة إلى أحرف صغيرة. كما تم إضافة دالة IsPalindrome لفحص ما إذا كانت السلسلة هي باليندروم أم لا. هذه الإضافات تجعل الشيفرة أكثر فهمًا وسهولة صيانة.

زر الذهاب إلى الأعلى