diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-02-02 09:04:21 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-02 09:04:21 +0000 |
| commit | 20468088a0105400d99a6aca8ea58a44f247ad21 (patch) | |
| tree | 66993a95593e3562d9bdfe1449bd613464d70c32 | |
| parent | adb0bdea289a5b11679fc3960dc0f02e1481304f (diff) | |
| parent | 812dec8e834ff199c8973da474fba448084caddc (diff) | |
| download | perlweeklychallenge-club-20468088a0105400d99a6aca8ea58a44f247ad21.tar.gz perlweeklychallenge-club-20468088a0105400d99a6aca8ea58a44f247ad21.tar.bz2 perlweeklychallenge-club-20468088a0105400d99a6aca8ea58a44f247ad21.zip | |
Merge pull request #3446 from gnustavo/098
Add Gustavo Chaves's solutions to challenge 098
| -rwxr-xr-x | challenge-098/gustavo-chaves/perl/ch-1.pl | 40 | ||||
| -rwxr-xr-x | challenge-098/gustavo-chaves/perl/ch-2.pl | 25 |
2 files changed, 65 insertions, 0 deletions
diff --git a/challenge-098/gustavo-chaves/perl/ch-1.pl b/challenge-098/gustavo-chaves/perl/ch-1.pl new file mode 100755 index 0000000000..f49ddd6757 --- /dev/null +++ b/challenge-098/gustavo-chaves/perl/ch-1.pl @@ -0,0 +1,40 @@ +#!/usr/bin/env perl + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-098/ +# TASK #1 › Read N-characters + +use 5.030; +use warnings; +use Fcntl; + +my ($FILE, @numbers) = @ARGV; + +sub readN { + my ($filename, $length) = @_; + + my ($fh, $buffer); + + state $cache = {}; + if (exists $cache->{$filename}) { + $fh = $cache->{$filename}; + } else { + if (sysopen($fh, $filename, O_RDONLY)) { + $cache->{$filename} = $fh; + } else { + die "Failed to sysopen '$filename'\n"; + } + } + + my $bytes_read = sysread($fh, $buffer, $length); + if (! defined $bytes_read) { + die "Failed to sysread '$filename'\n"; + } elsif ($bytes_read == 0) { + delete $cache->{$filename}; + } + + return $buffer; +} + +foreach my $number (@numbers) { + print readN($FILE, $number), "\n"; +} diff --git a/challenge-098/gustavo-chaves/perl/ch-2.pl b/challenge-098/gustavo-chaves/perl/ch-2.pl new file mode 100755 index 0000000000..92d2d62cb9 --- /dev/null +++ b/challenge-098/gustavo-chaves/perl/ch-2.pl @@ -0,0 +1,25 @@ +#!/usr/bin/env perl + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-098/ +# TASK #2 › Search Insert Position + +use 5.030; +use warnings; + +my %inputs = ( + 3 => [1, 2, 3, 4], + 6 => [1, 3, 5, 7], + 10 => [12, 14, 16, 18], + 19 => [11, 13, 15, 17], +); + +INPUT: while (my ($target, $integers) = each %inputs) { + say "Input: \@N = (@$integers) and \$N = $target"; + for my $i (0 .. $#$integers) { + if ($integers->[$i] >= $target) { + say "Output: $i"; + next INPUT; + } + } + say "Output: ", scalar(@$integers); +} |
