public IGrid<Cell> On(IGrid<Cell> grid, Cell startAt = null) { if (startAt == null) { startAt = grid.RandomCell(); } var stack = new Stack<Cell>(); stack.Push(startAt); while (stack.Count != 0) { var current = stack.Peek(); var neighbours = current.Neighbours().Where(n => n.Links.Count == 0).ToList(); if (neighbours.Count == 0) { stack.Pop(); } else { var neighbour = neighbours[rand.Next(neighbours.Count)]; current.Link(neighbour); stack.Push(neighbour); } } return grid; }
public static IEnumerable<Segment> Parse(string s) { var segments = new List<Segment>(); var stack = new Stack<Tuple<int, Segment>>(); var lines = s.Split('\n'); foreach (var line in lines) { var match = Regex.Match(line, @"^(\s*)(.*)$"); var whiteSpace = match.Result("$1").Replace("\t", " "); var text = match.Result("$2"); if (string.IsNullOrWhiteSpace(text)) { //stack.Clear(); continue; } var segment = new Segment(text.Trim()); var indent = whiteSpace.Length; if (stack.Any()) { while (stack.Any() && stack.Peek().Item1 >= indent) stack.Pop(); if (stack.Any()) stack.Peek().Item2.Add(segment); } if (stack.Any() == false) segments.Add(segment); stack.Push(Tuple.Create(indent, segment)); } return segments; }
private String[] Parse(String s) { String[] s1 = new String[s.Length]; Stack <String> st = new Stack <String>(); int i = 0; s = s.Replace("ln", "l"); s = s.Replace("cos", "c"); s = s.Replace("sin", "s"); int t = 0; for (int j = 0; j < s.Length; j++) { String c = s[j] + ""; if (functionCheek(c)) { t = 1; } if (numberCheek(c)) { s1[i] = c; while (s.Length > j + 1 && numberCheek(s[j + 1] + "")) { j++; s1[i] += s[j]; } i++; } else if (operatorCheek(c)) { while (!(st.Count() == 0)) { if (priority(st.Peek()) >= priority(c)) { s1[i] = st.Peek(); st.Pop(); i++; } else { break; } } st.Push(c); } else if ((c == "(" || functionCheek(c)) && t == 1) { st.Push(c); } else if (c == ")" && t == 1) { while (st.Peek() != "(") { s1[i] = st.Peek(); st.Pop(); i++; } st.Pop(); if (functionCheek(st.Peek())) { s1[i] = st.Peek(); st.Pop(); i++; } t = 0; } else if (c == "(") { st.Push(c); } else if (c == ")") { while (st.Peek() != "(") { s1[i] = st.Peek(); st.Pop(); i++; } st.Pop(); } } while (!(st.Count() == 0)) { s1[i] = st.Peek(); st.Pop(); i++; } return(s1); }
static void Main() { Stack stack = new Stack(); stack.Push(1); stack.Push(2); stack.Push(3); stack.Pop(); Console.WriteLine(stack.Count+ " " + stack.Contains(1)); stack.PrintStack(); Console.WriteLine("Top element:"+stack.Peek()); Console.WriteLine("**************************"); Stack<int> stack1 = new Stack<int>(); stack1.Push(1); stack1.Push(2); stack1.Push(3); stack1.Pop(); Console.WriteLine(stack1.Count + " " + stack1.Contains(1)); foreach (int i in stack1) { Console.WriteLine(i); } Console.WriteLine("Top element:"+stack1.Peek()); }
static void Main() { var dust = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); var water = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); var bucket = new Stack <int>(water); var flower = new Queue <int>(dust); var eternally = new Queue <int>(); while (true) { var currentFlower = flower.Peek(); var currentBucket = bucket.Peek(); var diff = currentBucket - currentFlower; if (diff > 0) { bucket.Pop(); flower.Dequeue(); if (bucket.Count > 0) { bucket.Push(diff + bucket.Pop()); } else { bucket.Push(diff); } } else if (diff == 0) { bucket.Pop(); flower.Dequeue(); eternally.Enqueue(currentFlower); } else if (diff < 0) { flower.Dequeue(); bucket.Pop(); var flowerArr = new int[flower.Count + 1]; flowerArr[0] = Math.Abs(diff); for (int z = 1; z < flowerArr.Length; z++) { flowerArr[z] = flower.Dequeue(); } flower = new Queue <int>(flowerArr); } if (bucket.Count == 0) { Console.WriteLine(string.Join(" ", flower)); break; } else if (flower.Count == 0) { Console.WriteLine(string.Join(" ", bucket)); break; } } if (eternally.Count != 0) { Console.WriteLine(string.Join(" ", eternally)); } else if (eternally.Count == 0) { Console.WriteLine("None"); } }