Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.38 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace GeneratForUnity
  8. {
  9.     class Tree
  10.     {
  11.         private TreeNode Root;
  12.  
  13.         public Tree()
  14.         {
  15.             Root = new TreeNode();
  16.         }
  17.  
  18.         #region CreateTree(int[],int)
  19.  
  20.         private bool FindNotZero(int[] Mas)
  21.         {
  22.             bool result= false;
  23.             int summa=0;
  24.             for (var i = 0; i < Mas.Length; i++) summa += Mas[i];
  25.             if (summa > 0) result = true;
  26.             return result;
  27.         }
  28.  
  29.  
  30.         public TreeNode CreateTree(int[] Mas,int result)
  31.         {
  32.             TreeNode root=new TreeNode();
  33.             Random rnd = new Random();
  34.             if (FindNotZero(Mas))
  35.             {
  36.                 bool res = false;
  37.                 int i = 0;
  38.                 int kof = 1;
  39.                 int element;
  40.  
  41.                 while (res!=true)
  42.                 {
  43.                     i = rnd.Next(0, 4);
  44.                     if (Mas[i] != 0) res = true;
  45.                 }
  46.  
  47.                 switch (i)
  48.                 {
  49.                     case 0:
  50.                         Mas[i]--;
  51.                         root.Sign = '+';
  52.                         element = rnd.Next(0, result+1);
  53.                         root.LeftNode = new TreeNode(element);
  54.                         root.RightNode = new TreeNode(result - element);
  55.  
  56.                         if (FindNotZero(Mas)) root.LeftNode.LeftNode = CreateTree(Mas, root.LeftNode.Figure);
  57.  
  58.                         break;
  59.  
  60.                     case 1:
  61.                         Mas[i]--;
  62.                         root.Sign = '-';
  63.                         element = rnd.Next(result-1,result + result/100*20);
  64.                         root.LeftNode = new TreeNode(element);
  65.                         root.RightNode = new TreeNode(element - result);
  66.  
  67.                         if (FindNotZero(Mas)) root.LeftNode.LeftNode = CreateTree(Mas, root.LeftNode.Figure);
  68.  
  69.                         break;
  70.  
  71.                     case 2:
  72.                         Mas[i]--;
  73.                         root.Sign = '/';
  74.                         kof = 1;
  75.                         element = rnd.Next(result, result + 200);
  76.  
  77.                         while ((element % kof != 0) || (element / kof != result))
  78.                         {
  79.                             if (kof > element)
  80.                             {
  81.                                 element = rnd.Next(result + 10, result + 200);
  82.                                 kof = 1;
  83.                             }
  84.                             kof++;
  85.                         }
  86.  
  87.                         root.LeftNode = new TreeNode(element);
  88.                         root.RightNode = new TreeNode(kof);
  89.  
  90.                         if (FindNotZero(Mas)) root.LeftNode.LeftNode = CreateTree(Mas, root.LeftNode.Figure);
  91.  
  92.                         break;
  93.  
  94.                     case 3:
  95.                         Mas[i]--;
  96.                         root.Sign = '*';
  97.                         kof = 1;
  98.                         element = rnd.Next(1, result+1);
  99.  
  100.                         while((element*kof!=result))
  101.                         {
  102.                             kof++;
  103.                             if (kof * element > result)
  104.                             {
  105.                                 element = rnd.Next(1, result+1);
  106.                                 kof = 1;
  107.                             }
  108.                         }
  109.  
  110.                         if (kof>element)
  111.                         {
  112.                             root.LeftNode = new TreeNode(kof);
  113.                             root.RightNode = new TreeNode(element);
  114.                         }
  115.                         else
  116.                         {
  117.                             root.LeftNode = new TreeNode(element);
  118.                             root.RightNode = new TreeNode(kof);
  119.                         }
  120.  
  121.                         if (FindNotZero(Mas)) root.LeftNode.LeftNode = CreateTree(Mas, root.LeftNode.Figure);
  122.  
  123.                         break;
  124.                 }
  125.  
  126.             }
  127.             else root = null;
  128.  
  129.             return root;
  130.         }
  131.  
  132.         #endregion
  133.  
  134.         public int Calculation(string str)
  135.         {
  136.             int result = 0;
  137.             StringBuilder strInt = new StringBuilder("ds");
  138.             for (var i=0;i<str.Length;i++)
  139.             {
  140.                
  141.             }
  142.             return result;
  143.         }
  144.  
  145.  
  146.         private string ToString(TreeNode root)
  147.         {
  148.             StringBuilder str = new StringBuilder("");
  149.  
  150.             if (root.LeftNode != null) str.Insert(str.Length, "("+ToString(root.LeftNode));
  151.  
  152.             if (root.Sign != 'e') str.Insert(str.Length, root.Sign);
  153.             else
  154.             {
  155.                 if ((root.LeftNode != null) && (root.RightNode == null)) ;
  156.                 else str.Insert(str.Length, root.Figure);
  157.             }
  158.  
  159.             if (root.RightNode!=null) str.Insert(str.Length, ToString(root.RightNode)+")");
  160.  
  161.             return Convert.ToString(str);
  162.         }
  163.  
  164.  
  165.         public string Generate(int pCount, int sCount, int dCount, int mCount, int result)
  166.         {
  167.             Root.Figure = result;
  168.             int[] Mas = new int[4] { pCount, sCount, dCount, mCount };
  169.             Root.LeftNode=CreateTree(Mas,result);
  170.             string str = ToString(Root.LeftNode);
  171.  
  172.             return str;
  173.         }
  174.  
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement