コード例 #1
0
ファイル: Day14.cs プロジェクト: mattsharpe/AdventOfCode
        public void Next1000Hashes()
        {
            var result = Enumerable.Range(0, 1000).Select(x => _md5.Md5Hash(Salt + x));

            foreach (var hash in result)
            {
                Console.WriteLine(hash);
            }
        }
コード例 #2
0
ファイル: Day17.cs プロジェクト: mattsharpe/AdventOfCode
        public IEnumerable <Day17MazeState> GetNextStates(Day17MazeState state)
        {
            if (state.Location.X == 3 && state.Location.Y == 3)
            {
                yield break;
            }
            //Console.WriteLine(state.Path);
            var hash = _hasher.Md5Hash(state.Path).ToLower();

            if (IsOpen(hash[0]) && state.Location.Y > 0) //Up
            {
                yield return(new Day17MazeState(state, CompassBearing.North));
            }
            if (IsOpen(hash[1]) && state.Location.Y < 3) //Down
            {
                yield return(new Day17MazeState(state, CompassBearing.South));
            }
            if (IsOpen(hash[2]) && state.Location.X > 0) //Left
            {
                yield return(new Day17MazeState(state, CompassBearing.West));
            }
            if (IsOpen(hash[3]) && state.Location.X < 3) //Left
            {
                yield return(new Day17MazeState(state, CompassBearing.East));
            }
        }
コード例 #3
0
        public string CalculatePassword(string input)
        {
            var sb    = new StringBuilder();
            int index = 0;

            while (sb.Length < 8)
            {
                var hash = _md5Hasher.Md5Hash($"{input}{index}");
                if (hash.StartsWith("00000"))
                {
                    Console.WriteLine($"found a hash {hash}");
                    sb.Append(hash.Substring(5, 1));
                }

                index++;
            }

            return(sb.ToString().ToLower());
        }