Advertisement
am_dot_com

Untitled

May 7th, 2021 (edited)
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Problemas de Procura e Ordenação sobre coleções aleatórias</title>
  6. <script src="util.js"></script><!-- agora com inteiroAleatorio -->
  7. </head>
  8. <body>
  9. <script>
  10. /*
  11. recebe um elemento (pE)
  12. recebe um array (pA)
  13. retorna true se encontrar pE em pA
  14. retorna false, caso contrário
  15. é um algoritmo de procura CEGA
  16. blindSearch
  17. */
  18. function elementoExisteEmArray(
  19. pE,
  20. pA
  21. ){
  22. var iQuantosElementos = pA.length;
  23. var iElemento = 0;
  24. while(iElemento<iQuantosElementos){
  25. var elementoDoMomento = pA[iElemento];
  26. var bElementoFoiEncontrado = elementoDoMomento === pE;
  27. if (bElementoFoiEncontrado) return true;
  28.  
  29. iElemento+=1;
  30. }//while
  31. return false;
  32. }//elementoExisteEmArray
  33.  
  34. /*
  35. retorna a(s) posição(ões) em que o elemento é encontrado
  36. se o elemento nunca for encontrado, retorna []
  37. */
  38. function blindSearch(
  39. pE,
  40. pA
  41. ){
  42. var aDasPosEmQueElementoFoiEncontrado = [];
  43. var iQuantosElementos = pA.length;
  44. var iElemento = 0;
  45. while(iElemento<iQuantosElementos){
  46. var elementoDoMomento = pA[iElemento];
  47. var bElementoFoiEncontrado = elementoDoMomento === pE;
  48. if (bElementoFoiEncontrado) {
  49. //assim
  50. aDasPosEmQueElementoFoiEncontrado.push(
  51. iElemento
  52. );
  53.  
  54. //ou assim
  55. /*
  56. aDasPosEmQueElementoFoiEncontrado[
  57. aDasPosEmQueElementoFoiEncontrado.length
  58. ] = iElemento;
  59. */
  60. };
  61.  
  62. iElemento+=1;
  63. }//while
  64. return aDasPosEmQueElementoFoiEncontrado;
  65. }//blindSearch
  66.  
  67. /*
  68. exemplo:
  69. var seq = sequenciaAleatoria (5, 1, 50);
  70. //seq = [10, 12, 5, 3, 33]
  71. */
  72. const QUANTIDADE_POR_DEFEITO_DE_ELEMENTOS = 5;
  73. const MIN_POR_DEFEITO = 1;
  74. const MAX_POR_DEFEITO = 50;
  75. const BACEITAR_REPETICOES_POR_DEFEITO = false;
  76. const DOES_NOT_COMPUTE = false;
  77. function sequenciaAleatoria(
  78. pQuantidadeDeElementos,
  79. pMin,
  80. pMax,
  81. pbAceitarRepeticoes
  82. ){
  83. pQuantidadeDeElementos =
  84. (pQuantidadeDeElementos===undefined) ?
  85. QUANTIDADE_POR_DEFEITO_DE_ELEMENTOS
  86. :
  87. pQuantidadeDeElementos;
  88.  
  89. pMin =
  90. (pMin === undefined) ? MIN_POR_DEFEITO : pMin;
  91.  
  92. pMax =
  93. (pMax === undefined) ? MAX_POR_DEFEITO : pMax;
  94.  
  95. pbAceitarRepeticoes =
  96. (pbAceitarRepeticoes===undefined) ?
  97. BACEITAR_REPETICOES_POR_DEFEITO : pbAceitarRepeticoes;
  98.  
  99. iAmplitude = (Math.max(pMin, pMax) - Math.min(pMin, pMax)+1);
  100. var bIstoDaParaComputar =
  101. pbAceitarRepeticoes ||
  102. pQuantidadeDeElementos<=iAmplitude;
  103.  
  104. if (bIstoDaParaComputar){
  105. var sequencia = []; // = new Array();
  106.  
  107. for(
  108. var quantidadeDeElementosInseridos = 1;
  109. quantidadeDeElementosInseridos<=pQuantidadeDeElementos;
  110. //quantidadeDeElementosInseridos++
  111. ){
  112. var numeroAoCalhasEntreMinMax =
  113. inteiroAleatorio(pMin, pMax);
  114.  
  115. //ou assim
  116. var index = quantidadeDeElementosInseridos-1;
  117. //inserts cegos, incondicionais na sequência
  118. if (pbAceitarRepeticoes){
  119. sequencia[index] = numeroAoCalhasEntreMinMax;
  120. quantidadeDeElementosInseridos++;
  121. }
  122. else{ //NÃO ACEITAR REPETIÇÕES!!!
  123. var bNumeroJaExiste = elementoExisteEmArray(
  124. numeroAoCalhasEntreMinMax, //elemento
  125. sequencia //array
  126. );
  127. if (!bNumeroJaExiste){
  128. sequencia[index] = numeroAoCalhasEntreMinMax;
  129. quantidadeDeElementosInseridos++;
  130. }
  131. }
  132. //ou assado
  133. //sequencia.push(numeroAoCalhasEntreMinMax);
  134. }//for
  135.  
  136. return sequencia;
  137. }//if isto é computável
  138. return DOES_NOT_COMPUTE;
  139. }//sequenciaAleatoria
  140.  
  141. const QUANTAS_ESCRITAS_QUERO = 1000;
  142. var quantasSequenciasJaEscrevi = 0;
  143. while(quantasSequenciasJaEscrevi<QUANTAS_ESCRITAS_QUERO){
  144. var seq = sequenciaAleatoria(
  145. 5,
  146. 1,
  147. 3,
  148. true //aceitar repetições
  149. //false //ou não escrever nada significar REJEITAR REPETIÇÕES
  150. );
  151. document.write(seq);
  152. document.write("<br>");
  153. quantasSequenciasJaEscrevi++;
  154. }//while
  155.  
  156. </script>
  157. </body>
  158. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement