aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Hood <hood@panix.com>2020-12-07 10:49:45 -0500
committerPhilip Hood <hood@panix.com>2020-12-07 10:49:45 -0500
commit8b6d4327f72d59b5105c2d47e7521b980f1d864f (patch)
treee71707448c984e454855974511b82528c2378760
parentd181a79cc3b10b862de348d6a6ca503df28e5203 (diff)
downloadperlweeklychallenge-club-8b6d4327f72d59b5105c2d47e7521b980f1d864f.tar.gz
perlweeklychallenge-club-8b6d4327f72d59b5105c2d47e7521b980f1d864f.tar.bz2
perlweeklychallenge-club-8b6d4327f72d59b5105c2d47e7521b980f1d864f.zip
challenge no. 90, pt.s 1 & 2
-rwxr-xr-xchallenge-090/pkmnx/raku/ch-1.raku44
-rwxr-xr-xchallenge-090/pkmnx/raku/ch-2.raku45
2 files changed, 89 insertions, 0 deletions
diff --git a/challenge-090/pkmnx/raku/ch-1.raku b/challenge-090/pkmnx/raku/ch-1.raku
new file mode 100755
index 0000000000..09cde1a9e6
--- /dev/null
+++ b/challenge-090/pkmnx/raku/ch-1.raku
@@ -0,0 +1,44 @@
+#!/usr/bin/env raku
+
+#
+# see usage:
+#
+# pk@pkx:~/Downloads/raku/perlweeklychallenge-club/challenge-090/pkmnx/raku$ cat input.1
+# GTAAACCCCTTTTCATTTAGACAGATCGACTCCTTATCCATTCTCAGAGATGTGTTGCTGGTCGCCG
+# pk@pkx:~/Downloads/raku/perlweeklychallenge-club/challenge-090/pkmnx/raku$ ./ch-1.raku < input.1
+# Input count: A: 14; C: 18; T: 22; G: 13
+# In: GTAAACCCCTTTTCATTTAGACAGATCGACTCCTTATCCATTCTCAGAGATGTGTTGCTGGTCGCCG
+# Out: CATTTGGGGAAAAGTAAATCTGTCTAGCTGAGGAATAGGTAAGAGTCTCTACACAACGACCAGCGGC
+#
+
+sub MAIN() {
+
+ my $map = { T => "A", A => "T", G => "C", C => "G" };
+ my ($inCnt, $outCnt) = (0, 0);
+
+ my $count = {};
+ my @out = ();
+ my @data = ();
+
+ for lines() -> $l {
+ @data = $l.comb(/./);
+ for (@data) -> $c {
+ $inCnt++;
+ if ( $map{$c}:exists ) {
+ $outCnt++;
+ $count{$c}++;
+ @out.push( $map{$c} );
+ } else {
+ }
+ }
+ }
+
+ die ( "bad input" ) if $inCnt != $outCnt;
+
+ constant fmt = "%12s %s\n";
+
+ printf fmt, "Input count:", $count.kv.map(-> $k, $v { "$k: $v" }).join("; ");
+ printf fmt, "In:", @data.join("");
+ printf fmt, "Out:", @out.join("");
+
+}
diff --git a/challenge-090/pkmnx/raku/ch-2.raku b/challenge-090/pkmnx/raku/ch-2.raku
new file mode 100755
index 0000000000..3997243848
--- /dev/null
+++ b/challenge-090/pkmnx/raku/ch-2.raku
@@ -0,0 +1,45 @@
+#!/usr/bin/env raku
+
+#
+# see usage:
+#
+# pk@pkx:~/Downloads/raku/perlweeklychallenge-club/challenge-090/pkmnx/raku$ ./ch-2.raku 12 14
+# 12 14
+# 6 28
+# 3 56 +
+# 1 112 +
+# Sum: 168
+#
+
+sub MAIN( Int $A, Int $B where ($A > 0 and $B > 0) ) {
+
+ my $a = $A;
+ my $b = $B;
+
+ my @out = ();
+ my $sum = 0;
+ while ($a >= 1 ) {
+
+ my $mod = !($a %% 2);
+ if ( ( $a >= 1 ) && $mod ) {
+ $sum += $b;
+ }
+
+ @out.push( [ $a, $b, $mod ??"+" !!" " ] );
+
+ $a = ($a / 2).Int;
+ $b *= 2;
+ }
+
+ my $amx = (@out).map(->($a,$b,$c){$a}).max.chars + 5;
+ my $bmx = (@out).map(->($a,$b,$c){$b}).max.chars + 5;
+
+ my $fn = sub ($a,$b) { ( sprintf ('%', $a, 's').join(""), $b ) };
+
+ for (@out) ->($a,$b,$c) {
+ ( $fn($amx, $a), $fn($bmx,$b), $c ).join(" ").say;
+ }
+
+ "Sum: $sum".say;
+
+}