using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp7 { class Program { static void Main(string[] args) { string ish = Console.ReadLine(); char[] Road = ish.ToCharArray(); int N = 0 , S = 0, W= 0, E = 0; int CCount = 0; while (CCount < Road.Length) { if (Convert.ToString(Road[CCount + 1]) =="N") { N += Convert.ToInt32(Convert.ToString(Road[CCount])); } if (Convert.ToString(Road[CCount + 1]) == "S") { S += Convert.ToInt32(Convert.ToString(Road[CCount])); } if (Convert.ToString(Road[CCount + 1]) == "W") { W += Convert.ToInt32(Convert.ToString(Road[CCount])); } if (Convert.ToString(Road[CCount + 1]) == "E") { E += Convert.ToInt32(Convert.ToString(Road[CCount])); } CCount += 2; } List<roadlean> road = new List<roadlean>(4); var ones = new roadlean { Count = N, Type = "N", }; road.Add(ones); var sec = new roadlean { Count = S, Type = "S", }; road.Add(sec); var th = new roadlean { Count = W, Type = "W", }; road.Add(th); var frt = new roadlean { Count = E, Type = "E", }; road.Add(frt); string answer = ""; if (Math.Max(road[0].Count,road[1].Count) - Math.Min(road[0].Count, road[1].Count) != 0) { string Name = road[0].Count > road[1].Count ? "N" : "S"; answer += Convert.ToString(Math.Max(road[0].Count, road[1].Count) - Math.Min(road[0].Count, road[1].Count)) + Name; } if (Math.Max(road[2].Count, road[3].Count) - Math.Min(road[2].Count, road[3].Count) != 0) { string Name = road[2].Count > road[3].Count ? "W" : "E"; answer += Convert.ToString(Math.Max(road[2].Count, road[3].Count) - Math.Min(road[2].Count, road[3].Count)) + Name; } Console.WriteLine("{0}", answer); Console.ReadKey(); } class roadlean { public int Count { get; set; } public string Type { get; set; } } } }
I definitely do not like my solution and cannot handle numbers greater than 9, I will be glad to any help, but only in C #