diff options
| -rw-r--r-- | challenge-161/pokgopun/go/ch-1.go | 31 | ||||
| -rw-r--r-- | challenge-161/pokgopun/go/ch-2.go | 39 |
2 files changed, 55 insertions, 15 deletions
diff --git a/challenge-161/pokgopun/go/ch-1.go b/challenge-161/pokgopun/go/ch-1.go index 863f6cbd05..5befda10c7 100644 --- a/challenge-161/pokgopun/go/ch-1.go +++ b/challenge-161/pokgopun/go/ch-1.go @@ -3,9 +3,10 @@ package main import ( "bufio" "fmt" - "log" + "io" "os" "sort" + "strings" ) func main() { @@ -13,13 +14,26 @@ func main() { if len(os.Args) > 1 { dict = os.Args[1] } + var r io.Reader f, err := os.Open(dict) if err != nil { - log.Fatal(err) + //log.Fatal(err) + s := `forty +hippy +bees +buzz +a +dirty +nosy +chimp +` + r = strings.NewReader(s) + } else { + defer f.Close() + r = f } - defer f.Close() abc := []string{} - scanner := bufio.NewScanner(f) + scanner := bufio.NewScanner(r) for scanner.Scan() { s := scanner.Text() if isAbc(s) { @@ -29,9 +43,12 @@ func main() { if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } - sort.SliceStable(abc, func(i, j int) bool { - return len(abc[i]) > len(abc[j]) - }) + _, ok := r.(*os.File) + if ok { + sort.SliceStable(abc, func(i, j int) bool { + return len(abc[i]) > len(abc[j]) + }) + } fmt.Println(abc) } func isAbc(s string) bool { diff --git a/challenge-161/pokgopun/go/ch-2.go b/challenge-161/pokgopun/go/ch-2.go index 07fee3a83c..bfc9054a31 100644 --- a/challenge-161/pokgopun/go/ch-2.go +++ b/challenge-161/pokgopun/go/ch-2.go @@ -3,7 +3,7 @@ package main import ( "bufio" "fmt" - "log" + "io" "os" "sort" "strings" @@ -35,20 +35,35 @@ func main() { if len(os.Args) > 1 { dict = os.Args[1] } + var r io.Reader f, err := os.Open(dict) if err != nil { - log.Fatal(err) + //log.Fatal(err) + s := `the +quick +brown +fox +jumps +over +the +lazy +dog +` + r = strings.NewReader(s) + } else { + defer f.Close() + r = f } - defer f.Close() pngrm := []string{} letters := byteSeen{} var best string - scanner := bufio.NewScanner(f) + scanner := bufio.NewScanner(r) for scanner.Scan() { + b := scanner.Text() if len(best) == 0 { - best = "a" + //best = "a" + best = b[0:1] } - b := scanner.Text() if b[:1] == best[:1] { if letters.countUnseen(best) >= letters.countUnseen(b) { continue @@ -67,9 +82,17 @@ func main() { break } } + if len(letters) < 26 { + pngrm = append(pngrm, best) + for _, v := range []byte(best) { + letters[v] = struct{}{} + } + } if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } - fmt.Println(pngrm) - fmt.Printf("=> %d words, %d letters and %d unique letters\n", len(pngrm), len(strings.Join(pngrm, "")), len(letters)) + if len(letters) == 26 { + fmt.Println(pngrm) + fmt.Printf("=> %d words, %d letters and %d unique letters\n", len(pngrm), len(strings.Join(pngrm, "")), len(letters)) + } } |
