Package com.jgaap.generics

Source Code of com.jgaap.generics.LeaveKOutNGramEventDriver

package com.jgaap.generics;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.jgaap.util.Event;
import com.jgaap.util.EventSet;


public abstract class LeaveKOutNGramEventDriver extends EventDriver {

  public LeaveKOutNGramEventDriver() {
    addParams("K", "K", "1", new String[] { "1", "2", "3", "4", "5", "6",
        "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
        "18", "19", "20", "21", "22", "23", "24", "25", "26", "27",
        "28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
        "38", "39", "40", "41", "42", "43", "44", "45", "46", "47",
        "48", "49", "50" }, false);
    addParams("N", "N", "3", new String[] { "1", "2", "3", "4", "5", "6",
        "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
        "18", "19", "20", "21", "22", "23", "24", "25", "26", "27",
        "28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
        "38", "39", "40", "41", "42", "43", "44", "45", "46", "47",
        "48", "49", "50" }, false);
  }
 
  protected EventSet transformEventSet(EventSet underlyingEventSet) {
    int k = getParameter("k", 1);
    int n = getParameter("n", 3);
    EventSet eventSet = new EventSet();
    for (int i = 0; i < underlyingEventSet.size() - n; i++) {
      List<String> currentEvents = new ArrayList<String>(n);
      for (int j = 0; j < n; j++) {
        currentEvents.add(underlyingEventSet.eventAt(i + j).toString());
      }
      Set<List<String>> reducedEvents = getSubList(currentEvents, k);
      for (List<String> current : reducedEvents) {
        eventSet.addEvent(new Event(current.toString(), this));
      }
    }
    return eventSet;
  }

  private Set<List<String>> getSubList(List<String> list, int k) {
    Set<List<String>> results = new HashSet<List<String>>();
    if (k == 1) {
      results = reduceList(list);
    } else {
      Set<List<String>> tmp = getSubList(list, k - 1);
      for (List<String> current : tmp) {
        results.addAll(reduceList(current));
      }
    }
    return results;
  }

  private Set<List<String>> reduceList(List<String> list) {
    Set<List<String>> results = new HashSet<List<String>>();
    for (int i = 0; i < list.size(); i++) {
      List<String> current = new ArrayList<String>(list.size() - 1);
      for (int j = 0; j < i; j++) {
        current.add(list.get(j));
      }
      for (int j = i + 1; j < list.size(); j++) {
        current.add(list.get(j));
      }
      results.add(current);
    }
    return results;
  }

}
TOP

Related Classes of com.jgaap.generics.LeaveKOutNGramEventDriver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.