Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Problemas de Procura e Ordenação sobre coleções aleatórias</title>
- <script src="util.js"></script><!-- agora com inteiroAleatorio -->
- </head>
- <body>
- <script>
- /*
- recebe um elemento (pE)
- recebe um array (pA)
- retorna true se encontrar pE em pA
- retorna false, caso contrário
- é um algoritmo de procura CEGA
- blindSearch
- */
- function elementoExisteEmArray(
- pE,
- pA
- ){
- var iQuantosElementos = pA.length;
- var iElemento = 0;
- while(iElemento<iQuantosElementos){
- var elementoDoMomento = pA[iElemento];
- var bElementoFoiEncontrado = elementoDoMomento === pE;
- if (bElementoFoiEncontrado) return true;
- iElemento+=1;
- }//while
- return false;
- }//elementoExisteEmArray
- /*
- retorna a(s) posição(ões) em que o elemento é encontrado
- se o elemento nunca for encontrado, retorna []
- */
- function blindSearch(
- pE,
- pA
- ){
- var aDasPosEmQueElementoFoiEncontrado = [];
- var iQuantosElementos = pA.length;
- var iElemento = 0;
- while(iElemento<iQuantosElementos){
- var elementoDoMomento = pA[iElemento];
- var bElementoFoiEncontrado = elementoDoMomento === pE;
- if (bElementoFoiEncontrado) {
- //assim
- aDasPosEmQueElementoFoiEncontrado.push(
- iElemento
- );
- //ou assim
- /*
- aDasPosEmQueElementoFoiEncontrado[
- aDasPosEmQueElementoFoiEncontrado.length
- ] = iElemento;
- */
- };
- iElemento+=1;
- }//while
- return aDasPosEmQueElementoFoiEncontrado;
- }//blindSearch
- /*
- exemplo:
- var seq = sequenciaAleatoria (5, 1, 50);
- //seq = [10, 12, 5, 3, 33]
- */
- const QUANTIDADE_POR_DEFEITO_DE_ELEMENTOS = 5;
- const MIN_POR_DEFEITO = 1;
- const MAX_POR_DEFEITO = 50;
- const BACEITAR_REPETICOES_POR_DEFEITO = false;
- const DOES_NOT_COMPUTE = false;
- function sequenciaAleatoria(
- pQuantidadeDeElementos,
- pMin,
- pMax,
- pbAceitarRepeticoes
- ){
- pQuantidadeDeElementos =
- (pQuantidadeDeElementos===undefined) ?
- QUANTIDADE_POR_DEFEITO_DE_ELEMENTOS
- :
- pQuantidadeDeElementos;
- pMin =
- (pMin === undefined) ? MIN_POR_DEFEITO : pMin;
- pMax =
- (pMax === undefined) ? MAX_POR_DEFEITO : pMax;
- pbAceitarRepeticoes =
- (pbAceitarRepeticoes===undefined) ?
- BACEITAR_REPETICOES_POR_DEFEITO : pbAceitarRepeticoes;
- iAmplitude = (Math.max(pMin, pMax) - Math.min(pMin, pMax)+1);
- var bIstoDaParaComputar =
- pbAceitarRepeticoes ||
- pQuantidadeDeElementos<=iAmplitude;
- if (bIstoDaParaComputar){
- var sequencia = []; // = new Array();
- for(
- var quantidadeDeElementosInseridos = 1;
- quantidadeDeElementosInseridos<=pQuantidadeDeElementos;
- //quantidadeDeElementosInseridos++
- ){
- var numeroAoCalhasEntreMinMax =
- inteiroAleatorio(pMin, pMax);
- //ou assim
- var index = quantidadeDeElementosInseridos-1;
- //inserts cegos, incondicionais na sequência
- if (pbAceitarRepeticoes){
- sequencia[index] = numeroAoCalhasEntreMinMax;
- quantidadeDeElementosInseridos++;
- }
- else{ //NÃO ACEITAR REPETIÇÕES!!!
- var bNumeroJaExiste = elementoExisteEmArray(
- numeroAoCalhasEntreMinMax, //elemento
- sequencia //array
- );
- if (!bNumeroJaExiste){
- sequencia[index] = numeroAoCalhasEntreMinMax;
- quantidadeDeElementosInseridos++;
- }
- }
- //ou assado
- //sequencia.push(numeroAoCalhasEntreMinMax);
- }//for
- return sequencia;
- }//if isto é computável
- return DOES_NOT_COMPUTE;
- }//sequenciaAleatoria
- const QUANTAS_ESCRITAS_QUERO = 1000;
- var quantasSequenciasJaEscrevi = 0;
- while(quantasSequenciasJaEscrevi<QUANTAS_ESCRITAS_QUERO){
- var seq = sequenciaAleatoria(
- 5,
- 1,
- 3,
- true //aceitar repetições
- //false //ou não escrever nada significar REJEITAR REPETIÇÕES
- );
- document.write(seq);
- document.write("<br>");
- quantasSequenciasJaEscrevi++;
- }//while
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement