aboutsummaryrefslogtreecommitdiff
path: root/challenge-089/andinus/README
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-089/andinus/README')
-rw-r--r--challenge-089/andinus/README67
1 files changed, 67 insertions, 0 deletions
diff --git a/challenge-089/andinus/README b/challenge-089/andinus/README
new file mode 100644
index 0000000000..b372bec8d3
--- /dev/null
+++ b/challenge-089/andinus/README
@@ -0,0 +1,67 @@
+ ━━━━━━━━━━━━━━━
+ CHALLENGE 086
+
+ Andinus
+ ━━━━━━━━━━━━━━━
+
+
+ 2020-11-15
+
+
+Table of Contents
+─────────────────
+
+1. Task 1 - Pair Difference
+.. 1. Perl
+
+
+
+
+
+1 Task 1 - Pair Difference
+══════════════════════════
+
+ You are given an array of integers @N and an integer $A.
+
+ Write a script to find find if there exists a pair of elements in the
+ array whose difference is $A.
+
+ Print 1 if exists otherwise 0.
+
+
+1.1 Perl
+────────
+
+ • Program: <file:perl/ch-1.pl>
+
+ @N & $A are taken from stdin, $A is the last argument.
+ ┌────
+ │ die "usage: ./ch-1.pl <integers \@N> <integer \$A>\n"
+ │ unless scalar @ARGV >= 3;
+ │
+ │ my $A = pop @ARGV;
+ │ my @N = @ARGV;
+ └────
+
+ We just loop over @N over a loop over @N & find the difference. If
+ it's equal to `$A' or `-$A' then we print `1' & exit. The first loop
+ is `shift''ing the numbers out of array `@N' because we are matching
+ for both `$A' & `-$A' so we don't need the number again.
+
+ For example, if `@N = [1, 2]' & we don't `shift' in first loop then
+ we'll perform 2 subtraction operations: `1 - 2' & `2 - 1' & we won't
+ have to match for `-$A' but if we just match for `-$A' then we can use
+ `shift' & we'll only have to perform 1 subtraction operation `1 - 2'.
+
+ We assume subtraction costs more than matching with `-$A', that makes
+ this more efficient. But it doesn't matter much.
+ ┌────
+ │ while (my $int = shift @N) {
+ │ foreach (@N) {
+ │ my $diff = $int - $_;
+ │ print "1\n" and exit 0 if ($diff == $A or $diff == -$A);
+ │ }
+ │ }
+ │ print "0\n";
+ │
+ └────