Esempio n. 1
0
        public long ExecutePartOne(string inputFile, int index = 25)
        {
            var  input        = ArraysAndLists.StringArrayToLongArray(General.GetDataFromInputFileAsStringArray(inputFile));
            var  currentIndex = index; // skip first
            long checkingNumber;

            foreach (var line in input.Skip(index))
            {
                var foundSum = false;
                checkingNumber = line;
                var preamble = input.Skip(currentIndex - index).Take(index);
                foreach (var calc in preamble.Distinct())
                {
                    var lookForNumber = checkingNumber - calc;
                    if (preamble.Any(x => x == lookForNumber))
                    {
                        foundSum = true;
                        break;
                    }
                    ;
                }

                if (!foundSum)
                {
                    return(checkingNumber);
                }

                currentIndex++;
            }


            return(0);
        }
Esempio n. 2
0
        public void ReverseString_ReverseGivenString_ReturnReversedString()
        {
            var reverse = new ArraysAndLists();
            var result  = reverse.ReverseString("Pomarancza");

            Assert.That(result, Does.Contain("azcnaramoP"));
        }
Esempio n. 3
0
        public long ExecutePartTwo(string inputFile, int index = 25)
        {
            var input         = ArraysAndLists.StringArrayToLongArray(General.GetDataFromInputFileAsStringArray(inputFile));
            var lookForNumber = ExecutePartOne(inputFile, index);
            var validNumbers  = input.Where(x => x < lookForNumber).Reverse();

            for (int from = 0; from < validNumbers.Count(); from++)
            {
                var numberOfRecords = 1;
                var list            = validNumbers.Skip(from);
                do
                {
                    var sum = list.Take(numberOfRecords).Sum();
                    if (sum == lookForNumber)
                    {
                        return(list.Take(numberOfRecords).Min() + list.Take(numberOfRecords).Max());
                    }
                    else if (sum > lookForNumber)
                    {
                        break;
                    }

                    numberOfRecords++;
                }while (numberOfRecords + from < validNumbers.Count());
            }

            return(0);
        }
Esempio n. 4
0
        public void SixThFacebook_WhenNoOneLikePost_ReturnsNothing()
        {
            List <string> list     = new List <string>();
            var           facebook = new ArraysAndLists();
            var           result   = facebook.Facebook(list);

            Assert.That(result, Does.Contain(""));
        }
Esempio n. 5
0
        public void SixThFacebook_WhenTwoAndMoreFriendLikePost_ReturnNamesNumOfOthersLikeYourPost()
        {
            List <string> list = new List <string> {
                "Tom", "Jerry", "Ben", "Kate"
            };
            var facebook = new ArraysAndLists();
            var result   = facebook.Facebook(list);

            Assert.That(result, Does.Contain(String.Format("{0}, {1} and {2} others like your post.", list[0], list[1], list.Count - 2)));
        }
Esempio n. 6
0
        public void SixThFacebook_WhenOnlyTwoFriendLikePost_ReturnNamesLikeYourPost()
        {
            List <string> list = new List <string> {
                "Tom", "Jerry"
            };
            var facebook = new ArraysAndLists();
            var result   = facebook.Facebook(list);

            Assert.That(result, Does.Contain(String.Format("{0} and {1} like your post.", list[0], list[1])));
        }
Esempio n. 7
0
        public void SixThFacebook_WhenOnlyOneFriendLikePost_ReturnNameLikesYourPost()
        {
            List <string> list = new List <string> {
                "Tom"
            };
            var facebook = new ArraysAndLists();
            var result   = facebook.Facebook(list);

            Assert.That(result, Does.Contain(String.Format("{0} likes your post.", list[0])));
        }
Esempio n. 8
0
        public static int ExecutePartTwo(string inputFile)
        {
            var input = Helpers.General.GetDataFromInputFileAsStringArray(inputFile);
            var array = ArraysAndLists.StringArrayToIntArray(input);

            foreach (int current in array)
            {
                var smallerList = array.Where(x => x <= 2020 - current).Select(x => x);
                foreach (int i in smallerList)
                {
                    var smallestList = array.Where(x => x <= 2020 - current - i).Select(x => x);
                    foreach (int j in smallestList)
                    {
                        if (current + i + j == 2020)
                        {
                            return(current * i * j);
                        }
                    }
                }
            }
            return(0);
        }