Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Clones
- {
- public class CloneVersionSystem : ICloneVersionSystem
- {
- System.Collections.Generic.List<CloneNigga> cloneNigs = new System.Collections.Generic.List<CloneNigga> { new CloneNigga() };
- public string Execute(string nigga)
- {
- nigga = ':' + nigga;
- if (nigga.Contains(":learn"))
- {
- string[] crutch = nigga.Split(' ');
- var crutch2 = int.Parse(crutch[1]) - 1;
- cloneNigs[crutch2].programKnown.next = new Deck<int>(int.Parse(crutch[2]), cloneNigs[crutch2].programKnown, true);
- cloneNigs[crutch2].programKnown = cloneNigs[crutch2].programKnown.next;
- }
- if (nigga.Contains(":rollback"))
- {
- string[] crutch = nigga.Split(' ');
- var crutch2 = int.Parse(crutch[1]) - 1;
- if (cloneNigs[crutch2].programKnown.previous != null)
- {
- //if (!cloneNigs[crutch2].cloned)
- cloneNigs[crutch2].programKnown = cloneNigs[crutch2].programKnown.previous;
- //else
- //{
- // cloneNigs[crutch2].programKnown = new Deck<int> { Value = cloneNigs[crutch2].programKnown.previous.Value, next = cloneNigs[crutch2].programKnown };
- //}
- }
- }
- if (nigga.Contains(":relearn"))
- {
- string[] crutch = nigga.Split(' ');
- var crutch2 = int.Parse(crutch[1]) - 1;
- cloneNigs[crutch2].programKnown = cloneNigs[crutch2].programKnown.next;
- }
- if (nigga.Contains(":clone"))
- {
- string[] crutch = nigga.Split(' ');
- var crutch2 = int.Parse(crutch[1]) - 1; ;
- cloneNigs.Add(cloneNigs[crutch2].Clone());
- }
- if (nigga.Contains(":check"))
- {
- string[] crutch = nigga.Split(' ');
- var crutch2 = int.Parse(crutch[1]) - 1;
- if (cloneNigs[crutch2].programKnown.previous != null)
- {
- return cloneNigs[crutch2].programKnown.Value.ToString();
- }
- else
- {
- return "basic";
- }
- }
- return null;
- }
- }
- public class CloneNigga
- {
- public Deck<int> programKnown = new Deck<int>();
- public bool cloned = false;
- public CloneNigga Clone()
- {
- return new CloneNigga { programKnown = Deck<int>.CopyDeck(this.programKnown), cloned = true };
- }
- }
- public class Deck<T>
- {
- public Deck<T> previous = null;
- public Deck<T> next = null;
- public T Value
- {
- get; set;
- }
- public Deck()
- {
- this.Value = default(T);
- }
- public Deck(T value)
- {
- this.Value = value;
- }
- public Deck(T value, Deck<T> nigga, bool what = true)
- {
- this.Value = value;
- if (what)
- previous = nigga;
- else
- next = nigga;
- }
- public static Deck<T> CopyDeck(Deck<T> nigga)
- {
- //if (nigga == null)
- // return nigga;
- //Deck<T> flask = new Deck<T>(nigga.Value);
- //switch (marker)
- //{
- // case 0:
- // flask.next = CopyDeck(nigga.next, 1);
- // flask.previous = CopyDeck(nigga.previous, -1);
- // if (flask.next != null)
- // flask.next.previous = flask;
- // if (flask.previous != null)
- // flask.previous.next = flask;
- // break;
- // case 1:
- // flask.next = CopyDeck(nigga.next, 1);
- // if(flask.next != null)
- // flask.next.previous = flask;
- // break;
- // case -1:
- // flask.previous = CopyDeck(nigga.previous, -1);
- // if (flask.previous != null)
- // flask.previous.next = flask;
- // break;
- //}
- //return flask;
- if (nigga == new Deck<T>())
- return nigga;
- Deck<T> flask = new Deck<T>(nigga.Value);
- var crutch = nigga.previous;
- var crutch2 = new Deck<T>();
- if (crutch != null)
- {
- crutch2 = flask.previous = new Deck<T>();
- crutch2.next = flask;
- }
- while (crutch != null)
- {
- crutch2.Value = crutch.Value;
- crutch2.previous = new Deck<T>();
- crutch2.previous.next = crutch2;
- crutch2 = crutch2.previous;
- crutch = crutch.previous;
- }
- crutch = nigga.next;
- if (crutch != null)
- {
- crutch2 = flask.next = new Deck<T>();
- crutch2.previous = flask;
- }
- while (crutch != null)
- {
- crutch2.Value = crutch.Value;
- crutch2.next = new Deck<T>();
- crutch2.next.previous = crutch2;
- crutch2 = crutch2.next;
- crutch = crutch.next;
- }
- return flask;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement