Пример #1
0
        static void ExpandStateOneBlank(int boxSize, byte[] state, SuccessorList successors)
        {
            int e = 0;

            while (state[e] != 0)
            {
                e += 1;
            }
            if (e < (state.Length - boxSize))
            {
                CreateSuccessor(state, successors.Push(), e, e + boxSize);                               // down
            }
            if (e % boxSize < (boxSize - 1))
            {
                CreateSuccessor(state, successors.Push(), e, e + 1);                              // right
            }
            if (e % boxSize > 0)
            {
                CreateSuccessor(state, successors.Push(), e, e - 1);                  // left
            }
            if (e > (boxSize - 1))
            {
                CreateSuccessor(state, successors.Push(), e, e - boxSize);                    // up
            }
        }