diff options
| author | Stephen Lynn <bizlsg@localhost.localdomain> | 2023-09-21 20:00:21 +0800 |
|---|---|---|
| committer | Stephen Lynn <bizlsg@localhost.localdomain> | 2023-09-21 20:00:21 +0800 |
| commit | 9f993abd5ef62cf7cdc9c692a9620091435925df (patch) | |
| tree | 6bacbc4b436d338a5d0709583794dd02dafd730d | |
| parent | ba43e97889fede511744942b065a34479b868db4 (diff) | |
| download | perlweeklychallenge-club-9f993abd5ef62cf7cdc9c692a9620091435925df.tar.gz perlweeklychallenge-club-9f993abd5ef62cf7cdc9c692a9620091435925df.tar.bz2 perlweeklychallenge-club-9f993abd5ef62cf7cdc9c692a9620091435925df.zip | |
pwc 235
| -rw-r--r-- | challenge-235/steve-g-lynn/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-235/steve-g-lynn/perl/ch-1.pl | 23 | ||||
| -rwxr-xr-x | challenge-235/steve-g-lynn/perl/ch-2.pl | 23 |
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]; +} + |
