From 8c5739958625cbb1d8c955dd16989a331fa8520b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E7=94=B0=E9=9B=84=E5=A4=AA?= Date: Tue, 1 May 2018 11:43:42 +0900 Subject: [PATCH 1/5] initial commit --- kadai3/yuuyamad/.idea/misc.xml | 6 + kadai3/yuuyamad/.idea/modules.xml | 8 ++ kadai3/yuuyamad/.idea/workspace.xml | 175 ++++++++++++++++++++++++++++ kadai3/yuuyamad/.idea/yuuyamad.iml | 8 ++ kadai3/yuuyamad/main.go | 51 ++++++++ 5 files changed, 248 insertions(+) create mode 100644 kadai3/yuuyamad/.idea/misc.xml create mode 100644 kadai3/yuuyamad/.idea/modules.xml create mode 100644 kadai3/yuuyamad/.idea/workspace.xml create mode 100644 kadai3/yuuyamad/.idea/yuuyamad.iml create mode 100644 kadai3/yuuyamad/main.go diff --git a/kadai3/yuuyamad/.idea/misc.xml b/kadai3/yuuyamad/.idea/misc.xml new file mode 100644 index 0000000..28a804d --- /dev/null +++ b/kadai3/yuuyamad/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/kadai3/yuuyamad/.idea/modules.xml b/kadai3/yuuyamad/.idea/modules.xml new file mode 100644 index 0000000..0c99cfa --- /dev/null +++ b/kadai3/yuuyamad/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/kadai3/yuuyamad/.idea/workspace.xml b/kadai3/yuuyamad/.idea/workspace.xml new file mode 100644 index 0000000..28ca93b --- /dev/null +++ b/kadai3/yuuyamad/.idea/workspace.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/kadai3/yuuyamad/.idea/yuuyamad.iml b/kadai3/yuuyamad/.idea/yuuyamad.iml deleted file mode 100644 index c956989..0000000 --- a/kadai3/yuuyamad/.idea/yuuyamad.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file From f06a42c68142741fc8f432dcbd34e90265dd830c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E7=94=B0=E9=9B=84=E5=A4=AA?= Date: Tue, 1 May 2018 15:29:40 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=8B=E3=82=89=E8=AA=AD=E3=81=BF?= =?UTF-8?q?=E8=BE=BC=E3=82=80=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kadai3/yuuyamad/hoge.txt | 3 +++ kadai3/yuuyamad/main.go | 55 +++++++++++++++++++++++++++++++++------- 2 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 kadai3/yuuyamad/hoge.txt diff --git a/kadai3/yuuyamad/hoge.txt b/kadai3/yuuyamad/hoge.txt new file mode 100644 index 0000000..bef6266 --- /dev/null +++ b/kadai3/yuuyamad/hoge.txt @@ -0,0 +1,3 @@ +hoge moga +hoge moga +moga fuga diff --git a/kadai3/yuuyamad/main.go b/kadai3/yuuyamad/main.go index 196b8dc..9ff160e 100644 --- a/kadai3/yuuyamad/main.go +++ b/kadai3/yuuyamad/main.go @@ -6,32 +6,69 @@ import ( "time" "bufio" "strconv" + "flag" ) func main() { + var ( + seconds = flag.Duration("t", 10*time.Second, "timer set") + ) + flag.Parse() + args := flag.Args() + + //問題用のファイルを読み込み + word := readfile(args[0]) + fmt.Println("Start typing GAME!!!") - ch := quiz() - ch2 := time.After(10 * time.Second) + + ch := quiz(word) + ch2 := time.After(*seconds) j := 0 + + END: for { select { case <-ch2: - s := strconv.Itoa(j) - fmt.Println("Correct Answer is " + s) - return - case <-ch: - j++ + break END + case _, ok := <-ch: + if ok { + j++ + }else{ + break END + } } } + s := strconv.Itoa(j) + fmt.Println("Correct Answer is " + s) + +} + +func readfile(file string) []string { + + var word []string + var fp *os.File + var err error + + fp, err = os.Open(file) + if err != nil { + panic(err) + } + defer fp.Close() + + var sc = bufio.NewScanner(fp); + sc.Split(bufio.ScanWords) + for sc.Scan(){ + word = append(word, sc.Text()) + } + return word } -func quiz() <-chan struct{}{ +func quiz(quizes []string) <-chan struct{}{ ch := make(chan struct{}) go func(){ - quizes := []string{"hoge", "moga", "fuga", "moga", "hoge", "hoge", "hoge", "hoge", "hoge", "hoge"} for _, quiz := range quizes { fmt.Print(quiz + ":") From b207a867a004cd940a4e90aae2216c535ace5846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E7=94=B0=E9=9B=84=E5=A4=AA?= Date: Wed, 2 May 2018 11:23:40 +0900 Subject: [PATCH 4/5] add test data --- kadai3/yuuyamad/log.go | 13 +++++++++ kadai3/yuuyamad/main.go | 14 +++++----- kadai3/yuuyamad/main_test.go | 36 +++++++++++++++++++++++++ kadai3/yuuyamad/testdata/fuga.txt | 1 + kadai3/yuuyamad/{ => testdata}/hoge.txt | 0 kadai3/yuuyamad/testdata/moga.txt | 3 +++ 6 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 kadai3/yuuyamad/log.go create mode 100644 kadai3/yuuyamad/main_test.go create mode 100644 kadai3/yuuyamad/testdata/fuga.txt rename kadai3/yuuyamad/{ => testdata}/hoge.txt (100%) create mode 100644 kadai3/yuuyamad/testdata/moga.txt diff --git a/kadai3/yuuyamad/log.go b/kadai3/yuuyamad/log.go new file mode 100644 index 0000000..9053696 --- /dev/null +++ b/kadai3/yuuyamad/log.go @@ -0,0 +1,13 @@ +package main + +import ( + "log" + "os" +) + +func logError(err error){ + if err != nil{ + log.Fatal(err) + os.Exit(1) + } +} \ No newline at end of file diff --git a/kadai3/yuuyamad/main.go b/kadai3/yuuyamad/main.go index 9ff160e..9ab0554 100644 --- a/kadai3/yuuyamad/main.go +++ b/kadai3/yuuyamad/main.go @@ -18,9 +18,12 @@ func main() { args := flag.Args() //問題用のファイルを読み込み - word := readfile(args[0]) + word, err := readfile(args[0]) + if err != nil { + logError(err) + } - fmt.Println("Start typing GAME!!!") + fmt.Println("Typing GAME Start!!") ch := quiz(word) ch2 := time.After(*seconds) @@ -44,8 +47,7 @@ func main() { fmt.Println("Correct Answer is " + s) } - -func readfile(file string) []string { +func readfile(file string) ([]string, error) { var word []string var fp *os.File @@ -53,7 +55,7 @@ func readfile(file string) []string { fp, err = os.Open(file) if err != nil { - panic(err) + return nil, err } defer fp.Close() @@ -62,7 +64,7 @@ func readfile(file string) []string { for sc.Scan(){ word = append(word, sc.Text()) } - return word + return word, nil } func quiz(quizes []string) <-chan struct{}{ diff --git a/kadai3/yuuyamad/main_test.go b/kadai3/yuuyamad/main_test.go new file mode 100644 index 0000000..c6be9fa --- /dev/null +++ b/kadai3/yuuyamad/main_test.go @@ -0,0 +1,36 @@ +package main + +import ( + "testing" + "reflect" +) + +func TestReadfile(t *testing.T){ + + var tests = []struct { + filename string + word []string + }{ + {"testdata/hoge.txt", []string{"hoge", "moga", "hoge", "moga", "moga", "fuga"}}, + {"testdata/fuga.txt", []string{"hogehoge", "mogamoga", "fugafuga", "hogehoge"}}, + {"testdata/moga.txt", []string{"hoga", "hoge", "fuga"}}, + {"testdata/unknown", []string{}}, + + } + for _, test := range tests { + ret, err := readfile(test.filename) + if test.filename == "testdata/unknown" && err == nil { + t.Error(`readfile(testdata/unknown)`) + } + + if test.filename != "testdata/unknown" && !reflect.DeepEqual(test.word, ret){ + t.Error(`readfile(%q)`, test.filename) + } + + } + +} + +func Testquiz(t *testing.T){ + +} diff --git a/kadai3/yuuyamad/testdata/fuga.txt b/kadai3/yuuyamad/testdata/fuga.txt new file mode 100644 index 0000000..7cf0ad5 --- /dev/null +++ b/kadai3/yuuyamad/testdata/fuga.txt @@ -0,0 +1 @@ +hogehoge mogamoga fugafuga hogehoge diff --git a/kadai3/yuuyamad/hoge.txt b/kadai3/yuuyamad/testdata/hoge.txt similarity index 100% rename from kadai3/yuuyamad/hoge.txt rename to kadai3/yuuyamad/testdata/hoge.txt diff --git a/kadai3/yuuyamad/testdata/moga.txt b/kadai3/yuuyamad/testdata/moga.txt new file mode 100644 index 0000000..012ecd7 --- /dev/null +++ b/kadai3/yuuyamad/testdata/moga.txt @@ -0,0 +1,3 @@ +hoga +hoge +fuga From e38c65f3592c01bff41efc49dda30a2151062b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E7=94=B0=E9=9B=84=E5=A4=AA?= Date: Tue, 15 May 2018 23:20:59 +0900 Subject: [PATCH 5/5] =?UTF-8?q?README=E3=81=A8=E3=82=B5=E3=83=B3=E3=83=97?= =?UTF-8?q?=E3=83=AB=E3=81=AE=E5=95=8F=E9=A1=8C=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kadai3/yuuyamad/README.md | 9 +++++++++ kadai3/yuuyamad/typing_game_word_examplefile.txt | 3 +++ 2 files changed, 12 insertions(+) create mode 100644 kadai3/yuuyamad/README.md create mode 100644 kadai3/yuuyamad/typing_game_word_examplefile.txt diff --git a/kadai3/yuuyamad/README.md b/kadai3/yuuyamad/README.md new file mode 100644 index 0000000..6fddf75 --- /dev/null +++ b/kadai3/yuuyamad/README.md @@ -0,0 +1,9 @@ +# typing game + +## Command Line Options + +### -t +typing game time + +## example +./yuuyamad typing_game_word_examplefile.txt -t 60s diff --git a/kadai3/yuuyamad/typing_game_word_examplefile.txt b/kadai3/yuuyamad/typing_game_word_examplefile.txt new file mode 100644 index 0000000..bef6266 --- /dev/null +++ b/kadai3/yuuyamad/typing_game_word_examplefile.txt @@ -0,0 +1,3 @@ +hoge moga +hoge moga +moga fuga