private void changeRules(Rules rules) { instance.rules = rules; instance.preBmBc = BoyerMoore.preBmBc(rules); instance.preBmGs = BoyerMoore.preBmGs(rules); instance.suffixes = BoyerMoore.suffixes(rules); preSkip = new HashMap<>(); rules.forEach( rule -> { preSkip.put(rule, new ArrayList<>(Collections.nCopies(rule.getLength(), 0))); }); }
@Override public void search(Input input, Results results, int runNumber, String runId) { Result result = new Result(rules, input, this, runNumber, runId); result.start(); int n = input.getLength(); List<Runnable> runnables = new ArrayList<>(); rules.forEach( rule -> { Runnable runnable = new RaitaRunnable(input, result, n, rule); runnables.add(runnable); }); executeSearch(runnables); result.end(); results.addResult(result); }