From f590af9b49ed0438a4e25f02a1c562509a42ea0c Mon Sep 17 00:00:00 2001 From: Inanc Gumus Date: Mon, 22 Oct 2018 23:10:24 +0300 Subject: [PATCH] add: one more solution to 13-loops/exercises/09-lucky-number 01-first-turn-winner --- .../solution-better/main.go | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/solution-better/main.go diff --git a/13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/solution-better/main.go b/13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/solution-better/main.go new file mode 100644 index 0000000..53196f0 --- /dev/null +++ b/13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/solution-better/main.go @@ -0,0 +1,74 @@ +// For more tutorials: https://blog.learngoprogramming.com +// +// Copyright © 2018 Inanc Gumus +// Learn Go Programming Course +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +// + +package main + +import ( + "fmt" + "math/rand" + "os" + "strconv" + "time" +) + +const ( + maxTurns = 5 // less is more difficult + usage = `Welcome to the Lucky Number Game! 🍀 + +The program will pick %d random numbers. +Your mission is to guess one of those numbers. + +The greater your number is, harder it gets. + +Wanna play? +` +) + +func main() { + rand.Seed(time.Now().UnixNano()) + + args := os.Args[1:] + + if len(args) != 1 { + fmt.Printf(usage, maxTurns) + return + } + + guess, err := strconv.Atoi(args[0]) + if err != nil { + fmt.Println("Not a number.") + return + } + + if guess < 0 { + fmt.Println("Please pick a positive number.") + return + } + + for turn := 1; turn <= maxTurns; turn++ { + n := rand.Intn(guess + 1) + + // Better, why? + // + // Instead of nesting the if statement into + // another if statement; it simply continues. + // + // TLDR: Avoid nested statements. + if n != guess { + continue + } + + if turn == 1 { + fmt.Println("🥇 FIRST TIME WINNER!!!") + } else { + fmt.Println("🎉 YOU WON!") + } + return + } + + fmt.Println("☠️ YOU LOST... Try again?") +}