From ebd45c1c986d732dc45b0630cbd3d35cd60237d0 Mon Sep 17 00:00:00 2001 From: nuo <49533950+nuoxoxo@users.noreply.github.com> Date: Thu, 12 Sep 2024 20:25:02 +0200 Subject: [PATCH] 5/channel - edit - fi. in Go using Stalecucumber --- 5.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5.py | 7 ------- go.mod | 10 ++++++++-- 3 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 5.go delete mode 100644 5.py diff --git a/5.go b/5.go new file mode 100644 index 0000000..b7616a3 --- /dev/null +++ b/5.go @@ -0,0 +1,59 @@ +package main + +import ( + "fmt" + "net/http" + "github.com/hydrogen18/stalecucumber" +) + +func main() { + resp, err := http.Get("http://www.pythonchallenge.com/pc/def/banner.p") + if err != nil { + fmt.Println("resp/err", err) + } + defer resp.Body.Close() + + // some stalecucumber magic + unpickled, err := stalecucumber.Unpickle(resp.Body) + if err != nil { + fmt.Println("stale/err", err) + } + data, ok := unpickled.([]interface{}) + if !ok { + fmt.Println("assert/data", "not []interface{}") + } + + // loop through line by line + for _, d := range data { + sub, ok := d.([]interface{}) + if !ok { + fmt.Println("assert/sub", "not []interface{}") + } + + line := "" + for _, pair := range sub { + kv, ok := pair.([]interface{}) + if !ok { + fmt.Println("assert/pair", "not []interface{}") + } + if len(kv) != 2 { + fmt.Println("assert/err", "not key-value pair") + } + k, ok := kv[0].(string) + if !ok { + fmt.Println("assert/not string") + } + v, ok := kv[1].(int64) + if !ok { + fmt.Println("assert/not int64 - has to be int64") + } + i := 0 + for i < int(v) { + line += k + i++ + } + } + fmt.Println("line/ ", line) + } +} + diff --git a/5.py b/5.py deleted file mode 100644 index 62d41f9..0000000 --- a/5.py +++ /dev/null @@ -1,7 +0,0 @@ -from urllib.request import urlopen -import pickle - -reader = urlopen('http://www.pythonchallenge.com/pc/def/banner.p').read() -print(reader) -print('\n'.join(''.join(k*v for k,v in p) for p in pickle.loads(reader))) - diff --git a/go.mod b/go.mod index 573219b..a128f00 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,12 @@ module pych go 1.22.4 require ( - github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/ODAEL/nonogo v0.0.0-20190516210312-a0df0f59311b + github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b + github.com/pmezard/go-difflib v1.0.0 +) + +require ( + github.com/hydrogen18/stalecucumber v0.0.0-20180226003526-6de214d141dd // indirect + github.com/stretchr/testify v1.9.0 // indirect )