Esempio n. 1
0
        protected override int Part2(string[] input)
        {
            var secret     = input[0];
            var finder     = new Md5HashFinder(Md5HashFinder.Condition6x0);
            var iterations = finder.FindMatches(secret, 0).First().Iterations;

            return(iterations);
        }
Esempio n. 2
0
        protected override string Part1(string[] input)
        {
            var secret = input[0];
            var finder = new Md5HashFinder(Md5HashFinder.Condition5x0);
            var result = finder.FindMatches(secret, 0)
                         .Take(8)
                         .Select(x => x.Hash[2])
                         .Aggregate(0U, (sum, v) => sum << 4 | v);

            return(result.ToString("x"));
        }
Esempio n. 3
0
        protected override string Part2(string[] input)
        {
            var N      = 8;
            var secret = input[0];
            var finder = new Md5HashFinder(Md5HashFinder.Condition5x0);
            var result = new char[N];
            var found  = 0;

            foreach (var match in finder.FindMatches(secret, 0))
            {
                var pos = match.Hash[2];
                var val = (byte)(match.Hash[3] >> 4);
                if (pos < N && result[pos] == 0)
                {
                    result[pos] = val.ToString("x").First();
                    if (++found == N)
                    {
                        break;
                    }
                }
            }

            return(new string(result));
        }