sfnet.atk.ohjelmointi: vastauksista

Juha Takala Juha.Takala at dna.fi
Tue Feb 16 16:16:25 CST 1999


Sami Poikonen writes:
 > 
 > 
 > 2.1 viitenumero:
 > 	Tarvitaan yleiskäyttöinen moduuli, joka
 > 	a: tarkastaa annetun viitenumeron oikeeellisuuden
 > 	b: muodostaa n-merkkiä pitkän viitenumeron annetulle luvulle x.
 > 	c: tulostaa viitenumeron oikein ryhmiteltynä
 > 	(d: tulostaa viitenumeron viivakoodina...)

Toteuttaa b ja c:

sub viitenum {
    my $n = shift;
    my ($i, $j) = (0,0);
    for (reverse split //, $n) {
	$j += $_ * (3,7,9)[$i++ % 3];
    }
    $j %= 10;
    my $k = "$n$j";
    
    1 while
      $k =~ s/(\d)(\d{5}($| ))/$1 $2/;
    "$k";
}

	-juha



More information about the Helsinki-pm mailing list