Commit f2f54a7b authored by Falko Schumann's avatar Falko Schumann
Browse files

TODO erledigt

parent 9c197ba2
Loading
Loading
Loading
Loading
+27 −27
Original line number Diff line number Diff line
@@ -94,11 +94,18 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> {

    private Collection<FuzzyVariable> akkumulation(List<TermLiteral> konklusionen) {
        Map<String, List<Term>> fuzzyVariablen = new LinkedHashMap<>();
        for (TermLiteral k : konklusionen) {
            // TODO Berücksichtigen, dass einer der Terme ungültig sein kann
            Term term = k.getTerm();
            if (fuzzyVariablen.containsKey(k.getFuzzyVariable())) {
                List<Term> terme = fuzzyVariablen.get(k.getFuzzyVariable());
        konklusionen.forEach(k -> akkumuliere(fuzzyVariablen, k.getFuzzyVariable(), k.getTerm()));
        return fuzzyVariablen.entrySet().stream()
                .map(e -> new FuzzyVariable(e.getKey(), e.getValue()))
                .collect(Collectors.toList());
    }

    private void akkumuliere(Map<String, List<Term>> fuzzyVariablen, String fuzzyVariable, Term term) {
        List<Term> terme = fuzzyVariablen.computeIfAbsent(fuzzyVariable, s -> new ArrayList<>());
        aktualisiereTerme(terme, term);
    }

    private List<Term> aktualisiereTerme(List<Term> terme, Term term) {
        int index = -1;
        for (int i = 0; i < terme.size(); i++) {
            if (terme.get(i).getName().equals(term.getName())) {
@@ -106,6 +113,7 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> {
                break;
            }
        }

        if (index == -1) {
            terme.add(term);
        } else {
@@ -115,15 +123,7 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> {
            term = new Term(term.getName(), z);
            terme.set(index, term);
        }
            } else {
                List<Term> terme = new ArrayList<>();
                terme.add(term);
                fuzzyVariablen.put(k.getFuzzyVariable(), terme);
            }
        }
        return fuzzyVariablen.entrySet().stream()
                .map(e -> new FuzzyVariable(e.getKey(), e.getValue()))
                .collect(Collectors.toList());
        return terme;
    }

    @Override