public int GetShortestPossiblePasscode(int[] table)
        {
            int shortestPossiblePasscode = 0;

            HashSet <int>[] trailingNumbersSet = new HashSet <int> [10];
            for (int i = 0; i < 10; i++)
            {
                trailingNumbersSet[i] = new HashSet <int>();
            }

            HashSet <int> foundDigits = new HashSet <int>();


            for (int linenr = 0; linenr < table.Length; linenr++)
            {
                var digitsList = DigitsList.ConvertToDigitListe(table[linenr]);
                trailingNumbersSet[digitsList[2]].Add(digitsList[1]);
                trailingNumbersSet[digitsList[2]].Add(digitsList[0]);
                trailingNumbersSet[digitsList[1]].Add(digitsList[0]);

                foundDigits.Add(digitsList[0]);
                foundDigits.Add(digitsList[1]);
                foundDigits.Add(digitsList[2]);
            }

            var l = foundDigits.OrderBy(i => trailingNumbersSet[i].Count()).ToList();

            shortestPossiblePasscode = DigitsList.ConvertToNumber(l);

            return(shortestPossiblePasscode);
        }
Exemplo n.º 2
0
        public void Test_Product_multiplier(int initValue, int multiplier, int expectedResult)
        {
            var digitsList = DigitsList.ConvertToDigitListe(initValue);
            var resultList = DigitsList.Product(digitsList, multiplier);
            var result     = DigitsList.ConvertToNumber(resultList);

            Assert.Equal(expectedResult, result);
        }
Exemplo n.º 3
0
        public void TestConvertToNumber()
        {
            List <int> liste = new List <int> {
                5, 4, 3, 2, 1
            };

            var number = DigitsList.ConvertToNumber(liste);

            Assert.Equal(12345, number);
        }
Exemplo n.º 4
0
        public bool IsTruncatableprime(int number)
        {
            var digits = DigitsList.ConvertToDigitListe(number);

            for (int i = 0; i < digits.Count; i++)
            {
                if (!IsPrime(DigitsList.ConvertToNumber(digits.Skip(i).ToList())))
                {
                    return(false);
                }
            }

            for (int i = 1; i < digits.Count; i++)
            {
                if (!IsPrime(DigitsList.ConvertToNumber(digits.SkipLast(i).ToList())))
                {
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 5
0
        public bool IsCircularPrimes(int number)
        {
            var digits       = DigitsList.ConvertToDigitListe(number);
            int antallShifts = digits.Count;


            for (int index = 0; index < antallShifts; index++)
            {
                List <int> nyListe = new List <int>();
                for (int j = 0; j < antallShifts; j++)
                {
                    int t = digits[(j + index) % antallShifts];
                    nyListe.Add(t);
                }


                int number2 = DigitsList.ConvertToNumber(nyListe);
                if (!IsPrime(number2))
                {
                    return(false);
                }
            }
            return(true);
        }