aboutsummaryrefslogtreecommitdiff
path: root/challenge-140
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2021-11-28 23:59:30 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2021-11-28 23:59:30 -0500
commitcd2c554c4408b93595a5e2816a2bb05e525615c3 (patch)
tree6f92b887fa04b19a8cca906fc8dfc253269760e3 /challenge-140
parentb81cafbb9326efe10251a65de7a8a154fd32b30b (diff)
downloadperlweeklychallenge-club-cd2c554c4408b93595a5e2816a2bb05e525615c3.tar.gz
perlweeklychallenge-club-cd2c554c4408b93595a5e2816a2bb05e525615c3.tar.bz2
perlweeklychallenge-club-cd2c554c4408b93595a5e2816a2bb05e525615c3.zip
Challenge 140 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-140')
-rw-r--r--challenge-140/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-140/jaldhar-h-vyas/perl/ch-1.pl40
-rwxr-xr-xchallenge-140/jaldhar-h-vyas/perl/ch-2.pl17
-rwxr-xr-xchallenge-140/jaldhar-h-vyas/raku/ch-1.raku19
-rwxr-xr-xchallenge-140/jaldhar-h-vyas/raku/ch-2.sh3
5 files changed, 80 insertions, 0 deletions
diff --git a/challenge-140/jaldhar-h-vyas/blog.txt b/challenge-140/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..073cabdd1a
--- /dev/null
+++ b/challenge-140/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/11/perl_weekly_challenge_week_140.html
diff --git a/challenge-140/jaldhar-h-vyas/perl/ch-1.pl b/challenge-140/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..2c06ad861a
--- /dev/null
+++ b/challenge-140/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+package Binary;
+use overload '+' => 'add';
+use overload '""' => 'toString';
+
+sub new {
+ my ($class, $str) = @_;
+ my $self = \"0b$str";
+ bless $self, $class;
+ return $self;
+}
+
+sub add {
+ my ($self, $other) = @_;
+ say "overload!";
+ return Binary->new(
+ sprintf '%b', (sprintf '%d', oct $$self) + (sprintf '%d', oct $$other)
+ );
+}
+
+sub toString {
+ my ($self) = @_;
+ return sprintf '%b', oct $$self;
+}
+
+package main;
+use 5.020;
+use warnings;
+
+if (scalar @ARGV != 2) {
+ die "Need two binary numbers.\n";
+}
+
+my $a = Binary->new($ARGV[0]);
+my $b = Binary->new($ARGV[1]);
+
+say $a + $b;
diff --git a/challenge-140/jaldhar-h-vyas/perl/ch-2.pl b/challenge-140/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..f6468aea8f
--- /dev/null
+++ b/challenge-140/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+if (scalar @ARGV != 3) {
+ die "need three integers.\n";
+}
+
+my @table;
+
+for my $i (1 .. $ARGV[0]) {
+ for my $j (1 .. $ARGV[1]) {
+ push @table, $i * $j;
+ }
+}
+
+say 0+(sort { $a <=> $b } @table)[$ARGV[2] - 1];
diff --git a/challenge-140/jaldhar-h-vyas/raku/ch-1.raku b/challenge-140/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..e4d8bccd02
--- /dev/null
+++ b/challenge-140/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/raku
+
+# A simple way to add two binary numbers
+# raku -e '(@*ARGS[0].parse-base(2) + @*ARGS[1].parse-base(2)).base(2).say;' $@
+
+multi sub infix:<+>(
+ IntStr:D $a,
+ IntStr:D $b
+) {
+ say 'overload!';
+ return ($a.parse-base(2) + $b.parse-base(2)).base(2);
+}
+
+sub MAIN(
+ Str $a,
+ Str $b
+) {
+ say $a + $b;
+}
diff --git a/challenge-140/jaldhar-h-vyas/raku/ch-2.sh b/challenge-140/jaldhar-h-vyas/raku/ch-2.sh
new file mode 100755
index 0000000000..debe5f8a35
--- /dev/null
+++ b/challenge-140/jaldhar-h-vyas/raku/ch-2.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '(1 .. @*ARGS[0] X* 1 .. @*ARGS[1]).sort({$^a <=> $^b})[@*ARGS[2] - 1].say;' $@ \ No newline at end of file