aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-243/kjetillll/perl/ch-1.pl26
-rw-r--r--challenge-243/kjetillll/perl/ch-2.pl26
2 files changed, 52 insertions, 0 deletions
diff --git a/challenge-243/kjetillll/perl/ch-1.pl b/challenge-243/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..e625e158bc
--- /dev/null
+++ b/challenge-243/kjetillll/perl/ch-1.pl
@@ -0,0 +1,26 @@
+use strict; use warnings;
+
+@ARGV ? run_args(@ARGV)
+ : run_tests();
+
+sub count_reverse_pairs {
+ my $indexes=join',',0..$#_;
+ scalar
+ grep { my($i,$j)=split/_/; $i<$j and $_[$i]>2*$_[$j] }
+ glob "{$indexes}_{$indexes}"
+}
+
+sub run_args { print count_reverse_pairs(@_) }
+
+sub run_tests {
+ for my $test (
+ [ [1,3,2,3,1] => 2 ],
+ [ [2,4,3,5,1] => 3 ],
+ ){
+ my($input,$expected)=@$test;
+ my $got = count_reverse_pairs(@$input);
+ print $expected == $got ? 'ok' : '***NOT OK';
+ print " input: @$input expected: $expected got: $got\n";
+ }
+}
+
diff --git a/challenge-243/kjetillll/perl/ch-2.pl b/challenge-243/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..6a3c903dcd
--- /dev/null
+++ b/challenge-243/kjetillll/perl/ch-2.pl
@@ -0,0 +1,26 @@
+use strict; use warnings;
+
+@ARGV ? run_args(@ARGV)
+ : run_tests();
+
+sub sum_of_floors {
+ eval
+ join '+',
+ map { /_/; "int($`/$')" }
+ glob "{@_}_{@_}" =~ s/ /,/gr
+}
+
+sub run_args { print sum_of_floors(@_) }
+
+sub run_tests {
+ for my $test (
+ [ [2,5,9] => 10 ],
+ [ [7,7,7,7,7,7,7] => 49 ],
+ ){
+ my($input,$expected)=@$test;
+ my $got = sum_of_floors(@$input);
+ print $expected == $got ? 'ok' : '***NOT OK';
+ print " input: @$input expected: $expected got: $got\n";
+ }
+}
+