Jump to content

danniel.df

Membro Novato
  • Posts

    1
  • Joined

  • Last visited

danniel.df's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later

Recent Badges

0

Reputation

  1. Um algoritmo com IA em PHP que eu fiz para usar os resultados antigos da caixa e gerar apostas baseado no suposto princípio de que os números tendem a igualar a quantidade de ocorrências ao longo do tempo: <?php // http://loterias.caixa.gov.br/wps/portal/loterias/landing/megasena ini_set('display_errors', true); error_reporting(E_ERROR ^ E_DEPRECATED); set_time_limit(999999); $url = 'http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip'; $pasta = 'dat'; $file = 'configuracoes.php'; $qtd_jogos = 0; $qtd_apostas = 1; $numeros_por_jogo = 6; $total = 60; $erros = []; $ocorrencias = []; if (!$_GET) { if (file_exists($pasta . "/" . $file)) { require($pasta . "/" . $file); } } else { $url = $_GET['url']; $qtd_apostas = max($_GET['qtd_apostas'], 1); $numeros_por_jogo = max($_GET['numeros_por_jogo'], 6); $qtd_premios_acumulados = 0; $qtd_ganhadores = 0; if (!is_dir($pasta)) { if (!mkdir($pasta)) { $erros[] = 'Falha ao criar o diretorio para guardar os arquivos da Caixa Economica'; } } if (is_dir($pasta)) { $conteudo_arquivo_configuracoes = '<?php' . PHP_EOL . '$url = "' . $url . '";' . PHP_EOL . '$qtd_apostas = ' . $qtd_apostas . ';' . PHP_EOL . '$numeros_por_jogo = ' . $numeros_por_jogo . ';' . PHP_EOL . '?>'; if (!file_put_contents($pasta . "/" . $file, $conteudo_arquivo_configuracoes)) { $erros[] = 'Falha ao gravar as configuracoes'; } } $numeros_validos = []; for ($x = 1; $x <= $total; $x++) { $numero = sprintf("%0" . strlen($total) . "d", $x); $ocorrencias[$numero] = 0; $numeros_validos[] = $numero; } if (function_exists('curl_init')) { $useragent = $_SERVER['HTTP_USER_AGENT']; $timeout = 120; $dir = dirname(__FILE__); $cookie_file = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_ENCODING, ""); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/'); $content = curl_exec($ch); if (curl_errno($ch)) { $erros[] = 'Falha ao consultar o arquivo zip. Erro CURL: "' . curl_error($ch) . '"'; } curl_close($ch); } else { $erros[] = 'O PHP não consegue extrair os arquivos da caixa'; } if (isset($content)) { file_put_contents($pasta . "/html.zip", $content); $zip = new ZipArchive(); $ok_zip = $zip->open($pasta . "/html.zip"); if ($ok_zip) { $zip->extractTo($pasta . "/zip"); $entradas = scandir($pasta . "/zip"); foreach ($entradas as $entrada) { if ($entrada == "." || $entrada == "..") { continue; } if (is_file($pasta . "/zip/" . $entrada)) { if (strtolower(substr($entrada, -4)) == '.htm') { $html = file_get_contents($pasta . "/zip/" . $entrada); } unlink($pasta . "/zip/" . $entrada); } if (is_dir($pasta . "/zip/" . $entrada)) { rmdir($pasta . "/zip/" . $entrada); } } rmdir($pasta . "/zip"); } else { $erros[] = 'O arquivo ZIP é inválido'; } $zip->close(); } else { $erros[] = 'O arquivo ZIP está vazio'; } if (isset($html)) { $dom_html = new DOMDocument(); $dom_html->loadHTML($html); $dom_tables = $dom_html->getElementsByTagName('table'); $tabela_invalida = false; foreach ($dom_tables as $dom_table) { $dom_trs = $dom_table->getElementsByTagName('tr'); foreach ($dom_trs as $indice_linha => $dom_tr) { if (!$indice_linha) { $dom_ths = $dom_table->getElementsByTagName('th'); foreach ($dom_ths as $indice_coluna => $dom_th) { switch ($indice_coluna) { case 2: case 3: case 4: case 5: case 6: case 7: if ($dom_th->textContent != ($indice_coluna - 1) . 'ª Dezena') { $tabela_invalida = true; } break; case 9: if ($dom_th->textContent != 'Ganhadores_Sena') { $tabela_invalida = true; } } } } else { $dom_tds = $dom_tr->getElementsByTagName('td'); if (count($dom_tds) != count($dom_ths)) { continue; } $qtd_jogos++; foreach ($dom_tds as $indice_coluna => $dom_td) { switch ($indice_coluna) { case 1: $data_primeiro_jogo = isset($data_primeiro_jogo) ? $data_primeiro_jogo : $dom_td->textContent; $data_ultimo_jogo = $dom_td->textContent; break; case 2: case 3: case 4: case 5: case 6: case 7: $numero_sorteado = $dom_td->textContent; if (!in_array($numero_sorteado, $numeros_validos)) { die('O numero sorteado ' . $numero_sorteado . ' é invalido, concurso ' . ($indice_linha + 1) . ', ' . ($indice_coluna + 1) . '° numero'); } $ocorrencias[$numero_sorteado]++; break; case 9: if ($dom_td->textContent == '0') { $qtd_premios_acumulados++; } else { $qtd_ganhadores += (int)$dom_td->textContent; } break; } } } } if ($tabela_invalida) { continue; } } } else { $erros[] = 'O arquivo HTML não foi localizado no ZIP'; } if (!$ocorrencias) { $erros[] = 'Nenhum resultado foi encontrado'; } } ?> <!DOCTYPE html> <html> <head> <title>MEGASENA</title> <meta charset="utf-8"> <meta author="danniel.df@hotmail.com.br"> <style type="text/css"> body { color: #555; font-family: verdana, sans-serif; font-size: 10px; text-align: center; background: #fefffe; width: 50em; margin: auto; } label { padding-bottom: 1em; display: block; } p { text-align: center; padding: 1em; font-style: italic; display: flex; justify-content: center; } h1 { cursor: pointer; color: #096; } ul { display: inline-block; text-align: left; } #form { background-color: #096; color: #fff; font-style: italic; font-weight: bold; margin: 0 auto 1em auto; padding: 1em; } #erros { border: solid 1px #ffa5a5; background-color: #ffbeb8; padding: 1em; margin: 0 auto 1em auto; } #url { width: 30em; } #qtd { width: 3em; } #btn { border: solid 1px gray; padding: 0.5em 5em; margin-top: 1em; } #ocorrencias { display: flex; flex-wrap: wrap; justify-content: center; background-color: #fbfbdf; padding: 1em; margin: 0 auto 1em auto; } #ocorrencias div { border: solid 1px #a00; color: #a00; background-color: #fff; padding: .5em; margin-right: .5em; margin-bottom: .5em; } </style> </head> <body onload="history.pushState('', '', '', '');"> <h1 onclick="location.assign('.');" title="recarregar"> MEGASENA </h1> <div id="form"> <label style="display: block"> URL da Caixa com o ZIP de todos resultados:<br/> <input type="text" id="url" value="<?php echo $url; ?>" style="text-align: center"/> </label> <label style="display: block"> Quantidade de Jogos:<br/> <input type="number" id="qtd_apostas" value="<?php echo $qtd_apostas; ?>" min="1" step="1" style="width: 3em; text-align: center"/> </label> <label style="display: block"> Quantidade de Números por Jogo:<br/> <input type="number" id="numeros_por_jogo" value="<?php echo $numeros_por_jogo; ?>" min="6" max="15" size="3" step="1" style="width: 3em; text-align: center"/> </label> <input type="button" id="btn" value="Processar" onclick="location.assign('?url=' + document.getElementById('url').value + '&qtd_apostas=' + document.getElementById('qtd_apostas').value + '&numeros_por_jogo=' + document.getElementById('numeros_por_jogo').value);" /> </div> <?php if ($erros) { echo '<div id="erros"><ul>'; foreach ($erros as $erro) { echo '<li>' . $erro . '</li>'; } echo '</ul></div>'; } if ($ocorrencias) { echo '<p><b>qtd de ocorrências de cada número:</b></p>' . '<div id="ocorrencias">'; $ocorrencias_ordenadas = []; foreach ($ocorrencias as $numero => $qtd_ocorrencias) { if (!isset($ocorrencias_ordenadas[$qtd_ocorrencias])) { $ocorrencias_ordenadas[$qtd_ocorrencias] = []; } array_push($ocorrencias_ordenadas[$qtd_ocorrencias], $numero); } ksort($ocorrencias_ordenadas); echo '<table><tr><th>Ocorrências</th><th>Números</th></tr>'; foreach ($ocorrencias_ordenadas as $qtd_ocorrencias => $numeros) { echo '<tr>' . '<td>' . $qtd_ocorrencias . '</td>' . '<td>' . implode(',', $numeros) . '</td>' . '</tr>'; } echo '</table>'; echo '</div>' . '<p><b>demais estatísticas:</b></p>' . '<ul>' . '<li>Qtd de jogos: <b>' . $qtd_jogos . '</b></li>' . '<li>Qtd de prêmios acumulados: <b>' . sprintf("%01.1f", $qtd_premios_acumulados * 100 / $qtd_jogos) . '%</b></li>' . '<li>Qtd de ganhadores até hoje: <b>' . $qtd_ganhadores . '</b></li>' . '<li>Qtd média de ganhadores por jogo: <b>' . sprintf("%01.2f", $qtd_ganhadores / $qtd_jogos) . '</b></li>' . '<li>Data do primeiro jogo: <b>' . $data_primeiro_jogo . '</b></li>' . '<li>Data do último jogo: <b>' . $data_ultimo_jogo . '</b></li>' . '</ul>'; echo '<div style="padding: 10px; background-color: #cbffaa; border: solid 1px #b9e9bb;">' . '<strong style="display: block; text-align: center; margin-bottom: 30px;">' . 'Apostas sugeridas:' . '</strong>'; if ($qtd_apostas && $numeros_por_jogo) { for ($jogo = 1; $jogo <= $qtd_apostas; $jogo++) { $numeros = range(1, $total); while (count($numeros) > $numeros_por_jogo) { $total_ocorrencias = 0; foreach ($ocorrencias as $numero => $ocorrencia) { $numero = (int)$numero; if (in_array($numero, $numeros)) { $total_ocorrencias += $ocorrencia; } } $range_numero_eliminado = rand(1, $total_ocorrencias); $total_ocorrencias = 0; foreach ($ocorrencias as $numero => $ocorrencia) { $numero = (int)$numero; $posicao = array_search($numero, $numeros); if ($posicao !== false) { $total_ocorrencias += $ocorrencia; if ($range_numero_eliminado <= $total_ocorrencias) { unset($numeros[$posicao]); break; } } } } echo "<div style='padding: 3px; margin-top: 5px;'> Jogo " . str_pad($jogo, strlen($qtd_apostas), "0", STR_PAD_LEFT) . ": "; foreach ($numeros as $numero) { echo '<span style="padding: 3px; margin-right: 3px; background-color: white;">' . str_pad($numero, strlen($total), "0", STR_PAD_LEFT) . '</span>'; } echo "</div>"; } echo "<div style='text-align: center; font-weight: bold; font-family: garamound, sans-serif; font-size: 2.5em; color: #d31eac; padding: 15px;'>BOA SORTE!</div>"; } else { echo '<div style="background: lightgray; color: orange; padding: 3px; text-align: center; border: solid 1px gray; font-weight: bold;">Não foram definidas as apostas</div>'; } echo "</div><br/>"; } ?> </body> </html>
×
×
  • Create New...