From ff32ea32e5766d3a01db00479a8afbb679dd1b8d Mon Sep 17 00:00:00 2001 From: Anand Date: Mon, 5 Feb 2018 21:44:24 -0500 Subject: [PATCH 1/4] quiz exercise part 1 and 2 --- students/kannanenator/main.go | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 students/kannanenator/main.go diff --git a/students/kannanenator/main.go b/students/kannanenator/main.go new file mode 100644 index 0000000..664bf8d --- /dev/null +++ b/students/kannanenator/main.go @@ -0,0 +1,58 @@ +package main + +import "os" +import "fmt" +import "log" +import "flag" +import "time" +import "encoding/csv" +import "bufio" +import "strings" + +func main() { + + filenamePtr := flag.String("filename", "problems.csv", "file containing the set of problems") + limitPtr := flag.Int("limit", 30, "quiz time limit") + + flag.Parse() + + // TODO read in csv of Q,A + file, err := os.Open(*filenamePtr) + handleError(err) + defer file.Close() + + csvReader := csv.NewReader(file) + rows, err := csvReader.ReadAll() + handleError(err) + + numQs := len(rows) + numCorrect := 0 + + timer := time.NewTimer(time.Second * time.Duration(*limitPtr)) + go func() { + <- timer.C + // when the timer ends, we kill the quiz + fmt.Println("\nTime is up") + os.Exit(0) + }() + + consoleReader := bufio.NewReader(os.Stdin) + for idx, element := range rows { + q, a := element[0], element[1] + fmt.Print("Problem #", idx+1 ,": ", q, " = ") + input, _ := consoleReader.ReadString('\n') + + // compare w/o whitespace + if strings.TrimSpace(input) == strings.TrimSpace(a) { + numCorrect++ + } + } + + fmt.Println("You got", numCorrect, "out of", numQs, "correct") +} + +func handleError(err error){ + if err != nil { + log.Fatal(err) + } +} \ No newline at end of file From b26aa520758b38e087ee1b253ff4d19e00f1bc3e Mon Sep 17 00:00:00 2001 From: Anand Date: Mon, 5 Feb 2018 21:45:56 -0500 Subject: [PATCH 2/4] remove todo --- students/kannanenator/main.go | 1 - 1 file changed, 1 deletion(-) diff --git a/students/kannanenator/main.go b/students/kannanenator/main.go index 664bf8d..f49e411 100644 --- a/students/kannanenator/main.go +++ b/students/kannanenator/main.go @@ -16,7 +16,6 @@ func main() { flag.Parse() - // TODO read in csv of Q,A file, err := os.Open(*filenamePtr) handleError(err) defer file.Close() From 3408ec44931a5428af8c4b50e62d9f1532629508 Mon Sep 17 00:00:00 2001 From: Anand Date: Mon, 5 Feb 2018 21:57:58 -0500 Subject: [PATCH 3/4] EOF newline --- students/kannanenator/main.go | 1 + 1 file changed, 1 insertion(+) diff --git a/students/kannanenator/main.go b/students/kannanenator/main.go index f49e411..c388170 100644 --- a/students/kannanenator/main.go +++ b/students/kannanenator/main.go @@ -13,6 +13,7 @@ func main() { filenamePtr := flag.String("filename", "problems.csv", "file containing the set of problems") limitPtr := flag.Int("limit", 30, "quiz time limit") + shufflePtr := flag.Bool("shuffle", false, "shuffle the quiz if true") flag.Parse() From 487f0902b11e7747bd02ddba70c537840d3865a2 Mon Sep 17 00:00:00 2001 From: Anand Date: Mon, 5 Feb 2018 21:59:19 -0500 Subject: [PATCH 4/4] actually EOF newline --- students/kannanenator/main.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/students/kannanenator/main.go b/students/kannanenator/main.go index c388170..dbaa106 100644 --- a/students/kannanenator/main.go +++ b/students/kannanenator/main.go @@ -13,7 +13,6 @@ func main() { filenamePtr := flag.String("filename", "problems.csv", "file containing the set of problems") limitPtr := flag.Int("limit", 30, "quiz time limit") - shufflePtr := flag.Bool("shuffle", false, "shuffle the quiz if true") flag.Parse() @@ -55,4 +54,4 @@ func handleError(err error){ if err != nil { log.Fatal(err) } -} \ No newline at end of file +}