Rev 106 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.domain.dto;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.util.VerificadorUtil;
public class MegaDTO
{
private Integer primeiroFixo
;
private Integer segundoFixo
;
private Integer terceiroFixo
;
private Integer totalCombinacoes
;
private List<Integer> numerosEscolhidos =
new ArrayList<Integer>();
private List<MegaCombinacaoDTO
> combinacoes =
new ArrayList<MegaCombinacaoDTO
>();
public Integer getPrimeiroFixo
() {
return primeiroFixo
;
}
public void setPrimeiroFixo
(Integer primeiroFixo
) {
this.
primeiroFixo = primeiroFixo
;
}
public Integer getSegundoFixo
() {
return segundoFixo
;
}
public void setSegundoFixo
(Integer segundoFixo
) {
this.
segundoFixo = segundoFixo
;
}
public Integer getTerceiroFixo
() {
return terceiroFixo
;
}
public void setTerceiroFixo
(Integer terceiroFixo
) {
this.
terceiroFixo = terceiroFixo
;
}
public Integer getTotalCombinacoes
() {
return totalCombinacoes
;
}
public void setTotalCombinacoes
(Integer totalCombinacoes
) {
this.
totalCombinacoes = totalCombinacoes
;
}
public List<Integer> getNumerosEscolhidos
() {
return numerosEscolhidos
;
}
public void setNumerosEscolhidos
(List<Integer> numerosEscolhidos
) {
this.
numerosEscolhidos = numerosEscolhidos
;
}
public void adicionarNumero
(Integer numero
) {
if (VerificadorUtil.
estaNulo(numero
)) {
throw new NegocioException
("FAVOR INFORMAR O NÚMERO");
}
if (getNumerosEscolhidos
().
contains(numero
)) {
throw new NegocioException
("NÚMERO JÁ ADICIONADO ANTERIORMENTE");
}
getNumerosEscolhidos
().
add(numero
);
}
public void retirarNumero
(Integer numero
) {
getNumerosEscolhidos
().
remove(numero
);
}
public List<MegaCombinacaoDTO
> getCombinacoes
() {
return combinacoes
;
}
public void setCombinacoes
(List<MegaCombinacaoDTO
> combinacoes
) {
this.
combinacoes = combinacoes
;
}
private void adicionarCombinacao
(MegaCombinacaoDTO megaCombinacaoDTO
) {
Boolean repetida =
false;
for (MegaCombinacaoDTO combinacao :
this.
getCombinacoes()) {
if (combinacao.
getSequencia().
containsAll(megaCombinacaoDTO.
getSequencia())) {
repetida =
true;
break;
}
}
if (!repetida ||
this.
getCombinacoes().
isEmpty()) {
this.
getCombinacoes().
add(megaCombinacaoDTO
);
}
}
public void gerarCombinacoes
() {
Boolean criar =
true;
MegaDTO mega =
new MegaDTO
();
Integer indicador =
0;
while (criar
) {
MegaCombinacaoDTO megaCombinacaoDTO =
new MegaCombinacaoDTO
();
if (VerificadorUtil.
naoEstaNulo(getPrimeiroFixo
())) {
megaCombinacaoDTO.
getSequencia().
add(getPrimeiroFixo
());
}
if (VerificadorUtil.
naoEstaNulo(getSegundoFixo
())) {
megaCombinacaoDTO.
getSequencia().
add(getSegundoFixo
());
}
if (VerificadorUtil.
naoEstaNulo(getTerceiroFixo
())) {
megaCombinacaoDTO.
getSequencia().
add(getTerceiroFixo
());
}
while (megaCombinacaoDTO.
getSequencia().
size() < 6) {
Random gerador =
new Random();
Integer numeroGerado = gerador.
nextInt(60);
if (getNumerosEscolhidos
().
contains(numeroGerado
)) {
megaCombinacaoDTO.
adicionarNumero(numeroGerado
);
}
}
// System.out.println("ADICIONANDO: " + megaCombinacaoDTO.getSequencia());
mega.
adicionarCombinacao(megaCombinacaoDTO
);
indicador++
;
if (VerificadorUtil.
naoEstaNulo(getTotalCombinacoes
())) {
if (getTotalCombinacoes
() <= indicador
) {
System.
out.
println(indicador
);
criar =
false;
}
} else if (indicador
> 100000) {
// System.out.println(indicador);
criar =
false;
}
}
StringBuilder combinacoes =
new StringBuilder();
combinacoes.
append("COMBINAÇÕES:");
for (MegaCombinacaoDTO combinacao : mega.
getCombinacoes()) {
combinacoes.
append(combinacao.
getSequencia());
}
this.
setCombinacoes(mega.
getCombinacoes());
}
public static void main
(String[] args
) {
List<Integer> escolhidos =
Collections.
unmodifiableList(Arrays.
asList(1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20));
Integer primeiroFixo =
10;
Integer segundoFixo =
12;
Integer terceiroFixo =
14;
Boolean criar =
true;
MegaDTO mega =
new MegaDTO
();
Integer indicador =
0;
while (criar
) {
MegaCombinacaoDTO megaCombinacaoDTO =
new MegaCombinacaoDTO
();
if (VerificadorUtil.
naoEstaNulo(primeiroFixo
)) {
megaCombinacaoDTO.
getSequencia().
add(primeiroFixo
);
}
if (VerificadorUtil.
naoEstaNulo(segundoFixo
)) {
megaCombinacaoDTO.
getSequencia().
add(segundoFixo
);
}
if (VerificadorUtil.
naoEstaNulo(terceiroFixo
)) {
megaCombinacaoDTO.
getSequencia().
add(terceiroFixo
);
}
while (megaCombinacaoDTO.
getSequencia().
size() < 6) {
Random gerador =
new Random();
Integer numeroGerado = gerador.
nextInt(60);
if (escolhidos.
contains(numeroGerado
)) {
megaCombinacaoDTO.
adicionarNumero(numeroGerado
);
}
}
mega.
adicionarCombinacao(megaCombinacaoDTO
);
indicador++
;
if (indicador
> 20000) {
System.
out.
println(indicador
);
criar =
false;
}
}
System.
out.
println("COMBINAÇÕES");
for (MegaCombinacaoDTO combinacao : mega.
getCombinacoes()) {
System.
out.
println(combinacao.
getSequencia());
}
}
}