csaki

Programming contest example (Palindromes)

Nov 6th, 2013
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.IO;
  5. using System.Text;
  6.  
  7. namespace unideb_mother_bear
  8. {
  9.     // Mother Bear (example)
  10.     // https://www.inf.unideb.hu/progcont/exercises.html?pid=10945
  11.  
  12.     class Program
  13.     {
  14.         const string EATYOU = "Uh oh...";
  15.         const string NOTEATYOU = "You won't be eaten!";
  16.  
  17.         static void Main(string[] args)
  18.         {
  19.             char[] unneededChars = new char[] { ',', ' ', '.', '!', '?' };
  20.             string[] lines = ReadFromFile(new StreamReader("in.txt"));
  21.             lines = RemoveCharacters(lines, unneededChars);
  22.             string[] messages = new string[lines.Length];
  23.             for (int i = 0; i < lines.Length; i++)
  24.             {
  25.                 bool result = IsPalindrome(lines[i]);
  26.                 Console.WriteLine("{0} {1} palindrome!", lines[i], result ? "is" : "is not");
  27.                 messages[i] = result ? NOTEATYOU : EATYOU;
  28.             }
  29.             WriteToFile(messages, new StreamWriter("out.txt"));
  30.             Console.WriteLine("...written in file!");
  31.             Console.ReadLine();
  32.         }
  33.  
  34.         static string[] ReadFromFile(StreamReader sr)
  35.         {
  36.             string content = sr.ReadToEnd();
  37.             content = content.Substring(0, content.IndexOf("DONE"));
  38.             return content.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
  39.         }
  40.  
  41.         static string[] RemoveCharacters(string[] lines, char[] removableChars)
  42.         {
  43.             for (int i = 0; i < lines.Length; i++)
  44.             {
  45.                 // Remove upper chars
  46.                 lines[i] = lines[i].ToLower();
  47.                 List<char> chars = new List<char>();
  48.                 // Split the string to characters.
  49.                 char[] source = lines[i].ToCharArray();
  50.                 for (int j = 0; j < source.Length; j++)
  51.                 {
  52.                     for (int k = 0; k < removableChars.Length; k++)
  53.                     {
  54.                         if (source[j] == removableChars[k])
  55.                         {
  56.                             // We are sure that this char is not needed.
  57.                             break;
  58.                         }
  59.                         if (k == removableChars.Length - 1)
  60.                         {
  61.                             // Iteration done, no break happened: we add this char to the list!
  62.                             chars.Add(source[j]);
  63.                         }
  64.                         // We continue iterating.
  65.                     }
  66.                 }
  67.                 lines[i] = new string(chars.ToArray());
  68.             }
  69.             return lines;
  70.         }
  71.  
  72.         static bool IsPalindrome(string str)
  73.         {
  74.             for (int i = 0; i < str.Length / 2; i++)
  75.             {
  76.                 if (str[i] != str[str.Length - i - 1])
  77.                 {
  78.                     return false;
  79.                 }
  80.             }
  81.             return true;
  82.         }
  83.  
  84.         static void WriteToFile(string[] lines, StreamWriter sw)
  85.         {
  86.             if (sw != null)
  87.             {
  88.                 foreach (string line in lines)
  89.                 {
  90.                     sw.WriteLine(line);
  91.                 }
  92.                 sw.Close();
  93.             }
  94.             else throw new ArgumentNullException("StreamWriter is null!");
  95.         }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment