aboutsummaryrefslogtreecommitdiff
path: root/challenge-010
diff options
context:
space:
mode:
authorMichael Manring <michael@manring>2022-07-17 22:24:55 +0700
committerMichael Manring <michael@manring>2022-07-21 12:45:38 +0700
commit4ec57ef9091c1af65cff69651fb806236a6cf71a (patch)
treec0e200e0e8f2c8972bf0f9058a6e5b4ea5b27596 /challenge-010
parent65477bd7fedde139fa99e0552c82fbda9c1cf5e2 (diff)
downloadperlweeklychallenge-club-4ec57ef9091c1af65cff69651fb806236a6cf71a.tar.gz
perlweeklychallenge-club-4ec57ef9091c1af65cff69651fb806236a6cf71a.tar.bz2
perlweeklychallenge-club-4ec57ef9091c1af65cff69651fb806236a6cf71a.zip
pwc010 solution in go
Diffstat (limited to 'challenge-010')
-rw-r--r--challenge-010/pokgopun/README1
-rw-r--r--challenge-010/pokgopun/go/ch-1.go58
-rw-r--r--challenge-010/pokgopun/go/ch-2.go24
3 files changed, 83 insertions, 0 deletions
diff --git a/challenge-010/pokgopun/README b/challenge-010/pokgopun/README
new file mode 100644
index 0000000000..33dfd303a4
--- /dev/null
+++ b/challenge-010/pokgopun/README
@@ -0,0 +1 @@
+Solution by PokGoPun
diff --git a/challenge-010/pokgopun/go/ch-1.go b/challenge-010/pokgopun/go/ch-1.go
new file mode 100644
index 0000000000..5101221a9d
--- /dev/null
+++ b/challenge-010/pokgopun/go/ch-1.go
@@ -0,0 +1,58 @@
+/* https://theweeklychallenge.org/blog/perl-weekly-challenge-010/
+
+Challenge #1
+Write a script to encode/decode Roman numerals. For example, given Roman numeral CCXLVI, it should return 246. Similarly, for decimal number 39, it should return XXXIX. Checkout wikipedia page for more informaiton.
+
+*/
+package main
+
+import (
+ "fmt"
+ "log"
+ "os"
+ "strconv"
+
+ "github.com/pokgopun/go/roman"
+)
+
+func main() {
+ guide := `
+Usage:
+ To encode decimal number to roman, enter:
+ %cmd% encode %number%
+
+ To decode roman number string to decimal number, enter:
+ %cmd% decode %string%
+ `
+ roman := roman.NewRoman()
+ if len(os.Args) > 2 && (os.Args[1] == "encode" || os.Args[1] == "decode") {
+ switch os.Args[1] {
+ case "encode":
+ n, err := strconv.ParseUint(os.Args[2], 10, 64)
+ if err != nil {
+ log.Fatal(err)
+ }
+ str, err := roman.FromDec(uint(n))
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(str)
+ case "decode":
+ n, err := roman.ToDec(os.Args[2])
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(n)
+ }
+ } else {
+ fmt.Println(guide)
+ for _, v := range []uint{246, 39} {
+ str, _ := roman.FromDec(v)
+ fmt.Printf("\tencode %v => %v\n\n", v, str)
+ }
+ for _, v := range []string{"CCXLVI", "XXXIX"} {
+ n, _ := roman.ToDec(v)
+ fmt.Printf("\tdecode %v => %v\n\n", v, n)
+ }
+ }
+}
diff --git a/challenge-010/pokgopun/go/ch-2.go b/challenge-010/pokgopun/go/ch-2.go
new file mode 100644
index 0000000000..838269806e
--- /dev/null
+++ b/challenge-010/pokgopun/go/ch-2.go
@@ -0,0 +1,24 @@
+/* https://theweeklychallenge.org/blog/perl-weekly-challenge-010/
+Challenge #2
+Write a script to find Jaro-Winkler distance between two strings. For more information check wikipedia page.
+*/
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/pokgopun/go/jarowinkler"
+)
+
+func main() {
+ if len(os.Args) > 2 {
+ jw := jarowinkler.New(os.Args[1], os.Args[2])
+ //fmt.Printf("%.3f %.3f\n", jw.Similarity(false), jw.Similarity(true))
+ fmt.Printf("%.3f\n", jw.Distance(true))
+ } else {
+ fmt.Println(`
+Usage:
+ %cmd% %str1% %str2%`)
+ }
+}