diff options
| author | Fung Cheok Yin <61836418+E7-87-83@users.noreply.github.com> | 2020-04-17 21:15:28 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-17 21:15:28 +0800 |
| commit | ab5ca0309aeb72e6373df1935ed46f4d77945ecd (patch) | |
| tree | 73c0b4ebcad8533b4a7c3adb8b35c7c507ef9c62 | |
| parent | 8819fa5134575ea5fda1730a476aa287cad6d9e9 (diff) | |
| download | perlweeklychallenge-club-ab5ca0309aeb72e6373df1935ed46f4d77945ecd.tar.gz perlweeklychallenge-club-ab5ca0309aeb72e6373df1935ed46f4d77945ecd.tar.bz2 perlweeklychallenge-club-ab5ca0309aeb72e6373df1935ed46f4d77945ecd.zip | |
Add files via upload
| -rw-r--r-- | ch-1.pl | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ch-1.pl b/ch-1.pl new file mode 100644 index 0000000000..f33a6aff99 --- /dev/null +++ b/ch-1.pl @@ -0,0 +1,28 @@ +#!/usr/bin/perl
+use strict;
+
+# Usage: $ ch-1.pl (number of terms) (diff-k) (LIST of N sorted integers, from small to large)
+# ch-1.pl 3 1 1 2 3
+
+my $N = shift @ARGV;
+my $DIFFK = shift @ARGV;
+
+die "not enough terms or too many terms" if $N != $#ARGV+1;
+
+my @A = @ARGV;
+
+my @B;
+
+for (1..$N-1) {
+ push @B, $A[$_] - $A[$_-1];
+}
+
+for (0..$N-2) {
+ my $diff = 0;
+ my $pointer = $_+1;
+ while ($pointer < $N and $diff <= $DIFFK) {
+ $diff += $B[$pointer-1];
+ print $pointer, " ", $_, "\n" if $diff==$DIFFK;
+ $pointer++;
+ }
+}
|
