aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-161/pokgopun/go/ch-1.go31
-rw-r--r--challenge-161/pokgopun/go/ch-2.go39
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))
+ }
}