From ae9505d10d86fd95ed3a3203f61de7c1179bc77f Mon Sep 17 00:00:00 2001 From: hikaru7719 Date: Tue, 27 Nov 2018 22:58:17 +0900 Subject: [PATCH 1/2] add .gitignore --- kadai3-1/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 kadai3-1/.gitignore diff --git a/kadai3-1/.gitignore b/kadai3-1/.gitignore new file mode 100644 index 0000000..68729d6 --- /dev/null +++ b/kadai3-1/.gitignore @@ -0,0 +1,2 @@ +.idea/ +.DS_Store \ No newline at end of file From 7ffa85eedae20f7e6d4ba452063148a7b817e836 Mon Sep 17 00:00:00 2001 From: hikaru7719 Date: Tue, 27 Nov 2018 22:58:37 +0900 Subject: [PATCH 2/2] add main.go --- kadai3-1/main.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 kadai3-1/main.go diff --git a/kadai3-1/main.go b/kadai3-1/main.go new file mode 100644 index 0000000..b93cdc1 --- /dev/null +++ b/kadai3-1/main.go @@ -0,0 +1,61 @@ +package main + +import ( + "os" + "fmt" + "io" + "bufio" + "context" + "time" + "math/rand" +) + +var gameString = []string{"apple","banana","peach","strawberry","cherry","watermelon","pineapple","grape"} +var totalGame = 0 +var totalScore = 0 + +func main(){ + bc := context.Background() + t := 30*time.Second + ctx,cancel := context.WithTimeout(bc,t) + defer cancel() + + ch := input(os.Stdin,ctx) +LOOP: + for{ + fmt.Println(">") + n := rand.Intn(len(gameString)) + randString := gameString[n] + totalGame ++ + fmt.Println(randString) + select { + case <-ctx.Done(): + fmt.Println("time up") + break LOOP + default: + typedString := <-ch + if randString == typedString{ + fmt.Println("ok") + totalScore ++ + } + } + } + fmt.Printf("total score %d/%d",totalScore,totalGame) + +} + +func input(r io.Reader,ctx context.Context) <-chan string{ + ch := make(chan string) + go func() { + s := bufio.NewScanner(r) + for s.Scan(){ + select{ + case <- ctx.Done(): + close(ch) + return + case ch <- s.Text(): + } + } + }() + return ch +} \ No newline at end of file