#!/usr/bin/perl -w

use 5.034;

# Jesús Lozano Mosterín, 2022

# Se venden números del 0 al 99_999
# se empieza a contar desde la izquierda no cero: impar, par, impar...
# se suman impares y pares y las sumas se multiplican
# 0j0: si una suma impar o par es 0 se considera un 1
# de esta manera al número 0 en realidad le corresponde el 1
# A cada número le corresponde ese número mágico $z = $sumpar * $sumimpar

# Se sortea desde 0 hasta 99_999, 486 es el máximo mágico (y con el máximo premio)
# El premio le corresponde a todos los que tengan el número mágico del número premiado.

# El problema consiste en decidir si se publica o no el número mágico.
# Para que tenga gracia el número mágico no debe publicarse.

my $PREMIO;  # no se usa aún, depende de la recaudación
my $PRECIO = 10;  # 10 eurazos

my $recauda = 0;  # esto es lo que se reparte 
my %hash;
for my $i (0 .. 99_999){
    $recauda += $PRECIO;
    my @j = split //, $i;
    my ($c, $sumimpar, $sumpar) = (0, 0, 0);
    for (@j){
	$c++;
	if ($c % 2 == 1){
	    $sumimpar += $_;
	}else{
	    $sumpar += $_;
	}
    }
    unless ($sumimpar){ $sumimpar = 1; }  # esto habría que explicarlo
    unless ($sumpar){ $sumpar = 1; }
    my $z = $sumimpar * $sumpar;
    $hash{$z}++;	
}

$PREMIO = 0.9 * $recauda;

for my $i (sort {$a <=> $b} keys %hash){
    say "$i ->  premios $hash{$i}  porcentaje ", $hash{$i}/$PREMIO, "  premio individual = ", sprintf "%.02f", $PREMIO/$hash{$i};
}

exit 2;

__END__
  
El hack del juego consiste en que hay números mágicos imposibles de que les toque premio 
  si se sortea del 1 al 486, pero sí si se sortea del 0 al 99_999, ya que todo 
  número lleva asociado seguro un número mágico.

