diff --git a/src/main/java/com/github/tiennm99/lotterygenerator/Main.java b/src/main/java/com/github/tiennm99/lotterygenerator/Main.java index 09a26bb..179ca44 100644 --- a/src/main/java/com/github/tiennm99/lotterygenerator/Main.java +++ b/src/main/java/com/github/tiennm99/lotterygenerator/Main.java @@ -3,8 +3,8 @@ package com.github.tiennm99.lotterygenerator; public class Main { public static void main(String[] args) { - var generator = new NormalLotteryGenerator(); - var result = generator.generateNumbers(45, 6); + var generator = new TopMatchedNumberInCaseLotteryGenerator(); + var result = generator.generateNumbers(55, 7); System.out.println(result); } } diff --git a/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberInCaseLotteryGenerator.java b/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberInCaseLotteryGenerator.java new file mode 100644 index 0000000..8f307a3 --- /dev/null +++ b/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberInCaseLotteryGenerator.java @@ -0,0 +1,48 @@ +package com.github.tiennm99.lotterygenerator; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeMap; +import java.util.stream.Collectors; + +public class TopMatchedNumberInCaseLotteryGenerator implements LotteryGenerator { + + public static final int DEFAULT_RANDOM_TIME = 1_000_000; + private final int randomTime; + private final LotteryGenerator generator; + + public TopMatchedNumberInCaseLotteryGenerator(int randomTime, LotteryGenerator generator) { + this.randomTime = randomTime; + this.generator = generator; + } + + public TopMatchedNumberInCaseLotteryGenerator(int randomTime) { + this(randomTime, new NormalLotteryGenerator()); + } + + public TopMatchedNumberInCaseLotteryGenerator(LotteryGenerator generator) { + this(DEFAULT_RANDOM_TIME, generator); + } + + public TopMatchedNumberInCaseLotteryGenerator() { + this(DEFAULT_RANDOM_TIME); + } + + @Override + public Set generateNumbers(int totalNumber, int numNumber) { + Map matchedNumbers = new HashMap<>(); + for (int i = 0; i < randomTime; i++) { + var numbers = generator.generateNumbers(totalNumber, numNumber); + for (var number : numbers) { + matchedNumbers.merge(number, 1, Integer::sum); + } + } + var sortedMatchedNumbers = new TreeMap(); + matchedNumbers.forEach((key, value) -> sortedMatchedNumbers.put(value, key)); + System.out.println(sortedMatchedNumbers); + return sortedMatchedNumbers.descendingMap().entrySet().stream().limit(numNumber) + .map(Entry::getValue).collect(Collectors.toSet()); + } +} diff --git a/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedLotteryGenerator.java b/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberLotteryGenerator.java similarity index 85% rename from src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedLotteryGenerator.java rename to src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberLotteryGenerator.java index 6ed38ac..2f579ae 100644 --- a/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedLotteryGenerator.java +++ b/src/main/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberLotteryGenerator.java @@ -8,16 +8,16 @@ import java.util.TreeMap; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; -public class TopMatchedLotteryGenerator implements LotteryGenerator { +public class TopMatchedNumberLotteryGenerator implements LotteryGenerator { public static final int DEFAULT_MATCH_TIME = 1_000_000; private final int matchTime; - public TopMatchedLotteryGenerator(int matchTime) { + public TopMatchedNumberLotteryGenerator(int matchTime) { this.matchTime = matchTime; } - public TopMatchedLotteryGenerator() { + public TopMatchedNumberLotteryGenerator() { this(DEFAULT_MATCH_TIME); } diff --git a/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberInCaseLotteryGeneratorTest.java b/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberInCaseLotteryGeneratorTest.java new file mode 100644 index 0000000..2707d75 --- /dev/null +++ b/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberInCaseLotteryGeneratorTest.java @@ -0,0 +1,31 @@ +package com.github.tiennm99.lotterygenerator; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +class TopMatchedNumberInCaseLotteryGeneratorTest { + + @Test + void testMega645() { + var generator = new TopMatchedNumberInCaseLotteryGenerator(); + var numbers = generator.generateNumbers(45, 6); + System.out.println(numbers); + assertEquals(6, numbers.size()); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 45); + } + } + + @Test + void testMega655() { + var generator = new TopMatchedNumberInCaseLotteryGenerator(); + var numbers = generator.generateNumbers(55, 6); + System.out.println(numbers); + assertEquals(6, numbers.size()); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 55); + } + } +} diff --git a/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedLotteryGeneratorTest.java b/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberLotteryGeneratorTest.java similarity index 80% rename from src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedLotteryGeneratorTest.java rename to src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberLotteryGeneratorTest.java index 991630f..0c20a3e 100644 --- a/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedLotteryGeneratorTest.java +++ b/src/test/java/com/github/tiennm99/lotterygenerator/TopMatchedNumberLotteryGeneratorTest.java @@ -5,11 +5,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -class TopMatchedLotteryGeneratorTest { +class TopMatchedNumberLotteryGeneratorTest { @Test void testMega645() { - var generator = new TopMatchedLotteryGenerator(); + var generator = new TopMatchedNumberLotteryGenerator(); var numbers = generator.generateNumbers(45, 6); System.out.println(numbers); assertEquals(6, numbers.size()); @@ -20,7 +20,7 @@ class TopMatchedLotteryGeneratorTest { @Test void testMega655() { - var generator = new TopMatchedLotteryGenerator(); + var generator = new TopMatchedNumberLotteryGenerator(); var numbers = generator.generateNumbers(55, 6); System.out.println(numbers); assertEquals(6, numbers.size());