Advertisement
VssA

Untitled

Feb 16th, 2024
1,085
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.00 KB | None | 0 0
  1. using System.Collections.Generic;
  2.  
  3. namespace Clones
  4. {
  5.     public class Clone
  6.     {
  7.         public StackForClone AddProgramm;
  8.         public StackForClone RemoveProgramm;
  9.  
  10.         public Clone()
  11.         {
  12.             AddProgramm = new StackForClone();
  13.             RemoveProgramm = new StackForClone();
  14.         }
  15.  
  16.         public Clone(Clone baseClone)
  17.         {
  18.             AddProgramm = new StackForClone(baseClone.AddProgramm);
  19.             RemoveProgramm = new StackForClone(baseClone.RemoveProgramm);
  20.         }
  21.     }
  22.  
  23.     public class StackFCItem
  24.     {
  25.         public string Command;
  26.         public StackFCItem First;
  27.  
  28.         public StackFCItem(string value, StackFCItem first)
  29.         {
  30.             Command = value;
  31.             First = first;
  32.         }
  33.     }
  34.  
  35.     public class StackForClone
  36.     {
  37.         public StackFCItem Last;
  38.        
  39.         public StackForClone()
  40.         {  
  41.         }
  42.        
  43.         public StackForClone(StackForClone baseStack)
  44.         {
  45.             Last = baseStack.Last;
  46.         }
  47.        
  48.         public void Push(string item)
  49.         {
  50.             Last = new StackFCItem(item, Last);
  51.         }
  52.        
  53.         public string Pop()
  54.         {
  55.             var result = Last.Command;
  56.             Last = Last.First;
  57.             return result;
  58.         }
  59.     }
  60.  
  61.     public class CloneVersionSystem : ICloneVersionSystem
  62.     {
  63.         private List<Clone> cloneslist;
  64.  
  65.         public CloneVersionSystem()
  66.         {
  67.             cloneslist = new List<Clone>();
  68.             cloneslist.Add(new Clone());
  69.         }
  70.  
  71.         public string Execute(string query)
  72.         {
  73.             var input = query.Split(' ');
  74.             var command = input[0];
  75.             var cloneIndex = int.Parse(input[1]) - 1;
  76.             return Commands(input, cloneIndex);
  77.         }
  78.  
  79.         public string Commands(string[] command, int num)
  80.         {
  81.             var clone = cloneslist[num];
  82.  
  83.             if (command[0] == "learn")
  84.             {
  85.                 clone.AddProgramm.Push(command[2]);
  86.                 clone.RemoveProgramm.Last = null;
  87.             }
  88.             if (command[0] == "rollback")
  89.             {
  90.                 if (clone.AddProgramm.Last == null)
  91.                     return null;
  92.                 var progRoll = clone.AddProgramm.Pop();
  93.                 clone.RemoveProgramm.Push(progRoll);
  94.             }
  95.            
  96.             if (command[0] == "relearn")
  97.             {
  98.                 if (clone.RemoveProgramm.Last == null)
  99.                     return null;
  100.                 var progRelearn = clone.RemoveProgramm.Pop();
  101.                 clone.AddProgramm.Push(progRelearn);
  102.             }
  103.  
  104.             if (command[0] ==  "clone")          
  105.             {
  106.                 cloneslist.Add(new Clone(cloneslist[num]));
  107.             }
  108.             if(command[0] ==  "check")
  109.             {
  110.                 if (clone.AddProgramm.Last == null) return "basic";
  111.                 return clone.AddProgramm.Last.Command;
  112.             }
  113.             return null;
  114.         }
  115.     }
  116. }
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement