mirror of
https://github.com/tiennm99/lottery-generator-java.git
synced 2026-08-09 09:02:03 +00:00
[Add] new strategy
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+48
@@ -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<Integer> generateNumbers(int totalNumber, int numNumber) {
|
||||
Map<Integer, Integer> 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<Integer, Integer>();
|
||||
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());
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -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);
|
||||
}
|
||||
|
||||
+31
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -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());
|
||||
Reference in New Issue
Block a user