diff --git a/13-loops/01-loops/01-basics/main.go b/13-loops/01-basics/main.go similarity index 100% rename from 13-loops/01-loops/01-basics/main.go rename to 13-loops/01-basics/main.go diff --git a/13-loops/01-loops/02-break/main.go b/13-loops/02-break/main.go similarity index 100% rename from 13-loops/01-loops/02-break/main.go rename to 13-loops/02-break/main.go diff --git a/13-loops/01-loops/03-continue/01-a-before/main.go b/13-loops/03-continue/01-a-before/main.go similarity index 100% rename from 13-loops/01-loops/03-continue/01-a-before/main.go rename to 13-loops/03-continue/01-a-before/main.go diff --git a/13-loops/01-loops/03-continue/01-b-after/main.go b/13-loops/03-continue/01-b-after/main.go similarity index 100% rename from 13-loops/01-loops/03-continue/01-b-after/main.go rename to 13-loops/03-continue/01-b-after/main.go diff --git a/13-loops/01-loops/04-nested-loops/main.go b/13-loops/04-nested-loops-multiplication-table/main.go similarity index 100% rename from 13-loops/01-loops/04-nested-loops/main.go rename to 13-loops/04-nested-loops-multiplication-table/main.go diff --git a/13-loops/01-loops/05-for-range/01-loop-over-slices/main.go b/13-loops/05-for-range/01-loop-over-slices/main.go similarity index 100% rename from 13-loops/01-loops/05-for-range/01-loop-over-slices/main.go rename to 13-loops/05-for-range/01-loop-over-slices/main.go diff --git a/13-loops/01-loops/05-for-range/02-loop-over-words/main.go b/13-loops/05-for-range/02-loop-over-words/main.go similarity index 100% rename from 13-loops/01-loops/05-for-range/02-loop-over-words/main.go rename to 13-loops/05-for-range/02-loop-over-words/main.go diff --git a/13-loops/02-project-lucky-number-game/01-randomization/main.go b/13-loops/06-project-lucky-number-game/01-randomization/main.go similarity index 100% rename from 13-loops/02-project-lucky-number-game/01-randomization/main.go rename to 13-loops/06-project-lucky-number-game/01-randomization/main.go diff --git a/13-loops/02-project-lucky-number-game/02-game/main.go b/13-loops/06-project-lucky-number-game/02-game/main.go similarity index 100% rename from 13-loops/02-project-lucky-number-game/02-game/main.go rename to 13-loops/06-project-lucky-number-game/02-game/main.go diff --git a/13-loops/03-project-word-finder/main.go b/13-loops/07-project-word-finder/main.go similarity index 100% rename from 13-loops/03-project-word-finder/main.go rename to 13-loops/07-project-word-finder/main.go diff --git a/13-loops/04-labeled-statements/01-word-finder-break/main.go b/13-loops/08-word-finder-labeled-break/main.go similarity index 100% rename from 13-loops/04-labeled-statements/01-word-finder-break/main.go rename to 13-loops/08-word-finder-labeled-break/main.go diff --git a/13-loops/04-labeled-statements/02-word-finder-continue/main.go b/13-loops/09-word-finder-labeled-continue/main.go similarity index 100% rename from 13-loops/04-labeled-statements/02-word-finder-continue/main.go rename to 13-loops/09-word-finder-labeled-continue/main.go diff --git a/13-loops/04-labeled-statements/03-word-finder-switch/main.go b/13-loops/10-word-finder-labeled-switch/main.go similarity index 100% rename from 13-loops/04-labeled-statements/03-word-finder-switch/main.go rename to 13-loops/10-word-finder-labeled-switch/main.go diff --git a/13-loops/04-labeled-statements/04-goto/main.go b/13-loops/11-goto/main.go similarity index 100% rename from 13-loops/04-labeled-statements/04-goto/main.go rename to 13-loops/11-goto/main.go diff --git a/13-loops/exercises/01-loops/01-sum-the-numbers/main.go b/13-loops/exercises/01-sum-the-numbers/main.go similarity index 100% rename from 13-loops/exercises/01-loops/01-sum-the-numbers/main.go rename to 13-loops/exercises/01-sum-the-numbers/main.go diff --git a/13-loops/exercises/01-loops/01-sum-the-numbers/solution/main.go b/13-loops/exercises/01-sum-the-numbers/solution/main.go similarity index 100% rename from 13-loops/exercises/01-loops/01-sum-the-numbers/solution/main.go rename to 13-loops/exercises/01-sum-the-numbers/solution/main.go diff --git a/13-loops/exercises/01-loops/02-sum-the-numbers-verbose/main.go b/13-loops/exercises/02-sum-the-numbers-verbose/main.go similarity index 100% rename from 13-loops/exercises/01-loops/02-sum-the-numbers-verbose/main.go rename to 13-loops/exercises/02-sum-the-numbers-verbose/main.go diff --git a/13-loops/exercises/01-loops/02-sum-the-numbers-verbose/solution/main.go b/13-loops/exercises/02-sum-the-numbers-verbose/solution/main.go similarity index 100% rename from 13-loops/exercises/01-loops/02-sum-the-numbers-verbose/solution/main.go rename to 13-loops/exercises/02-sum-the-numbers-verbose/solution/main.go diff --git a/13-loops/exercises/01-loops/03-sum-up-to-n/main.go b/13-loops/exercises/03-sum-up-to-n/main.go similarity index 100% rename from 13-loops/exercises/01-loops/03-sum-up-to-n/main.go rename to 13-loops/exercises/03-sum-up-to-n/main.go diff --git a/13-loops/exercises/01-loops/03-sum-up-to-n/solution/main.go b/13-loops/exercises/03-sum-up-to-n/solution/main.go similarity index 100% rename from 13-loops/exercises/01-loops/03-sum-up-to-n/solution/main.go rename to 13-loops/exercises/03-sum-up-to-n/solution/main.go diff --git a/13-loops/exercises/01-loops/04-only-evens/main.go b/13-loops/exercises/04-only-evens/main.go similarity index 100% rename from 13-loops/exercises/01-loops/04-only-evens/main.go rename to 13-loops/exercises/04-only-evens/main.go diff --git a/13-loops/exercises/01-loops/04-only-evens/solution/main.go b/13-loops/exercises/04-only-evens/solution/main.go similarity index 100% rename from 13-loops/exercises/01-loops/04-only-evens/solution/main.go rename to 13-loops/exercises/04-only-evens/solution/main.go diff --git a/13-loops/exercises/01-loops/05-break-up/main.go b/13-loops/exercises/05-break-up/main.go similarity index 100% rename from 13-loops/exercises/01-loops/05-break-up/main.go rename to 13-loops/exercises/05-break-up/main.go diff --git a/13-loops/exercises/01-loops/05-break-up/solution/main.go b/13-loops/exercises/05-break-up/solution/main.go similarity index 100% rename from 13-loops/exercises/01-loops/05-break-up/solution/main.go rename to 13-loops/exercises/05-break-up/solution/main.go diff --git a/13-loops/exercises/01-loops/06-infinite-kill/main.go b/13-loops/exercises/06-infinite-kill/main.go similarity index 100% rename from 13-loops/exercises/01-loops/06-infinite-kill/main.go rename to 13-loops/exercises/06-infinite-kill/main.go diff --git a/13-loops/exercises/01-loops/06-infinite-kill/solution/main.go b/13-loops/exercises/06-infinite-kill/solution/main.go similarity index 100% rename from 13-loops/exercises/01-loops/06-infinite-kill/solution/main.go rename to 13-loops/exercises/06-infinite-kill/solution/main.go diff --git a/13-loops/exercises/01-loops/07-crunch-the-primes/main.go b/13-loops/exercises/07-crunch-the-primes/main.go similarity index 92% rename from 13-loops/exercises/01-loops/07-crunch-the-primes/main.go rename to 13-loops/exercises/07-crunch-the-primes/main.go index 03f1cda..6e1bc23 100644 --- a/13-loops/exercises/01-loops/07-crunch-the-primes/main.go +++ b/13-loops/exercises/07-crunch-the-primes/main.go @@ -26,7 +26,10 @@ package main // // EXPECTED OUTPUT // go run main.go 2 4 6 7 a 9 c 11 x 12 13 -// 2 7 11 13 +// 2 7 11 13 +// +// go run main.go 1 2 3 5 7 A B C +// 2 3 5 7 // --------------------------------------------------------- func main() { diff --git a/13-loops/exercises/01-loops/07-crunch-the-primes/solution/main.go b/13-loops/exercises/07-crunch-the-primes/solution/main.go similarity index 94% rename from 13-loops/exercises/01-loops/07-crunch-the-primes/solution/main.go rename to 13-loops/exercises/07-crunch-the-primes/solution/main.go index ffa7292..8a0e9dd 100644 --- a/13-loops/exercises/01-loops/07-crunch-the-primes/solution/main.go +++ b/13-loops/exercises/07-crunch-the-primes/solution/main.go @@ -13,7 +13,6 @@ import ( "strconv" ) -// func main() { // remember [1:] skips the first argument @@ -26,14 +25,14 @@ main: } switch { - // not a prime - case n <= 0 || n%2 == 0 || n%3 == 0: - continue - // prime case n == 2 || n == 3: fmt.Print(n, " ") continue + + // not a prime + case n <= 1 || n%2 == 0 || n%3 == 0: + continue } for i, w := 5, 2; i*i <= n; { diff --git a/13-loops/exercises/08-multiplication-table-exercises/01-dynamic-table/main.go b/13-loops/exercises/08-multiplication-table-exercises/01-dynamic-table/main.go new file mode 100644 index 0000000..25a360f --- /dev/null +++ b/13-loops/exercises/08-multiplication-table-exercises/01-dynamic-table/main.go @@ -0,0 +1,56 @@ +// 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 + +// --------------------------------------------------------- +// EXERCISE: Dynamic Table +// +// Get the size of the table from the command-line +// Passing 5 should create a 5x5 table +// Passing 10 for a 10x10 tableCreate an infinite loop +// +// RESTRICTION +// Solve this exercise without looking at the original +// multiplication table exercise. +// +// HINT +// There was a max constant in the original program. +// That determines the size of the table. +// +// EXPECTED OUTPUT +// +// go run main.go +// Give me the size of the table +// +// go run main.go -5 +// Wrong size +// +// go run main.go ABC +// Wrong size +// +// go run main.go 1 +// X 0 1 +// 0 0 0 +// 1 0 1 +// +// go run main.go 2 +// X 0 1 2 +// 0 0 0 0 +// 1 0 1 2 +// 2 0 2 4 +// +// go run main.go 3 +// X 0 1 2 3 +// 0 0 0 0 0 +// 1 0 1 2 3 +// 2 0 2 4 6 +// 3 0 3 6 9 +// --------------------------------------------------------- + +func main() { +} diff --git a/13-loops/exercises/08-multiplication-table-exercises/01-dynamic-table/solution/main.go b/13-loops/exercises/08-multiplication-table-exercises/01-dynamic-table/solution/main.go new file mode 100644 index 0000000..440abdf --- /dev/null +++ b/13-loops/exercises/08-multiplication-table-exercises/01-dynamic-table/solution/main.go @@ -0,0 +1,47 @@ +// 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" + "os" + "strconv" +) + +func main() { + args := os.Args + + if len(args) != 2 { + fmt.Println("Give me the size of the table") + return + } + + size, err := strconv.Atoi(args[1]) + if err != nil || size <= 0 { + fmt.Println("Wrong size") + return + } + + // print the header + fmt.Printf("%5s", "X") + for i := 0; i <= size; i++ { + fmt.Printf("%5d", i) + } + fmt.Println() + + for i := 0; i <= size; i++ { + // print the vertical header + fmt.Printf("%5d", i) + + // print the cells + for j := 0; j <= size; j++ { + fmt.Printf("%5d", i*j) + } + fmt.Println() + } +} diff --git a/13-loops/exercises/08-multiplication-table-exercises/02-math-tables/main.go b/13-loops/exercises/08-multiplication-table-exercises/02-math-tables/main.go new file mode 100644 index 0000000..6735267 --- /dev/null +++ b/13-loops/exercises/08-multiplication-table-exercises/02-math-tables/main.go @@ -0,0 +1,92 @@ +// 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 + +// --------------------------------------------------------- +// EXERCISE: Math Tables +// +// Create division, addition and subtraction tables +// +// 1. Get the math operation and +// the size of the table from the user +// +// 2. Print the table accordingly +// +// 3. Correctly handle the division by zero error +// +// +// BONUS #1 +// +// Use strings.IndexAny function to detect +// the valid operations. +// +// Search on Google for: golang pkg strings IndexAny +// +// BONUS #2 +// +// Add remainder operation as well (remainder table using %). +// +// +// EXPECTED OUTPUT +// +// go run main.go +// Usage: [op=*/+-] [size] +// +// go run main.go "*" +// Size is missing +// Usage: [op=*/+-] [size] +// +// go run main.go "%" 4 +// Invalid operator. +// Valid ops one of: */+- +// +// go run main.go "*" 4 +// * 0 1 2 3 4 +// 0 0 0 0 0 0 +// 1 0 1 2 3 4 +// 2 0 2 4 6 8 +// 3 0 3 6 9 12 +// 4 0 4 8 12 16 +// +// go run main.go "/" 4 +// / 0 1 2 3 4 +// 0 0 0 0 0 0 +// 1 0 1 0 0 0 +// 2 0 2 1 0 0 +// 3 0 3 1 1 0 +// 4 0 4 2 1 1 +// +// go run main.go "+" 4 +// + 0 1 2 3 4 +// 0 0 1 2 3 4 +// 1 1 2 3 4 5 +// 2 2 3 4 5 6 +// 3 3 4 5 6 7 +// 4 4 5 6 7 8 +// +// go run main.go "-" 4 +// - 0 1 2 3 4 +// 0 0 -1 -2 -3 -4 +// 1 1 0 -1 -2 -3 +// 2 2 1 0 -1 -2 +// 3 3 2 1 0 -1 +// 4 4 3 2 1 0 +// +// BONUS: +// +// go run main.go "%" 4 +// % 0 1 2 3 4 +// 0 0 0 0 0 0 +// 1 0 0 1 1 1 +// 2 0 0 0 2 2 +// 3 0 0 1 0 3 +// 4 0 0 0 1 0 +// --------------------------------------------------------- + +func main() { +} diff --git a/13-loops/exercises/08-multiplication-table-exercises/02-math-tables/solution/main.go b/13-loops/exercises/08-multiplication-table-exercises/02-math-tables/solution/main.go new file mode 100644 index 0000000..3175f8b --- /dev/null +++ b/13-loops/exercises/08-multiplication-table-exercises/02-math-tables/solution/main.go @@ -0,0 +1,85 @@ +// 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" + "os" + "strconv" + "strings" +) + +const ( + validOps = "%*/+-" + + usageMsg = "Usage: [op=" + validOps + "] [size]" + sizeMissingMsg = "Size is missing" + invalidOpMsg = `Invalid operator. +Valid ops one of: ` + validOps + + invalidOp = -1 +) + +func main() { + args := os.Args[1:] + + switch l := len(args); { + case l == 1: + fmt.Println(sizeMissingMsg) + fallthrough + case l < 1: + fmt.Println(usageMsg) + return + } + + op := args[0] + if strings.IndexAny(op, validOps) == invalidOp { + fmt.Println(invalidOpMsg) + return + } + + size, err := strconv.Atoi(args[1]) + if err != nil || size <= 0 { + fmt.Println("Wrong size") + return + } + + fmt.Printf("%5s", op) + for i := 0; i <= size; i++ { + fmt.Printf("%5d", i) + } + fmt.Println() + + for i := 0; i <= size; i++ { + fmt.Printf("%5d", i) + + for j := 0; j <= size; j++ { + var res int + + switch op { + case "*": + res = i * j + case "%": + if j != 0 { + res = i % j + } + case "/": + if j != 0 { + res = i / j + } + case "+": + res = i + j + case "-": + res = i - j + } + + fmt.Printf("%5d", res) + } + fmt.Println() + } +} diff --git a/13-loops/exercises/02-lucky-number-exercises/01-first-turn-winner/main.go b/13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/01-first-turn-winner/main.go rename to 13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/01-first-turn-winner/solution/main.go b/13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/solution/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/01-first-turn-winner/solution/main.go rename to 13-loops/exercises/09-lucky-number-exercises/01-first-turn-winner/solution/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/02-random-messages/main.go b/13-loops/exercises/09-lucky-number-exercises/02-random-messages/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/02-random-messages/main.go rename to 13-loops/exercises/09-lucky-number-exercises/02-random-messages/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/02-random-messages/solution/main.go b/13-loops/exercises/09-lucky-number-exercises/02-random-messages/solution/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/02-random-messages/solution/main.go rename to 13-loops/exercises/09-lucky-number-exercises/02-random-messages/solution/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/03-double-guesses/main.go b/13-loops/exercises/09-lucky-number-exercises/03-double-guesses/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/03-double-guesses/main.go rename to 13-loops/exercises/09-lucky-number-exercises/03-double-guesses/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/03-double-guesses/solution/main.go b/13-loops/exercises/09-lucky-number-exercises/03-double-guesses/solution/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/03-double-guesses/solution/main.go rename to 13-loops/exercises/09-lucky-number-exercises/03-double-guesses/solution/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/04-verbose-mode/main.go b/13-loops/exercises/09-lucky-number-exercises/04-verbose-mode/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/04-verbose-mode/main.go rename to 13-loops/exercises/09-lucky-number-exercises/04-verbose-mode/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/04-verbose-mode/solution/main.go b/13-loops/exercises/09-lucky-number-exercises/04-verbose-mode/solution/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/04-verbose-mode/solution/main.go rename to 13-loops/exercises/09-lucky-number-exercises/04-verbose-mode/solution/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/05-enough-picks/main.go b/13-loops/exercises/09-lucky-number-exercises/05-enough-picks/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/05-enough-picks/main.go rename to 13-loops/exercises/09-lucky-number-exercises/05-enough-picks/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/05-enough-picks/solution/main.go b/13-loops/exercises/09-lucky-number-exercises/05-enough-picks/solution/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/05-enough-picks/solution/main.go rename to 13-loops/exercises/09-lucky-number-exercises/05-enough-picks/solution/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/06-dynamic-difficulty/main.go b/13-loops/exercises/09-lucky-number-exercises/06-dynamic-difficulty/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/06-dynamic-difficulty/main.go rename to 13-loops/exercises/09-lucky-number-exercises/06-dynamic-difficulty/main.go diff --git a/13-loops/exercises/02-lucky-number-exercises/06-dynamic-difficulty/solution/main.go b/13-loops/exercises/09-lucky-number-exercises/06-dynamic-difficulty/solution/main.go similarity index 100% rename from 13-loops/exercises/02-lucky-number-exercises/06-dynamic-difficulty/solution/main.go rename to 13-loops/exercises/09-lucky-number-exercises/06-dynamic-difficulty/solution/main.go diff --git a/13-loops/exercises/03-word-finder-exercises/01-case-insensitive/main.go b/13-loops/exercises/10-word-finder-exercises/01-case-insensitive/main.go similarity index 100% rename from 13-loops/exercises/03-word-finder-exercises/01-case-insensitive/main.go rename to 13-loops/exercises/10-word-finder-exercises/01-case-insensitive/main.go diff --git a/13-loops/exercises/03-word-finder-exercises/01-case-insensitive/solution/main.go b/13-loops/exercises/10-word-finder-exercises/01-case-insensitive/solution/main.go similarity index 100% rename from 13-loops/exercises/03-word-finder-exercises/01-case-insensitive/solution/main.go rename to 13-loops/exercises/10-word-finder-exercises/01-case-insensitive/solution/main.go diff --git a/13-loops/exercises/03-word-finder-exercises/02-path-searcher/main.go b/13-loops/exercises/10-word-finder-exercises/02-path-searcher/main.go similarity index 100% rename from 13-loops/exercises/03-word-finder-exercises/02-path-searcher/main.go rename to 13-loops/exercises/10-word-finder-exercises/02-path-searcher/main.go diff --git a/13-loops/exercises/03-word-finder-exercises/02-path-searcher/solution/main.go b/13-loops/exercises/10-word-finder-exercises/02-path-searcher/solution/main.go similarity index 100% rename from 13-loops/exercises/03-word-finder-exercises/02-path-searcher/solution/main.go rename to 13-loops/exercises/10-word-finder-exercises/02-path-searcher/solution/main.go diff --git a/13-loops/exercises/README.md b/13-loops/exercises/README.md new file mode 100644 index 0000000..6b21d08 --- /dev/null +++ b/13-loops/exercises/README.md @@ -0,0 +1,3 @@ +There are 17 exercises in this section. + +You can find them inside the subdirectories. \ No newline at end of file diff --git a/13-loops/exercises/more-exercises.md b/13-loops/exercises/more-exercises.md deleted file mode 100644 index 925fd5c..0000000 --- a/13-loops/exercises/more-exercises.md +++ /dev/null @@ -1,2 +0,0 @@ -**You can also find more exercises here:** -* https://www.rosettacode.org/wiki/Category:Iteration \ No newline at end of file