aboutsummaryrefslogtreecommitdiff
path: root/challenge-060
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-16 05:41:48 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-16 05:41:48 +0100
commitb9924466cc009d2e5316cf2181e4cb701f0699b5 (patch)
treeef821a084ce520ae5b4c7f9262cbbb19bf2c5e8c /challenge-060
parent4bd44dfd597811f71468831c7ee80a9101e7f30a (diff)
downloadperlweeklychallenge-club-b9924466cc009d2e5316cf2181e4cb701f0699b5.tar.gz
perlweeklychallenge-club-b9924466cc009d2e5316cf2181e4cb701f0699b5.tar.bz2
perlweeklychallenge-club-b9924466cc009d2e5316cf2181e4cb701f0699b5.zip
- Added Raku solutions to the "Excel Column" task.
Diffstat (limited to 'challenge-060')
-rw-r--r--challenge-060/mohammad-anwar/raku/ch-1.p647
-rw-r--r--challenge-060/mohammad-anwar/raku/ch-1a.p637
2 files changed, 84 insertions, 0 deletions
diff --git a/challenge-060/mohammad-anwar/raku/ch-1.p6 b/challenge-060/mohammad-anwar/raku/ch-1.p6
new file mode 100644
index 0000000000..5aa556a229
--- /dev/null
+++ b/challenge-060/mohammad-anwar/raku/ch-1.p6
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl6
+
+use v6.d;
+
+multi sub MAIN(*@) is hidden-from-USAGE {
+ say $*USAGE;
+}
+
+multi sub MAIN(Str :$name?, Int :$number?) {
+ die "ERROR: Missing --name=<Str> or --number=<Int>.\n"
+ unless defined $name or defined $number;
+
+ defined $name
+ ??
+ say sprintf("%s => %s", $name, excel-column($name))
+ !!
+ say sprintf("%s => %s", $number.Str, excel-column($number.Int));
+}
+
+multi sub excel-column(Str $name) {
+
+ my $i = 0;
+ my $b = 26;
+ my $d = 0;
+
+ for $name.uc.flip.comb -> $c {
+ $d += ($c.ord - "A".ord + 1) * ($b ** $i++);
+ }
+
+ return $d;
+}
+
+multi sub excel-column(Int $number is copy) {
+
+ my $name = '';
+ my @name = 'A'..'Z';
+ @name.unshift(0);
+
+ while $number > 26 {
+ my $i = $number div 26;
+ $name ~= @name[$i];
+ $number -= $i * 26;
+ }
+ $name ~= @name[$number];
+
+ return $name;
+}
diff --git a/challenge-060/mohammad-anwar/raku/ch-1a.p6 b/challenge-060/mohammad-anwar/raku/ch-1a.p6
new file mode 100644
index 0000000000..b447cd8692
--- /dev/null
+++ b/challenge-060/mohammad-anwar/raku/ch-1a.p6
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl6
+
+use Test;
+
+is excel-column('AB'), 28, 'AB => 28';
+is excel-column(28), 'AB', '28 => AB';
+
+done-testing;
+
+multi sub excel-column(Str $name) {
+
+ my $i = 0;
+ my $b = 26;
+ my $d = 0;
+
+ for $name.uc.flip.comb -> $c {
+ $d += ($c.ord - "A".ord + 1) * ($b ** $i++);
+ }
+
+ return $d;
+}
+
+multi sub excel-column(Int $number is copy) {
+
+ my $name = '';
+ my @name = 'A'..'Z';
+ @name.unshift(0);
+
+ while $number > 26 {
+ my $i = $number div 26;
+ $name ~= @name[$i];
+ $number -= $i * 26;
+ }
+ $name ~= @name[$number];
+
+ return $name;
+}