Ejemplo n.º 1
0
 public static void Drop(IStackList <object> stack)
 {
     if (stack.Count > 0)
     {
         stack.Pop();
     }
 }
Ejemplo n.º 2
0
 public static void PushRange <T>(this IStackList <object> stack, IEnumerable <T> collection)
 {
     foreach (var obj in collection)
     {
         stack.Push(obj);
     }
 }
Ejemplo n.º 3
0
 public static void Swap(IStackList <object> stack)
 {
     if (stack.Count > 1)
     {
         var obj = stack.Pop();
         stack.Insert(1, obj);
     }
 }
Ejemplo n.º 4
0
 public static void Sample(IStackList<object> stack)
 {
     if (stack.HasA<int, IEnumerable<double>>())
     {
         var limit = stack.Pop<int>();
         var seq = stack.Pop<IEnumerable<double>>();
         stack.Push(seq.Take(limit));
     }
 }
Ejemplo n.º 5
0
 public static void Load(IStackList <object> stack)
 {
     if (stack.HasA <string>())
     {
         var name = stack.Pop <string>();
         var seq  = SequenceFactory.Load(name);
         stack.Push(seq);
     }
 }
Ejemplo n.º 6
0
 public static void Cycle(IStackList<object> stack)
 {
     if (stack.HasA<IEnumerable<double>>())
     {
         var seq = stack.Pop<IEnumerable<double>>();
         seq = seq.AsCycle();
         stack.Push(seq);
     }
 }
Ejemplo n.º 7
0
 public static void Saw(IStackList<object> stack)
 {
     if (stack.HasA<int>())
     {
         var x = 0;
         var width = stack.Pop<int>();
         var seq = SequenceFactory.From(() => Math.Pow(x++ % width, 2));
         stack.Push(seq);
     }
 }
Ejemplo n.º 8
0
 public static void Concat(IStackList<object> stack)
 {
     if (stack.HasA<IEnumerable<double>, IEnumerable<double>>())
     {
         var seq1 = stack.Pop<IEnumerable<double>>();
         var seq2 = stack.Pop<IEnumerable<double>>();
         var result = seq2.Concat(seq1);
         stack.Push(result);
     }
 }
Ejemplo n.º 9
0
 public static void Merge(IStackList<object> stack)
 {
     if (stack.HasA<IEnumerable<double>, IEnumerable<double>>())
     {
         var seq1 = stack.Pop<IEnumerable<double>>();
         var seq2 = stack.Pop<IEnumerable<double>>();
         var result = seq1.Zip(seq2, (a, b) => a + b);
         stack.Push(result);
     }
 }
Ejemplo n.º 10
0
        public static T Pop <T>(this IStackList <object> stack)
        {
            var item = stack.Pop();

            if (typeof(T).IsAssignableFrom(item.GetType()))
            {
                return((T)item);
            }
            else
            {
                return((T)Convert.ChangeType(item, typeof(T)));
            }
        }
Ejemplo n.º 11
0
 public static void Pick(IStackList <object> stack)
 {
     if (stack.HasA <int>())
     {
         var i = stack.Pop <int>();
         if (i > stack.Count)
         {
             var obj = stack[i];
             stack.Remove(obj);
             stack.Push(obj);
         }
         else
         {
             stack.Push(i);
         }
     }
 }
Ejemplo n.º 12
0
 public static void Roll(IStackList <object> stack)
 {
     if (stack.HasA <int>())
     {
         var i = stack.Pop <int>();
         if (i <= stack.Count)
         {
             for (var j = 0; j < i; j++)
             {
                 var obj = stack.Pop();
                 stack.Add(obj);
             }
         }
         else
         {
             stack.Push(i);
         }
     }
 }
Ejemplo n.º 13
0
        public static void Map(IStackList<object> stack)
        {
            if (stack.HasA<string, IEnumerable<double>>())
            {
                var expr = stack.Pop<string>();
                var seq = stack.Pop<IEnumerable<double>>();

                var ctx = new ExpressionContext();
                ctx.Imports.AddType(typeof(Math));
                ctx.Imports.AddType(typeof(Probability));
                ctx.Variables["x"] = 0.0;
                var gexpr = ctx.CompileGeneric<double>(expr);

                var result = seq.Select(x =>
                {
                    ctx.Variables["x"] = x;
                    return gexpr.Evaluate();
                });
                stack.Push(result);
            }
        }
Ejemplo n.º 14
0
 static public IStackList<T> Append<T>(this IStackList<T> _this, T element)
 {
     return new MutableStackList<T>(_this.FromBottomToTop().Add(element));
 }
Ejemplo n.º 15
0
 public static bool HasA <T1, T2>(this IStackList <object> stack)
 {
     return(stack.HasA <T1>(0) && stack.HasA <T2>(1));
 }
Ejemplo n.º 16
0
 public static bool HasA <T>(this IStackList <object> stack, int idx)
 {
     return(typeof(T).IsAssignableFrom(stack[idx].GetType()));
 }
Ejemplo n.º 17
0
        public static string[] ToDisplay(this IStackList <object> stack)
        {
            var text = stack.Select(item => item.ToString());

            return(text.ToArray());
        }
Ejemplo n.º 18
0
 public static void Para(IStackList<object> stack)
 {
     var x = 0;
     var seq = SequenceFactory.From(() => Math.Pow(x++, 2));
     stack.Push(seq);
 }
Ejemplo n.º 19
0
 public static void Base(IStackList<object> stack)
 {
     var x = 0;
     var seq = SequenceFactory.From(() => x++);
     stack.Push(seq);
 }
Ejemplo n.º 20
0
 public static void Noise(IStackList<object> stack)
 {
     var seq = SequenceFactory.From(Probability.Normal);
     stack.Push(seq);
 }
Ejemplo n.º 21
0
 public static void Clear(IStackList <object> stack)
 {
     stack.Clear();
 }