Different solution for Gophercise 1

This commit is contained in:
2025-05-31 13:14:20 -04:00
parent b22ab92d79
commit 1da6e395bf
56 changed files with 3374 additions and 0 deletions

View File

@@ -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
1 5+5 10
2 1+1 2
3 8+3 11
4 1+2 3
5 8+6 14
6 3+1 4
7 1+4 5
8 5+1 6
9 2+3 5
10 3+3 6
11 2+4 6
12 5+2 7

View File

@@ -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)))
}
}