mirror of
https://github.com/tiennm99/lottery-generator-java.git
synced 2026-05-14 07:52:46 +00:00
[Change] refactor
This commit is contained in:
@@ -3,6 +3,6 @@ package dev.miti99.lotterygenerator;
|
||||
import java.util.List;
|
||||
|
||||
public interface LotteryGenerator {
|
||||
List<Integer> generateNumbers();
|
||||
List<Integer> generateNumbers(int numNumber);
|
||||
|
||||
List<Integer> generateNumbers(int numNumber);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package dev.miti99.lotterygenerator;
|
||||
|
||||
import dev.miti99.lotterygenerator.mega.Mega645Generator;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello world!");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
var generator = new Mega645Generator();
|
||||
var result = generator.generateNumbers(4);
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BasePresetGenerator extends MegaGenerator {
|
||||
|
||||
int numNumber;
|
||||
|
||||
public BasePresetGenerator(int minNumber, int maxNumber, int numNumber) {
|
||||
super(minNumber, maxNumber);
|
||||
this.numNumber = numNumber;
|
||||
}
|
||||
|
||||
public List<Integer> generateNumbers() {
|
||||
return generateNumbers(numNumber);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
public class Mega645Generator extends MegaGenerator {
|
||||
public class Mega645Generator extends BasePresetGenerator {
|
||||
|
||||
public Mega645Generator(int numNumber) {
|
||||
super(1, 45, numNumber);
|
||||
}
|
||||
public Mega645Generator(int numNumber) {
|
||||
super(1, 45, numNumber);
|
||||
}
|
||||
|
||||
public Mega645Generator() {
|
||||
this(6);
|
||||
}
|
||||
public Mega645Generator() {
|
||||
this(6);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
public class Mega655Generator extends MegaGenerator {
|
||||
public class Mega655Generator extends BasePresetGenerator {
|
||||
|
||||
public Mega655Generator(int numNumber) {
|
||||
super(1, 55, numNumber);
|
||||
}
|
||||
public Mega655Generator(int numNumber) {
|
||||
super(1, 55, numNumber);
|
||||
}
|
||||
|
||||
public Mega655Generator() {
|
||||
this(6);
|
||||
}
|
||||
public Mega655Generator() {
|
||||
this(6);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +1,39 @@
|
||||
package dev.miti99.lotterygenerator.mega;
|
||||
|
||||
import dev.miti99.lotterygenerator.LotteryGenerator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
public abstract class MegaGenerator implements LotteryGenerator {
|
||||
int minNumber;
|
||||
int maxNumber;
|
||||
int numNumber;
|
||||
public class MegaGenerator implements LotteryGenerator {
|
||||
|
||||
public MegaGenerator(int minNumber, int maxNumber, int numNumber) {
|
||||
this.minNumber = minNumber;
|
||||
this.maxNumber = maxNumber;
|
||||
this.numNumber = numNumber;
|
||||
}
|
||||
int minNumber;
|
||||
int maxNumber;
|
||||
|
||||
protected int getTotalNumber() {
|
||||
return maxNumber - minNumber + 1;
|
||||
}
|
||||
|
||||
protected List<Integer> generateBaseNumbers() {
|
||||
return IntStream.rangeClosed(minNumber, maxNumber).boxed().collect(Collectors.toList());
|
||||
}
|
||||
public MegaGenerator(int minNumber, int maxNumber) {
|
||||
this.minNumber = minNumber;
|
||||
this.maxNumber = maxNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers(int numNumber) {
|
||||
var baseNumbers = generateBaseNumbers();
|
||||
var result = new ArrayList<Integer>(numNumber);
|
||||
for (int i = 0; i < numNumber; i++) {
|
||||
var index = (int) (Math.random() * baseNumbers.size());
|
||||
result.add(baseNumbers.get(index));
|
||||
baseNumbers.remove(index);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
protected int getTotalNumber() {
|
||||
return maxNumber - minNumber + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers() {
|
||||
return generateNumbers(numNumber);
|
||||
protected List<Integer> generateBaseNumbers() {
|
||||
return IntStream.rangeClosed(minNumber, maxNumber).boxed().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers(int numNumber) {
|
||||
var baseNumbers = generateBaseNumbers();
|
||||
var result = new ArrayList<Integer>(numNumber);
|
||||
for (int i = 0; i < numNumber; i++) {
|
||||
var index = (int) (Math.random() * baseNumbers.size());
|
||||
result.add(baseNumbers.get(index));
|
||||
baseNumbers.remove(index);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -2,11 +2,11 @@ package dev.miti99.lotterygenerator.mega.reverserd;
|
||||
|
||||
public class ReversedMega645Generator extends ReversedMegaGenerator {
|
||||
|
||||
public ReversedMega645Generator(int numNumber) {
|
||||
super(1, 45, numNumber);
|
||||
}
|
||||
public ReversedMega645Generator(int numNumber) {
|
||||
super(1, 45, numNumber);
|
||||
}
|
||||
|
||||
public ReversedMega645Generator() {
|
||||
this(6);
|
||||
}
|
||||
public ReversedMega645Generator() {
|
||||
this(6);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -2,11 +2,11 @@ package dev.miti99.lotterygenerator.mega.reverserd;
|
||||
|
||||
public class ReversedMega655Generator extends ReversedMegaGenerator {
|
||||
|
||||
public ReversedMega655Generator(int numNumber) {
|
||||
super(1, 55, numNumber);
|
||||
}
|
||||
public ReversedMega655Generator(int numNumber) {
|
||||
super(1, 55, numNumber);
|
||||
}
|
||||
|
||||
public ReversedMega655Generator() {
|
||||
this(6);
|
||||
}
|
||||
public ReversedMega655Generator() {
|
||||
this(6);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-12
@@ -1,18 +1,18 @@
|
||||
package dev.miti99.lotterygenerator.mega.reverserd;
|
||||
|
||||
import dev.miti99.lotterygenerator.mega.MegaGenerator;
|
||||
|
||||
import dev.miti99.lotterygenerator.mega.BasePresetGenerator;
|
||||
import java.util.List;
|
||||
|
||||
public class ReversedMegaGenerator extends MegaGenerator {
|
||||
public ReversedMegaGenerator(int minNumber, int maxNumber, int numNumber) {
|
||||
super(minNumber, maxNumber, numNumber);
|
||||
}
|
||||
public class ReversedMegaGenerator extends BasePresetGenerator {
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers(int numNumber) {
|
||||
var baseNumbers = generateBaseNumbers();
|
||||
var removedNumbers = super.generateNumbers(getTotalNumber() - numNumber);
|
||||
return baseNumbers.stream().filter(n -> !removedNumbers.contains(n)).toList();
|
||||
}
|
||||
public ReversedMegaGenerator(int minNumber, int maxNumber, int numNumber) {
|
||||
super(minNumber, maxNumber, numNumber);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> generateNumbers(int numNumber) {
|
||||
var baseNumbers = generateBaseNumbers();
|
||||
var removedNumbers = super.generateNumbers(getTotalNumber() - numNumber);
|
||||
return baseNumbers.stream().filter(n -> !removedNumbers.contains(n)).toList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user