aboutsummaryrefslogtreecommitdiff
path: root/challenge-193
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-11-30 10:28:58 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-11-30 10:28:58 +0000
commit7789fcc51b04021484d9cc67f829492bf7ef9825 (patch)
treeaee75d767d1265ca1cacc521f9f3d99178ef7bc9 /challenge-193
parentf9c1b391fcb02440aa21a9c3a79866db2ba21ff7 (diff)
downloadperlweeklychallenge-club-7789fcc51b04021484d9cc67f829492bf7ef9825.tar.gz
perlweeklychallenge-club-7789fcc51b04021484d9cc67f829492bf7ef9825.tar.bz2
perlweeklychallenge-club-7789fcc51b04021484d9cc67f829492bf7ef9825.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-193')
-rw-r--r--challenge-193/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-193/laurent-rosenfeld/perl/ch-1.sh4
-rw-r--r--challenge-193/laurent-rosenfeld/perl/ch-2.pl26
-rw-r--r--challenge-193/laurent-rosenfeld/raku/ch-1.sh4
-rw-r--r--challenge-193/laurent-rosenfeld/raku/ch-2.raku22
5 files changed, 57 insertions, 0 deletions
diff --git a/challenge-193/laurent-rosenfeld/blog.txt b/challenge-193/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..4e7f8d435c
--- /dev/null
+++ b/challenge-193/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+https://blogs.perl.org/users/laurent_r/2022/11/perl-weekly-challenge-193-binary-string-and-odd-string.html
diff --git a/challenge-193/laurent-rosenfeld/perl/ch-1.sh b/challenge-193/laurent-rosenfeld/perl/ch-1.sh
new file mode 100644
index 0000000000..43ee800832
--- /dev/null
+++ b/challenge-193/laurent-rosenfeld/perl/ch-1.sh
@@ -0,0 +1,4 @@
+perl -e 'my $c = shift; printf "%0${c}b ", $_ for 0..(2**$c) - 1' 3
+echo
+perl -e 'my $c = shift; printf "%0${c}b ", $_ for 0..(2**$c) - 1' 4
+echo
diff --git a/challenge-193/laurent-rosenfeld/perl/ch-2.pl b/challenge-193/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..9e70361837
--- /dev/null
+++ b/challenge-193/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,26 @@
+use strict;
+use warnings;
+use feature qw/say/;
+use Data::Dumper;
+
+sub diff_array {
+ my $str = shift;
+ my @diff;
+ for my $i (1.. length($str) - 1) {
+ push @diff,
+ ord(substr($str, $i, 1))
+ - ord(substr($str, $i-1, 1));
+ }
+ return "@diff";
+}
+
+for my $test ([<adc wzy abc>], [<aaa bob ccc ddd>]) {
+ my %result;
+ for my $st (@$test) {
+ push @{$result{diff_array $st}}, $st;
+ }
+ # say Dumper \%result;
+ for my $k (keys %result) {
+ say "@$test -> ", @{$result{$k}} if scalar @{$result{$k}} == 1;
+ }
+}
diff --git a/challenge-193/laurent-rosenfeld/raku/ch-1.sh b/challenge-193/laurent-rosenfeld/raku/ch-1.sh
new file mode 100644
index 0000000000..920b00a45d
--- /dev/null
+++ b/challenge-193/laurent-rosenfeld/raku/ch-1.sh
@@ -0,0 +1,4 @@
+raku -e 'sub MAIN ($n) { printf "%03b ", $_ for 0..2**$n-1; }' 3
+echo
+raku -e 'sub MAIN ($n) { printf "%03b ", $_ for 0..2**$n-1; }' 4
+echo
diff --git a/challenge-193/laurent-rosenfeld/raku/ch-2.raku b/challenge-193/laurent-rosenfeld/raku/ch-2.raku
new file mode 100644
index 0000000000..880992a122
--- /dev/null
+++ b/challenge-193/laurent-rosenfeld/raku/ch-2.raku
@@ -0,0 +1,22 @@
+my %transco = ("a".."z" Z 0..25).flat; # a => 0, b => 1 ...
+
+sub diff-array ($str) {
+ my @diff;
+ for 1..^$str.chars -> $i {
+ push @diff,
+ %transco{substr($str, $i, 1)}
+ - %transco{substr($str, $i-1, 1)};
+ }
+ return @diff;
+}
+
+for <adc wzy abc>, <aaa bob ccc ddd> -> @test {
+ my %result;
+ for @test -> $st {
+ push %result, (diff-array $st) => $st;
+ }
+ # say %result;
+ for %result.keys -> $k {
+ say @test, " -> ", %result{$k} if %result{$k}.elems == 1;
+ }
+}