aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-120/wlmb/blog.txt1
-rwxr-xr-xchallenge-120/wlmb/perl/ch-1.pl15
-rwxr-xr-xchallenge-120/wlmb/perl/ch-2.pl17
3 files changed, 33 insertions, 0 deletions
diff --git a/challenge-120/wlmb/blog.txt b/challenge-120/wlmb/blog.txt
new file mode 100644
index 0000000000..4d68823f77
--- /dev/null
+++ b/challenge-120/wlmb/blog.txt
@@ -0,0 +1 @@
+https://wlmb.github.io/2021/07/07/PWC120/
diff --git a/challenge-120/wlmb/perl/ch-1.pl b/challenge-120/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..e8a1b5f28b
--- /dev/null
+++ b/challenge-120/wlmb/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 120
+# Task 1: Swap odd/even bits
+#
+# See https://wlmb.github.io/2021/07/07/PWC120/#task-1-swap-oddeven-bits
+use strict;
+use warnings;
+use v5.12;
+use List::Util qw(all);
+my $odd=170; # 10101010
+my $even=85; # 01010101
+
+say "Input: $_, Output: ",
+ 0<=$_<=255?((($_&$odd)>>1) |(($_&$even)<<1)):"Invalid"
+ for @ARGV;
diff --git a/challenge-120/wlmb/perl/ch-2.pl b/challenge-120/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..7c71c473e2
--- /dev/null
+++ b/challenge-120/wlmb/perl/ch-2.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 120
+# Task 2: Clock angle
+#
+# See https://wlmb.github.io/2021/07/07/PWC120/#task-2-clock-angle
+use strict;
+use warnings;
+use v5.12;
+
+for(@ARGV){
+ say "Wrong format: $_", next
+ unless $_=~m/^(\d?\d):(\d\d)$/
+ && 0<=$1<=24 && 0<=$1<60; # <24?
+ my $angle=(30*($1+$2/60)-$2*6)%360;
+ $angle=360-$angle if $angle>180;
+ say "Input: $_, Output: $angle";
+}