From 38f079c5fcba000bccd13535f942190c42376788 Mon Sep 17 00:00:00 2001 From: TienNM Date: Tue, 16 May 2023 01:38:10 +0700 Subject: [PATCH] [Base] (Add) normal, reversed generator, mega 6/45, mega 6/55 --- .gitignore | 49 +++++-- .idea/.gitignore | 8 ++ .idea/encodings.xml | 7 + .idea/google-java-format.xml | 6 + .idea/misc.xml | 14 ++ .idea/uiDesigner.xml | 124 ++++++++++++++++++ .idea/vcs.xml | 6 + pom.xml | 25 ++++ .../lotterygenerator/LotteryGenerator.java | 8 ++ .../dev/miti99/lotterygenerator/Main.java | 7 + .../mega/Mega645Generator.java | 12 ++ .../mega/Mega655Generator.java | 12 ++ .../lotterygenerator/mega/MegaGenerator.java | 45 +++++++ .../reverserd/ReversedMega645Generator.java | 12 ++ .../reverserd/ReversedMega655Generator.java | 12 ++ .../mega/reverserd/ReversedMegaGenerator.java | 18 +++ .../mega/Mega645GeneratorTest.java | 20 +++ .../mega/Mega655GeneratorTest.java | 20 +++ .../ReversedMega645GeneratorTest.java | 21 +++ .../ReversedMega655GeneratorTest.java | 21 +++ 20 files changed, 433 insertions(+), 14 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/encodings.xml create mode 100644 .idea/google-java-format.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 pom.xml create mode 100644 src/main/java/dev/miti99/lotterygenerator/LotteryGenerator.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/Main.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/mega/Mega645Generator.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/mega/Mega655Generator.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/mega/MegaGenerator.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645Generator.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655Generator.java create mode 100644 src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMegaGenerator.java create mode 100644 src/test/java/dev/miti99/lotterygenerator/mega/Mega645GeneratorTest.java create mode 100644 src/test/java/dev/miti99/lotterygenerator/mega/Mega655GeneratorTest.java create mode 100644 src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645GeneratorTest.java create mode 100644 src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655GeneratorTest.java diff --git a/.gitignore b/.gitignore index 2f43530..5ff6309 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,38 @@ target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -# https://github.com/takari/maven-wrapper#usage-without-binary-jar -.mvn/wrapper/maven-wrapper.jar +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ -# Eclipse m2e generated files -# Eclipse Core -.project -# JDT-specific (Eclipse Java Development Tools) +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated .classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/google-java-format.xml b/.idea/google-java-format.xml new file mode 100644 index 0000000..2aa056d --- /dev/null +++ b/.idea/google-java-format.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..82dbec8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..70ce7a4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + dev.miti99 + lottery-generator + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + org.junit.jupiter + junit-jupiter + RELEASE + test + + + + diff --git a/src/main/java/dev/miti99/lotterygenerator/LotteryGenerator.java b/src/main/java/dev/miti99/lotterygenerator/LotteryGenerator.java new file mode 100644 index 0000000..1172375 --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/LotteryGenerator.java @@ -0,0 +1,8 @@ +package dev.miti99.lotterygenerator; + +import java.util.List; + +public interface LotteryGenerator { + List generateNumbers(); + List generateNumbers(int numNumber); +} diff --git a/src/main/java/dev/miti99/lotterygenerator/Main.java b/src/main/java/dev/miti99/lotterygenerator/Main.java new file mode 100644 index 0000000..6ca342c --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/Main.java @@ -0,0 +1,7 @@ +package dev.miti99.lotterygenerator; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} diff --git a/src/main/java/dev/miti99/lotterygenerator/mega/Mega645Generator.java b/src/main/java/dev/miti99/lotterygenerator/mega/Mega645Generator.java new file mode 100644 index 0000000..3168ba9 --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/mega/Mega645Generator.java @@ -0,0 +1,12 @@ +package dev.miti99.lotterygenerator.mega; + +public class Mega645Generator extends MegaGenerator { + + public Mega645Generator(int numNumber) { + super(1, 45, numNumber); + } + + public Mega645Generator() { + this(6); + } +} diff --git a/src/main/java/dev/miti99/lotterygenerator/mega/Mega655Generator.java b/src/main/java/dev/miti99/lotterygenerator/mega/Mega655Generator.java new file mode 100644 index 0000000..a014b5f --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/mega/Mega655Generator.java @@ -0,0 +1,12 @@ +package dev.miti99.lotterygenerator.mega; + +public class Mega655Generator extends MegaGenerator { + + public Mega655Generator(int numNumber) { + super(1, 55, numNumber); + } + + public Mega655Generator() { + this(6); + } +} diff --git a/src/main/java/dev/miti99/lotterygenerator/mega/MegaGenerator.java b/src/main/java/dev/miti99/lotterygenerator/mega/MegaGenerator.java new file mode 100644 index 0000000..273412c --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/mega/MegaGenerator.java @@ -0,0 +1,45 @@ +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 MegaGenerator(int minNumber, int maxNumber, int numNumber) { + this.minNumber = minNumber; + this.maxNumber = maxNumber; + this.numNumber = numNumber; + } + + protected int getTotalNumber() { + return maxNumber - minNumber + 1; + } + + protected List generateBaseNumbers() { + return IntStream.rangeClosed(minNumber, maxNumber).boxed().collect(Collectors.toList()); + } + + @Override + public List generateNumbers(int numNumber) { + var baseNumbers = generateBaseNumbers(); + var result = new ArrayList(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; + } + + @Override + public List generateNumbers() { + return generateNumbers(numNumber); + } +} diff --git a/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645Generator.java b/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645Generator.java new file mode 100644 index 0000000..2a1b3b1 --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645Generator.java @@ -0,0 +1,12 @@ +package dev.miti99.lotterygenerator.mega.reverserd; + +public class ReversedMega645Generator extends ReversedMegaGenerator { + + public ReversedMega645Generator(int numNumber) { + super(1, 45, numNumber); + } + + public ReversedMega645Generator() { + this(6); + } +} diff --git a/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655Generator.java b/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655Generator.java new file mode 100644 index 0000000..fa5655c --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655Generator.java @@ -0,0 +1,12 @@ +package dev.miti99.lotterygenerator.mega.reverserd; + +public class ReversedMega655Generator extends ReversedMegaGenerator { + + public ReversedMega655Generator(int numNumber) { + super(1, 55, numNumber); + } + + public ReversedMega655Generator() { + this(6); + } +} diff --git a/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMegaGenerator.java b/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMegaGenerator.java new file mode 100644 index 0000000..87a3d14 --- /dev/null +++ b/src/main/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMegaGenerator.java @@ -0,0 +1,18 @@ +package dev.miti99.lotterygenerator.mega.reverserd; + +import dev.miti99.lotterygenerator.mega.MegaGenerator; + +import java.util.List; + +public class ReversedMegaGenerator extends MegaGenerator { + public ReversedMegaGenerator(int minNumber, int maxNumber, int numNumber) { + super(minNumber, maxNumber, numNumber); + } + + @Override + public List generateNumbers(int numNumber) { + var baseNumbers = generateBaseNumbers(); + var removedNumbers = super.generateNumbers(getTotalNumber() - numNumber); + return baseNumbers.stream().filter(n -> !removedNumbers.contains(n)).toList(); + } +} diff --git a/src/test/java/dev/miti99/lotterygenerator/mega/Mega645GeneratorTest.java b/src/test/java/dev/miti99/lotterygenerator/mega/Mega645GeneratorTest.java new file mode 100644 index 0000000..d93227d --- /dev/null +++ b/src/test/java/dev/miti99/lotterygenerator/mega/Mega645GeneratorTest.java @@ -0,0 +1,20 @@ +package dev.miti99.lotterygenerator.mega; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class Mega645GeneratorTest { + @Test + public void testGenerateNumbers() { + var mega645Generator = new Mega645Generator(); + var numbers = mega645Generator.generateNumbers(); + System.out.println(numbers); + assertEquals(6, numbers.size()); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 45); + assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number)); + } + } +} diff --git a/src/test/java/dev/miti99/lotterygenerator/mega/Mega655GeneratorTest.java b/src/test/java/dev/miti99/lotterygenerator/mega/Mega655GeneratorTest.java new file mode 100644 index 0000000..69e3be8 --- /dev/null +++ b/src/test/java/dev/miti99/lotterygenerator/mega/Mega655GeneratorTest.java @@ -0,0 +1,20 @@ +package dev.miti99.lotterygenerator.mega; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class Mega655GeneratorTest { + @Test + public void testGenerateNumbers() { + var mega645Generator = new Mega645Generator(); + var numbers = mega645Generator.generateNumbers(); + System.out.println(numbers); + assertEquals(6, numbers.size()); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 55); + assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number)); + } + } +} diff --git a/src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645GeneratorTest.java b/src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645GeneratorTest.java new file mode 100644 index 0000000..76e9c78 --- /dev/null +++ b/src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega645GeneratorTest.java @@ -0,0 +1,21 @@ +package dev.miti99.lotterygenerator.mega.reverserd; + +import dev.miti99.lotterygenerator.mega.Mega645Generator; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ReversedMega645GeneratorTest { + @Test + public void testGenerateNumbers() { + var mega645Generator = new Mega645Generator(); + var numbers = mega645Generator.generateNumbers(7); + System.out.println(numbers); + assertEquals(7, numbers.size()); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 45); + assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number)); + } + } +} diff --git a/src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655GeneratorTest.java b/src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655GeneratorTest.java new file mode 100644 index 0000000..3d28dcc --- /dev/null +++ b/src/test/java/dev/miti99/lotterygenerator/mega/reverserd/ReversedMega655GeneratorTest.java @@ -0,0 +1,21 @@ +package dev.miti99.lotterygenerator.mega.reverserd; + +import dev.miti99.lotterygenerator.mega.Mega645Generator; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ReversedMega655GeneratorTest { + @Test + public void testGenerateNumbers() { + var mega645Generator = new Mega645Generator(); + var numbers = mega645Generator.generateNumbers(7); + System.out.println(numbers); + assertEquals(7, numbers.size()); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 55); + assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number)); + } + } +}