aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Lynn <bizlsg@localhost.localdomain>2023-09-21 20:00:21 +0800
committerStephen Lynn <bizlsg@localhost.localdomain>2023-09-21 20:00:21 +0800
commit9f993abd5ef62cf7cdc9c692a9620091435925df (patch)
tree6bacbc4b436d338a5d0709583794dd02dafd730d
parentba43e97889fede511744942b065a34479b868db4 (diff)
downloadperlweeklychallenge-club-9f993abd5ef62cf7cdc9c692a9620091435925df.tar.gz
perlweeklychallenge-club-9f993abd5ef62cf7cdc9c692a9620091435925df.tar.bz2
perlweeklychallenge-club-9f993abd5ef62cf7cdc9c692a9620091435925df.zip
pwc 235
-rw-r--r--challenge-235/steve-g-lynn/blog.txt1
-rwxr-xr-xchallenge-235/steve-g-lynn/perl/ch-1.pl23
-rwxr-xr-xchallenge-235/steve-g-lynn/perl/ch-2.pl23
3 files changed, 47 insertions, 0 deletions
diff --git a/challenge-235/steve-g-lynn/blog.txt b/challenge-235/steve-g-lynn/blog.txt
new file mode 100644
index 0000000000..37293db190
--- /dev/null
+++ b/challenge-235/steve-g-lynn/blog.txt
@@ -0,0 +1 @@
+https://thiujiac.blogspot.com/2023/09/pwc-235.html
diff --git a/challenge-235/steve-g-lynn/perl/ch-1.pl b/challenge-235/steve-g-lynn/perl/ch-1.pl
new file mode 100755
index 0000000000..883dfd0859
--- /dev/null
+++ b/challenge-235/steve-g-lynn/perl/ch-1.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env -S perl -wl
+
+print &remove_one(0,2,9,4,6); #1
+print &remove_one(5,1,3,2); #0
+print &remove_one(2,2,3); #1
+
+sub remove_one {
+ #-- helper sub
+ local *ascending = sub {
+ local @ascending=(sort {$a <=> $b} @_);
+ foreach (0 .. $#_) {($_[$_]==$ascending[$_]) || (return 0)}
+ return 1;
+ };
+
+ #-- trunk of sub
+ foreach (0 .. $#_){
+ local @remove_one = @_;
+ splice(@remove_one,$_,1);
+ &ascending(@remove_one) && (return 1);
+ }
+ return 0;
+}
+
diff --git a/challenge-235/steve-g-lynn/perl/ch-2.pl b/challenge-235/steve-g-lynn/perl/ch-2.pl
new file mode 100755
index 0000000000..12a20f8372
--- /dev/null
+++ b/challenge-235/steve-g-lynn/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env -S perl -wl
+
+#-- perl 4 syntax
+
+print join ',', &duplicate_zeros(1,0,2,3,0,4,5,0);#1,0,0,2,3,0,0,4
+print join ',', &duplicate_zeros(1,2,3);#1,2,3
+print join ',', &duplicate_zeros(0,3,0,4,5);#0,0,3,0,0
+
+sub duplicate_zeros {
+ local $duplicate_zeros = $#_;
+ local @duplicate_zeros = ();
+ foreach (0 .. $#_){($_[$_]==0) && (push @duplicate_zeros,$_) }
+
+ foreach (0 .. $#duplicate_zeros) {
+ ($_ > $duplicate_zeros) && (last);
+ splice(@_,$duplicate_zeros[$_],0,0);
+ foreach ($_ .. $#duplicate_zeros) {
+ $duplicate_zeros[$_]++;
+ }
+ }
+ @_[0 .. $duplicate_zeros];
+}
+