• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ljacqu / wordeval / 14540892325

18 Apr 2025 07:50PM UTC coverage: 51.4% (-12.1%) from 63.456%
14540892325

push

github

ljacqu
Merge remote-tracking branch 'origin/master' into dependencies

239 of 546 branches covered (43.77%)

93 of 383 new or added lines in 27 files covered. (24.28%)

5 existing lines in 4 files now uncovered.

679 of 1321 relevant lines covered (51.4%)

3.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

43.48
/src/main/java/ch/jalu/wordeval/evaluators/impl/Isograms.java
1
package ch.jalu.wordeval.evaluators.impl;
2

3
import ch.jalu.wordeval.dictionary.Word;
4
import ch.jalu.wordeval.evaluators.WordEvaluator;
5
import ch.jalu.wordeval.evaluators.result.WordWithScore;
6
import com.google.common.collect.ArrayListMultimap;
7
import com.google.common.collect.ListMultimap;
8
import lombok.Getter;
9

10
import java.util.ArrayList;
11
import java.util.Comparator;
12
import java.util.HashSet;
13
import java.util.List;
14
import java.util.Set;
15

16
/**
17
 * Finds isograms (words with all different letters).
18
 */
19
public class Isograms implements WordEvaluator {
2✔
20

21
  @Getter
6✔
22
  private final List<WordWithScore> results = new ArrayList<>();
23

24
  @Override
25
  public void evaluate(Word wordObject) {
26
    String word = wordObject.getWithoutAccentsWordCharsOnly();
3✔
27
    Set<Character> charList = new HashSet<>();
4✔
28
    for (int i = 0; i < word.length(); ++i) {
8✔
29
      char currentChar = word.charAt(i);
4✔
30
      if (!charList.add(currentChar)) {
5✔
31
        // Char has already been encountered, so stop
32
        return;
1✔
33
      }
34
    }
35
    results.add(new WordWithScore(wordObject, word.length()));
11✔
36
  }
1✔
37

38
  @Override
39
  public ListMultimap<Object, Object> getTopResults(int topScores, int maxLimit) {
NEW
40
    List<WordWithScore> sortedResult = results.stream()
×
NEW
41
        .sorted(Comparator.comparing(WordWithScore::getScore).reversed())
×
NEW
42
        .toList();
×
43

NEW
44
    Set<Double> uniqueValues = new HashSet<>();
×
NEW
45
    ListMultimap<Object, Object> filteredResults = ArrayListMultimap.create();
×
NEW
46
    for (WordWithScore wordWithScore : sortedResult) {
×
NEW
47
      if (uniqueValues.add(wordWithScore.getScore()) && uniqueValues.size() > topScores) {
×
NEW
48
        break;
×
49
      }
NEW
50
      filteredResults.put((int) wordWithScore.getScore(), wordWithScore.getWord().getRaw());
×
NEW
51
      if (filteredResults.size() >= maxLimit) {
×
NEW
52
        break;
×
53
      }
NEW
54
    }
×
55

NEW
56
    return filteredResults;
×
57
  }
58
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc