• Publicidad

La cifra verdadera

Reglamento de Perl en Español

La cifra verdadera

Notapor explorer » 2008-08-04 19:01 @834

En Europa tenemos las siguientes monedas de Euro:

€0,01
€0,02
€0,05
€0,10
€0,20
€0,50
€1,00
€2,00

Alguien nos da un puñado de monedas. Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@bote = ( 0.20, 0.01, 0.02, 0.20, 0.50, 1.00, 0.50, 0.10, 0.10, 0.05 );
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Nosotros deberíamos poder entonces hacer la suma y dar la cifra de Euros que tenemos... pero... algunas de esas monedas son falsas.

De hecho, sabemos:
* Que al menos una de las monedas es falsa
* Que al menos una de las monedas es verdadera

Cuestión: queremos obtener todas las combinaciones de sumas posibles de todas las monedas. Por ejemplo:

€0.01
€0.02
€0.03
€0.10
€0.11
...
€2.67
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Notapor creating021 » 2009-02-10 14:46 @657

El código no es muy bueno, pero me dio por hacerlo, si se puede mejorar, me gustaría saber cómo...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
use warnings;

my @bote = ( 0.20, 0.01, 0.02, 0.20, 0.50, 1.00, 0.50, 0.10, 0.10, 0.05 );
my %pos;

sub encontrar_total {
    my @can   = @_;
    my $i     = $#can;

    for ( $i; $i > 0; $i-- ) {
        my $euros = 0;
        $euros += $_ for ( @can[ 0..$i ] );
        $pos{ $euros } += 1;
    }
}

do { $pos{ $_ } += 1 } for ( sort @bote );
encontrar_total( @bote );
encontrar_total( reverse @bote );

foreach my $cant ( keys %pos ) {
    my $e = " " x ( 6 - ( length $cant ) );
    print ( $cant . $e . "-> " . $pos{$cant} . " Posibilidad(es)\n" );
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Jenda » 2009-02-14 12:32 @564

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
printf "%-6d -> %d Posibilidad(es)\n", $cant, $pos{$cant};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor creating021 » 2009-03-05 20:29 @895

Jenda escribiste:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
printf "%-6d -> %d Posibilidad(es)\n", $cant, $pos{$cant};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¡Claro, buen dato!

Gracias Jenda :)
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Novedades en Perl en Español

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados