Monday, 13 February 2017

Poisonous Plants problem from hacker Rank

 public static   void Main()
        {
            var size =Convert.ToInt32(Console.ReadLine());
            var list=new List<string>();
            var input = Console.ReadLine();
            for (var i = 0; i < size; i++)
            {
                if (input != null && input.Split(' ').Length > size)
                {
                    Console.WriteLine("Please enter input again");
                    return;
                }
                if (input != null) list.Add(input.Split(' ')[i]);
            }
            var countdays = 0;
            list.RemoveAll(x => x == " ");
            var listupdate = new List<string>();
            var result = Check(true, list, listupdate, countdays).Result;
            Console.WriteLine(result);
            Console.ReadLine();
        }

        private static async Task<int> Check(bool flag, List<string> list, List<string> listupdate,int       countdays)
        {
           return  await Task<int>.Factory.StartNew(() =>
            {
                while (flag)
                {
                    if (list.Distinct().Count() == 1)
                    {
                        break;
                    }
                    for (var i = 0; i < list.Count - 1; i++)
                    {
                        if (list[i] != " ")
                        {
                            if (Convert.ToInt32(list[i]) - Convert.ToInt32(list[i + 1]) > 0)
                            {
                                if (i == 0)
                                {
                                    listupdate.Add(list[i]);
                                    listupdate.Add(list[i + 1]);
                                }
                                else
                                {
                                    listupdate.Add(list[i + 1]);
                                }
                            }
                            else
                            {
                                if (i == 0)
                                {
                                    listupdate.Add(list[i]);
                                }
                                else if (Convert.ToInt32(list[i]) - Convert.ToInt32(list[i + 1]) == 0)
                                {
                                    listupdate.Add(list[i + 1]);
                                }
                            }
                        }
                    }
                    if (list.Count == listupdate.Count)
                    {
                        flag = false;
                    }
                    else if (list.Count == 1)
                    {
                        flag = false;
                    }
                    else if (listupdate.Count == 0)
                    {
                        flag = false;
                    }
                    else
                    {
                        countdays++;
                    }
                    list.Clear();
                    list = listupdate.ToList();
                    listupdate.Clear();
                }
                return countdays;
            });
        }

No comments:

Post a Comment