-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
85 lines (77 loc) · 1.19 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package main
import (
"fmt"
"os"
"io"
"bufio"
"time"
"math/rand"
"strconv"
)
var wordList = []string{
"apple",
"brother",
"cross",
"dinner",
"evening",
"final",
"great",
"happy",
"idea",
"judge",
"knight",
"least",
"mountain",
"new",
"open",
"pen",
"question",
"response",
"star",
"teacher",
"unique",
"victory",
"winner",
"xbox",
"yahoo",
"zero",
}
func main() {
chTyping := input(os.Stdin)
chTimer := time.After(30 * time.Second)
var correct int
for {
q := question()
fmt.Println("Let's input : " + q)
fmt.Print(">")
select {
case in := <-chTyping:
if q == in {
correct += 1
fmt.Println("Yeah!! (count: " + strconv.Itoa(correct) + ")")
} else {
fmt.Println("Wrong. (count: " + strconv.Itoa(correct) + ")")
}
case <-chTimer:
fmt.Println("")
fmt.Println("Time Up!!!")
fmt.Println("Correct Count is ... " + strconv.Itoa(correct))
return
}
}
}
func question() string {
rand.Seed(time.Now().UnixNano())
return wordList[rand.Int() % len(wordList)]
}
func input(r io.Reader) <-chan string {
ch := make(chan string)
go func() {
s := bufio.NewScanner(r)
for s.Scan() {
ch <- s.Text()
}
close(ch)
}()
return ch
}