Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/01/17 09:28:34 (7 years ago)
Author:
pkimmesw
Message:

#2665 Fixed Benchmark Problem Definition, Converted LoopExpressions to stateless expressions, Added several unit test to ensure funcionality, Fixed UI bugs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorIndexOfExpressions.cs

    r14952 r15017  
    1717    protected VectorIndexOfExpression(bool deserializing) : base(deserializing) { }
    1818
    19     protected bool IsNoop(IPushStack<List<T>> vectorStack, IPushStack<T> literalStack) {
     19    protected bool IsNoop(IPushStack<IReadOnlyList<T>> vectorStack, IPushStack<T> literalStack) {
    2020      return vectorStack.IsEmpty || literalStack.IsEmpty;
    2121    }
     
    2323    protected void Eval(
    2424      IInternalPushInterpreter interpreter,
    25       IPushStack<List<T>> vectorStack,
     25      IPushStack<IReadOnlyList<T>> vectorStack,
    2626      IPushStack<T> literalStack,
    2727      bool canOverride = false) {
    2828      var vector = vectorStack.Pop();
    2929      var literal = canOverride ? literalStack.Top : literalStack.Pop();
    30       var result = vector.IndexOf(literal);
    3130
    32       if (canOverride) interpreter.IntegerStack.SetTop(result);
    33       else interpreter.IntegerStack.Push(result);
     31      var index = -1;
     32      for (var i = 0; i < vector.Count && index < 0; i++) {
     33        if (vector[i].Equals(literal)) {
     34          index = i;
     35          break;
     36        }
     37      }
     38
     39      if (canOverride) interpreter.IntegerStack.Top = index;
     40      else interpreter.IntegerStack.Push(index);
    3441    }
    3542  }
Note: See TracChangeset for help on using the changeset viewer.