diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2022-04-30 12:17:00 +0200 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2022-04-30 12:17:00 +0200 |
| commit | d619bf613d4ee483ea735cf315ad707f9cf43277 (patch) | |
| tree | acc646862f024f0bdd203dc6b892abd4df1b9d32 | |
| parent | 237ab4513c510cab55bb77473b79820e7b2d6da8 (diff) | |
| download | perlweeklychallenge-club-d619bf613d4ee483ea735cf315ad707f9cf43277.tar.gz perlweeklychallenge-club-d619bf613d4ee483ea735cf315ad707f9cf43277.tar.bz2 perlweeklychallenge-club-d619bf613d4ee483ea735cf315ad707f9cf43277.zip | |
feat(challenge-162/lubos-kolouch/perl/ch-1.pl): Challenge 162 LK Perl Task 1
| -rw-r--r-- | challenge-162/lubos-kolouch/perl/ch-1.pl | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/challenge-162/lubos-kolouch/perl/ch-1.pl b/challenge-162/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..dc39b9f0f6 --- /dev/null +++ b/challenge-162/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,29 @@ +use strict; +use warnings; + +sub calc_isbn_digit { + my $what = shift; + + my $mul = 1; + + my $sum = 0; + + for my $char ( split //, $what ) { + next unless $char =~ /\d/; + + $sum += $char * $mul; + + $mul = $mul == 1 ? 3 : 1; + } + + $sum %= 10; + $sum = 10 - $sum; + $sum = 0 if $sum == 10; + + return $sum; +} + +use Test::More; + +is( calc_isbn_digit('978-0-306-40615-?'), 7 ); +done_testing; |
