• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fnds

[PHP] Gerador de chaves do Euromilhões

8 mensagens neste tópico

Estive a ver o meu arquivo de código (aka código velho, muito velho :() e encontrei lá este script web based, não é nada de especial.

$numero_de_chaves = isset($_GET['c']) ? $_GET['c']+0 : 1;
$numero_de_numeros = isset($_GET['n']) ? $_GET['n']+0 : 5;
$numero_de_estrelas = isset($_GET['e']) ? $_GET['e']+0 : 2;
$combinacoes=array(
2=>array(
	5=>array(1, 2),
	6=>array(6, 12),
	7=>array(21, 42),
	8=>array(56, 112),
	9=>array(126, 252),
	10=>array(252, 504),
	11=>array(462, 924)
	),
3=>array(
	5=>array(3, 6),
	6=>array(18, 36),
	7=>array(63, 126),
	8=>array(168, 336),
	9=>array(378, 756),
	10=>array(756, 1512)
	),
4=>array(
	5=>array(6, 12),
	6=>array(36, 72),
	7=>array(126, 252),
	8=>array(336, 672),
	9=>array(756, 1512)
	),
5=>array(
	5=>array(10, 20),
	6=>array(60, 120),
	7=>array(210, 420),
	8=>array(560, 1120),
	),
6=>array(
	5=>array(15, 30),
	6=>array(90, 180),
	7=>array(315, 630),
	),
7=>array(
	5=>array(21, 42),
	6=>array(126, 252),
	7=>array(441, 882),
	),
8=>array(
	5=>array(28, 56),
	6=>array(168, 336),
	7=>array(588, 1176),
	),
9=>array(
	5=>array(36, 72),
	6=>array(216, 432),
	7=>array(756, 1512),
	)
);
if ($numero_de_chaves){
if (isset($combinacoes[$numero_de_estrelas]) && isset($combinacoes[$numero_de_estrelas][$numero_de_numeros])){
	echo "<b>Número de chaves:</b> $numero_de_chaves<br />\n<b>Aposta Múltipla:</b> $numero_de_numeros números e $numero_de_estrelas estrelas faz ".$combinacoes[$numero_de_estrelas][$numero_de_numeros][0]." apostas com um preço de ".$combinacoes[$numero_de_estrelas][$numero_de_numeros][1]."€<br />\n<br />\n<br />\n<b>Chaves:</b>\n";
	for ($c=1; $c<=$numero_de_chaves; $c++){
		$numeros = array();
		$estrelas = array();
		for ($n=1; $n<=$numero_de_numeros; $n++){
			do{
				$numero = rand(1, 50);
			}while (in_array($numero, $numeros));
			$numeros[$n] = $numero;
		}
		for ($e=1; $e<=$numero_de_estrelas; $e++){
			do{
				$estrela = rand(1, 9);
			}while (in_array($estrela, $estrelas));
			$estrelas[$e] = $estrela;
		}
		sort($numeros);
		sort($estrelas);
		$numeros = implode(', ', $numeros);
		$estrelas = implode(', ', $estrelas);
		echo "<br />\n<br />\n<b>Números:</b> $numeros<br />\n<b>Estrelas:</b> $estrelas";
	}
}else{
	echo "<b>A aposta multipla que escolheu está incorrecta:</b> $numero_de_numeros números e $numero_de_estrelas estrelas.";
}
}else{
echo "<b>Número de chaves:</b> 0";
}

Input:

nome_do_ficheiro.php

Output:

Número de chaves: 1

Aposta Múltipla: 5 números e 2 estrelas faz 1 apostas com um preço de 2€

Chaves:

Numeros: 33, 43, 46, 48, 49

Estrelas: 3, 9

Input:

nome_do_ficheiro.php?c=3&n=9&e=4

Output:

Número de chaves: 3

Aposta Múltipla: 9 números e 4 estrelas faz 756 apostas com um preço de 1512€

Chaves:

Numeros: 1, 12, 16, 21, 25, 40, 43, 46, 48

Estrelas: 3, 5, 8, 9

Numeros: 9, 13, 16, 18, 23, 25, 37, 48, 50

Estrelas: 2, 4, 6, 9

Numeros: 5, 8, 9, 11, 12, 13, 17, 25, 39

Estrelas: 5, 6, 7, 9

Input:

nome_do_ficheiro.php?c=3&n=10&e=6

Output:

A aposta multipla que escolheu está incorrecta: 10 números e 6 estrelas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epá, e indentar o código não?

A mim parece-me indentado :/

Aquele array é que ficou um bocado esquisito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if(isset($combinacoes[$numero_de_estrelas])&&isset($combinacoes[$numero_de_estrelas][$numero_de_numeros])){

Isto é indentado? :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não era indentação que eu queria dizer...

if(isset($combinacoes[$numero_de_estrelas]) && isset($combinacoes[$numero_de_estrelas][$numero_de_numeros])){

Aqueles espaços à volta dos &&. Eu chamo-lhes indentação too, mas não é o nome correcto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, isso já é outra coisa. :(

Como disse lá em cima este código já é muito velho, ele está como na altura eu o fazia.

Mas já que fazes questão eu edito...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podia ser bastante optimizado no número de linhas, mas funciona e para o uso que vai ter, é o que se quer :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora