Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
* done

* Delete vcs.xml
  • Loading branch information
Dmitry Inuytin authored and joncalhoun committed Jul 22, 2019
1 parent 821688a commit 14e3609
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
12 changes: 12 additions & 0 deletions students/inyutin/problems.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
5+5,10
1+1,2
8+3,11
1+2,3
8+6,14
3+1,4
1+4,5
5+1,6
2+3,5
3+3,6
2+4,6
5+2,7
73 changes: 73 additions & 0 deletions students/inyutin/quiz.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package main

import (
"bufio"
"encoding/csv"
"flag"
"fmt"
"io"
"log"
"os"
"strconv"
"time"
)

type Line struct {
Question string
Answer string
}

var (
csvName = flag.String("csv", "problems.csv", "path to csv file with quiz(question,answer)")
limit = flag.Int("limit", 30, "the time limit for the quiz in seconds")
)

func main() {
flag.Parse()

csvFile, err := os.Open(*csvName)
if err != nil {
fmt.Println(err)
return
}
defer csvFile.Close()

csvReader := csv.NewReader(bufio.NewReader(csvFile))
var lines []Line
for {
line, error := csvReader.Read()
if error == io.EOF {
break
} else if error != nil {
log.Fatal(error)
}
lines = append(lines, Line{
Question: line[0],
Answer: line[1],
})
}

reader := bufio.NewReader(os.Stdin)
count := 0

T := time.Duration(*limit)
timer := time.NewTimer(T * time.Second)
go func() {
<-timer.C
fmt.Println()
fmt.Println("You scored " + strconv.Itoa(count) + " out of " + strconv.Itoa(len(lines)))
os.Exit(0)
}()

for idx, line := range lines {
fmt.Print("Question №" + strconv.Itoa(idx+1) + ": " + line.Question + " = ")
ans, _ := reader.ReadString('\n')
if ans == line.Answer+"\n" {
count++
}
}
stop := timer.Stop()
if stop {
fmt.Println("You scored " + strconv.Itoa(count) + " out of " + strconv.Itoa(len(lines)))
}
}

0 comments on commit 14e3609

Please sign in to comment.