diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2022-08-24 17:37:36 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2022-08-24 17:37:36 +0800 |
| commit | 1f8b55a1682d241a0bef0b38d2765c95affcfbd3 (patch) | |
| tree | c7b9b931788c37cc678e5fd54d9013b5c8e91cb9 | |
| parent | 8ce9b7bd399fcac962b1c875a8fa9cb7681a377e (diff) | |
| download | perlweeklychallenge-club-1f8b55a1682d241a0bef0b38d2765c95affcfbd3.tar.gz perlweeklychallenge-club-1f8b55a1682d241a0bef0b38d2765c95affcfbd3.tar.bz2 perlweeklychallenge-club-1f8b55a1682d241a0bef0b38d2765c95affcfbd3.zip | |
Week 179
| -rw-r--r-- | challenge-179/cheok-yin-fung/perl/ch-2.pl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/challenge-179/cheok-yin-fung/perl/ch-2.pl b/challenge-179/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..dba8911da8 --- /dev/null +++ b/challenge-179/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,26 @@ +# The Weekly Challenge 179 +# Task 2 Unicode Sparkline +use v5.30.0; +use List::Util qw/max min uniq/; +use POSIX; +binmode(STDOUT, ":utf8"); + +my @n = @ARGV; + +exit unless defined($ARGV[1]); + +my @nn = map {$_ / min(@n)} @n; + +my @s_n = sort {$a <=> $b} @nn; +my $diff = max map {$s_n[$_+1]-$s_n[$_]} (0..$#s_n-1); + +my $step = min( (max @nn)/8 , $diff ) ; +$step = (max @nn)/6 if $step == 0; + +foreach (@nn) { + my $h = 9600 + floor( $_ / $step + 0.5); + $h = 9601 if $h < 9601; #security + $h = 9608 if $h > 9608; #security + print pack("U*", $h); +} +say ""; |
