Пример #1
0
        public static FrogNode CreateFrogNodeTree(int numberOfFrogs)
        {
            FrogNode root = new FrogNode(numberOfFrogs);

            root = FrogNode.CreateFrogPossibilities(root);
            return(root);
        }
Пример #2
0
 static FrogNode CreateFrogPossibilities(FrogNode node)
 {
     if (node.ZeroPos - 1 >= 0 && node.Frogs[node.ZeroPos - 1] == '>')
     {
         FrogNode newNode = new FrogNode(node);
         newNode.ZeroPos                = node.ZeroPos - 1;
         newNode.Frogs[node.ZeroPos]    = '>';
         newNode.Frogs[newNode.ZeroPos] = '_';
         node.Nodes.Add(newNode);
     }
     if (node.ZeroPos - 2 >= 0 && node.Frogs[node.ZeroPos - 2] == '>')
     {
         FrogNode newNode = new FrogNode(node);
         newNode.ZeroPos                = node.ZeroPos - 2;
         newNode.Frogs[node.ZeroPos]    = '>';
         newNode.Frogs[newNode.ZeroPos] = '_';
         node.Nodes.Add(newNode);
     }
     if (node.ZeroPos + 1 < node.Frogs.Count && node.Frogs[node.ZeroPos + 1] == '<')
     {
         FrogNode newNode = new FrogNode(node);
         newNode.ZeroPos                = node.ZeroPos + 1;
         newNode.Frogs[node.ZeroPos]    = '<';
         newNode.Frogs[newNode.ZeroPos] = '_';
         node.Nodes.Add(newNode);
     }
     if (node.ZeroPos + 2 < node.Frogs.Count && node.Frogs[node.ZeroPos + 2] == '<')
     {
         FrogNode newNode = new FrogNode(node);
         newNode.ZeroPos                = node.ZeroPos + 2;
         newNode.Frogs[node.ZeroPos]    = '<';
         newNode.Frogs[newNode.ZeroPos] = '_';
         node.Nodes.Add(newNode);
     }
     foreach (FrogNode child in node.Nodes)
     {
         FrogNode.CreateFrogPossibilities(child);
     }
     return(node);
 }