mirror of
https://github.com/tiennm99/lottery-generator-java.git
synced 2026-09-02 15:47:45 +00:00
[Strategy] (Add) new random strategy
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package dev.miti99.lotterygenerator;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface LotteryGenerator {
|
||||
|
||||
List<Integer> generateNumbers(int numNumber);
|
||||
Set<Integer> generateNumbers(int numNumber);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package dev.miti99.lotterygenerator;
|
||||
|
||||
import dev.miti99.lotterygenerator.mega.Mega645Generator;
|
||||
import dev.miti99.lotterygenerator.mega.Mega655Generator;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
var generator = new Mega645Generator();
|
||||
var result = generator.generateNumbers(4);
|
||||
var generator = new Mega655Generator();
|
||||
var result = generator.generateNumbers(7);
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class BasePresetGenerator extends MegaGenerator {
|
||||
|
||||
@@ -11,7 +11,7 @@ public class BasePresetGenerator extends MegaGenerator {
|
||||
this.numNumber = numNumber;
|
||||
}
|
||||
|
||||
public List<Integer> generateNumbers() {
|
||||
public Set<Integer> generateNumbers() {
|
||||
return generateNumbers(numNumber);
|
||||
}
|
||||
}
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class Mega655GenerateUntilMatchPreviousCase {
|
||||
|
||||
private final Set<Set<Integer>> history = new HashSet<>();
|
||||
|
||||
public static void main(String[] args) {
|
||||
var generator = new Mega655GenerateUntilMatchPreviousCase();
|
||||
var result = generator.generate();
|
||||
System.out.println(result);
|
||||
}
|
||||
|
||||
public Set<Integer> generate() {
|
||||
history.clear();
|
||||
var generator = new Mega655Generator();
|
||||
Set<Integer> numbers;
|
||||
while (true) {
|
||||
numbers = generator.generateNumbers(6);
|
||||
System.out.printf("%d. %s\n", history.size(), numbers);
|
||||
if (history.contains(numbers)) {
|
||||
break;
|
||||
}
|
||||
history.add(numbers);
|
||||
}
|
||||
return numbers;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,11 @@ package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
import dev.miti99.lotterygenerator.LotteryGenerator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
@@ -26,11 +30,11 @@ public class MegaGenerator implements LotteryGenerator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers(int numNumber) {
|
||||
public Set<Integer> generateNumbers(int numNumber) {
|
||||
var baseNumbers = generateBaseNumbers();
|
||||
var result = new ArrayList<Integer>(numNumber);
|
||||
var result = new TreeSet<Integer>();
|
||||
for (int i = 0; i < numNumber; i++) {
|
||||
var index = (int) (Math.random() * baseNumbers.size());
|
||||
var index = ThreadLocalRandom.current().nextInt(baseNumbers.size());
|
||||
result.add(baseNumbers.get(index));
|
||||
baseNumbers.remove(index);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package dev.miti99.lotterygenerator.mega.reverserd;
|
||||
|
||||
import dev.miti99.lotterygenerator.mega.BasePresetGenerator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ReversedMegaGenerator extends BasePresetGenerator {
|
||||
|
||||
@@ -10,9 +12,10 @@ public class ReversedMegaGenerator extends BasePresetGenerator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers(int numNumber) {
|
||||
public Set<Integer> generateNumbers(int numNumber) {
|
||||
var baseNumbers = generateBaseNumbers();
|
||||
var removedNumbers = super.generateNumbers(getTotalNumber() - numNumber);
|
||||
return baseNumbers.stream().filter(n -> !removedNumbers.contains(n)).toList();
|
||||
return baseNumbers.stream().filter(n -> !removedNumbers.contains(n))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user