Advertisement
Filkolev

Arrange Numbers

Mar 27th, 2016
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.77 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3.  
  4. public class ArrangeNumbers
  5. {
  6.     public static void Main()
  7.     {
  8.         string[] dict = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
  9.  
  10.         string[] numbersAsDigits = Console.ReadLine()
  11.             .Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
  12.  
  13.         string[] numbersAsWords = ConvertNumbersToWords(numbersAsDigits, dict);
  14.         Array.Sort(numbersAsWords);
  15.  
  16.         int index = 0;
  17.         foreach (var number in numbersAsWords)
  18.         {
  19.             numbersAsDigits[index++] = ConvertWordToNumber(number, dict);
  20.         }
  21.  
  22.         Console.WriteLine(string.Join(", ", numbersAsDigits));
  23.     }
  24.  
  25.     private static string ConvertWordToNumber(string number, string[] dict)
  26.     {
  27.         string[] words = number.Split('-');
  28.  
  29.         StringBuilder numberAsDigits = new StringBuilder();
  30.  
  31.         foreach (var word in words)
  32.         {
  33.             numberAsDigits.Append(Array.IndexOf(dict, word));
  34.         }
  35.  
  36.         return numberAsDigits.ToString();
  37.     }
  38.  
  39.     private static string[] ConvertNumbersToWords(string[] numbersAsDigits, string[] dict)
  40.     {
  41.         string[] result = new string[numbersAsDigits.Length];
  42.  
  43.         int index = 0;
  44.         foreach (var number in numbersAsDigits)
  45.         {
  46.             string currentNumberAsString = ConvertNumber(number, dict);
  47.             result[index++] = currentNumberAsString;
  48.         }
  49.  
  50.         return result;
  51.     }
  52.  
  53.     private static string ConvertNumber(string number, string[] dict)
  54.     {
  55.         string[] digits = new string[number.Length];
  56.  
  57.         for (int i = 0; i < number.Length; i++)
  58.         {
  59.             digits[i] = dict[number[i] - '0'];
  60.         }
  61.  
  62.         return string.Join("-", digits);
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement