diff options
| author | Pok <pok@goyangi> | 2025-07-16 14:27:46 +1000 |
|---|---|---|
| committer | Pok <pok@goyangi> | 2025-07-16 14:31:07 +1000 |
| commit | aae700b856b280e75ae989cea61539fe0e03894e (patch) | |
| tree | db8c9c5fb376f51ce5f13bdace710c72dd9a66d2 | |
| parent | 67b0cdb8343c1aa649e77b9edb459c61fc36a3fe (diff) | |
| download | perlweeklychallenge-club-aae700b856b280e75ae989cea61539fe0e03894e.tar.gz perlweeklychallenge-club-aae700b856b280e75ae989cea61539fe0e03894e.tar.bz2 perlweeklychallenge-club-aae700b856b280e75ae989cea61539fe0e03894e.zip | |
pwc330 solution in go
| -rw-r--r-- | challenge-330/pokgopun/go/ch-1.go | 72 | ||||
| -rw-r--r-- | challenge-330/pokgopun/go/ch-2.go | 72 |
2 files changed, 144 insertions, 0 deletions
diff --git a/challenge-330/pokgopun/go/ch-1.go b/challenge-330/pokgopun/go/ch-1.go new file mode 100644 index 0000000000..d3ac266346 --- /dev/null +++ b/challenge-330/pokgopun/go/ch-1.go @@ -0,0 +1,72 @@ +//# https://theweeklychallenge.org/blog/perl-weekly-challenge-330/ +/*# + +Task 1: Clear Digits + +Submitted by: [44]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given a string containing only lower case English letters and + digits. + + Write a script to remove all digits by removing the first digit and the + closest non-digit character to its left. + +Example 1 + +Input: $str = "cab12" +Output: "c" + +Round 1: remove "1" then "b" => "ca2" +Round 2: remove "2" then "a" => "c" + +Example 2 + +Input: $str = "xy99" +Output: "" + +Round 1: remove "9" then "y" => "x9" +Round 2: remove "9" then "x" => "" + +Example 3 + +Input: $str = "pa1erl" +Output: "perl" + +Task 2: Title Capital +#*/ +//# solution by pokgopun@gmail.com + +package main + +import ( + "io" + "os" + "regexp" + + "github.com/google/go-cmp/cmp" +) + +func cd(str string) string { + re := regexp.MustCompile(`([a-z])(\d*?)(\d)`) + for { + s := re.ReplaceAllString(str, "${2}") + if s == str { + break + } + str = s + } + return str +} + +func main() { + for _, data := range []struct { + input, output string + }{ + {"cab12", "c"}, + {"xy99", ""}, + {"pa1erl", "perl"}, + } { + io.WriteString(os.Stdout, cmp.Diff(cd(data.input), data.output)) // blank if ok, otherwise show the difference + } +} diff --git a/challenge-330/pokgopun/go/ch-2.go b/challenge-330/pokgopun/go/ch-2.go new file mode 100644 index 0000000000..31df8c7025 --- /dev/null +++ b/challenge-330/pokgopun/go/ch-2.go @@ -0,0 +1,72 @@ +//# https://theweeklychallenge.org/blog/perl-weekly-challenge-330/ +/*# + +Task 2: Title Capital + +Submitted by: [45]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given a string made up of one or more words separated by a + single space. + + Write a script to capitalise the given title. If the word length is 1 + or 2 then convert the word to lowercase otherwise make the first + character uppercase and remaining lowercase. + +Example 1 + +Input: $str = "PERL IS gREAT" +Output: "Perl is Great" + +Example 2 + +Input: $str = "THE weekly challenge" +Output: "The Weekly Challenge" + +Example 3 + +Input: $str = "YoU ARE A stAR" +Output: "You Are a Star" + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 20th July 2025. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +#*/ +//# solution by pokgopun@gmail.com + +package main + +import ( + "io" + "os" + "strings" + + "github.com/google/go-cmp/cmp" +) + +func tc(str string) string { + var b strings.Builder + for v := range strings.SplitSeq(strings.ToLower(str), " ") { + b.WriteRune(' ') + if len(v) > 2 { + b.WriteString(strings.ToUpper(v[:1]) + v[1:]) + } else { + b.WriteString(v) + } + } + return b.String()[1:] +} + +func main() { + for _, data := range []struct { + input, output string + }{ + {"PERL IS gREAT", "Perl is Great"}, + {"THE weekly challenge", "The Weekly Challenge"}, + {"YoU ARE A stAR", "You Are a Star"}, + } { + io.WriteString(os.Stdout, cmp.Diff(tc(data.input), data.output)) // blank if ok, otherwise show the difference + } +} |
