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); }
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")); }
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)); }