diff --git a/14-arrays/05-array-literal-example/main.go b/14-arrays/05-examples-3-hipsters-love-bookstore/main.go similarity index 100% rename from 14-arrays/05-array-literal-example/main.go rename to 14-arrays/05-examples-3-hipsters-love-bookstore/main.go diff --git a/14-arrays/TODO.md b/14-arrays/TODO.md deleted file mode 100644 index c7884c9..0000000 --- a/14-arrays/TODO.md +++ /dev/null @@ -1,2 +0,0 @@ -- [ ] add challenge link to the moodly's resources -- [ ] add exercises 1 and 2 after the array basics quiz \ No newline at end of file diff --git a/14-arrays/exercises/00-name/main.go b/14-arrays/exercises/00-name/main.go deleted file mode 100644 index 7dd4f79..0000000 --- a/14-arrays/exercises/00-name/main.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -// --------------------------------------------------------- -// EXERCISE: Name -// ? -// -// NOTE -// ? -// -// EXPECTED OUTPUT -// ? -// --------------------------------------------------------- - -func main() { -} diff --git a/14-arrays/exercises/00-name/solution/main.go b/14-arrays/exercises/00-name/solution/main.go deleted file mode 100644 index da29a2c..0000000 --- a/14-arrays/exercises/00-name/solution/main.go +++ /dev/null @@ -1,4 +0,0 @@ -package main - -func main() { -} diff --git a/14-arrays/exercises/05-fix/main.go b/14-arrays/exercises/05-fix/main.go new file mode 100644 index 0000000..913a1db --- /dev/null +++ b/14-arrays/exercises/05-fix/main.go @@ -0,0 +1,27 @@ +package main + +// --------------------------------------------------------- +// EXERCISE: Fix +// +// 1. Uncomment the code +// 2. And fix the problems +// 3. BONUS: Simplify the code +// --------------------------------------------------------- + +func main() { + // var names [3]string = [3]string{ + // "Einstein" "Shepard" + // "Tesla" + // } + + // var books [5]string = [5]string{ + // "Kafka's Revenge", + // "Stay Golden", + // "", + // "", + // "" + // } + + // fmt.Printf("%q\n", names) + // fmt.Printf("%q\n", books) +} diff --git a/14-arrays/exercises/05-fix/solution/main.go b/14-arrays/exercises/05-fix/solution/main.go new file mode 100644 index 0000000..5a0ff7c --- /dev/null +++ b/14-arrays/exercises/05-fix/solution/main.go @@ -0,0 +1,11 @@ +package main + +import "fmt" + +func main() { + names := [...]string{"Einstein", "Shepard", "Tesla"} + books := [5]string{"Kafka's Revenge", "Stay Golden"} + + fmt.Printf("%q\n", names) + fmt.Printf("%q\n", books) +} diff --git a/14-arrays/exercises/06-compare/main.go b/14-arrays/exercises/06-compare/main.go new file mode 100644 index 0000000..15b2b2d --- /dev/null +++ b/14-arrays/exercises/06-compare/main.go @@ -0,0 +1,34 @@ +package main + +import "fmt" + +// --------------------------------------------------------- +// EXERCISE: Compare the Arrays +// +// 1. Uncomment the code +// 2. Fix the problems so that arrays become comparable +// +// EXPECTED OUTPUT +// true +// true +// false +// --------------------------------------------------------- + +func main() { + // week := [...]string{"Monday", "Tuesday"} + // wend := [4]string{"Saturday", "Sunday"} + + // fmt.Println(week != wend) + + // evens := [...]int{2, 4, 6, 8, 10} + // evens2 := [...]int32{2, 4, 6, 8, 10} + + // fmt.Println(evens == evens2) + + // Use : uint8 for one of the arrays instead of byte here. + // Remember: Aliased types are the same types. + image := [5]byte{'h', 'i'} + var data [5]byte + + fmt.Println(data == image) +} diff --git a/14-arrays/exercises/06-compare/solution/main.go b/14-arrays/exercises/06-compare/solution/main.go new file mode 100644 index 0000000..b42c9a1 --- /dev/null +++ b/14-arrays/exercises/06-compare/solution/main.go @@ -0,0 +1,22 @@ +package main + +import "fmt" + +func main() { + week := [...]string{"Monday", "Tuesday"} + wend := [...]string{"Saturday", "Sunday"} + + fmt.Println(week != wend) + + evens := [...]int{2, 4, 6, 8, 10} + evens2 := [...]int{2, 4, 6, 8, 10} + + fmt.Println(evens == evens2) + + // Use : uint8 for one of the arrays instead of byte here. + // Remember: Aliased types are the same types. + image := [5]uint8{'h', 'i'} + var data [5]byte + + fmt.Println(data == image) +} diff --git a/14-arrays/exercises/07-assign/main.go b/14-arrays/exercises/07-assign/main.go new file mode 100644 index 0000000..cc84f9d --- /dev/null +++ b/14-arrays/exercises/07-assign/main.go @@ -0,0 +1,31 @@ +package main + +// --------------------------------------------------------- +// EXERCISE: Assign the Arrays +// +// 1. Create an array named books +// 2. Add book titles to the array +// 3. Create two more copies of the array named: upper and lower +// 4. Change the book titles to uppercase in the upper array only +// 5. Change the book titles to lowercase in the lower array only +// 6. Print all the arrays +// 7. Observe that the arrays are not connected when they're copied. +// +// NOTE +// Check out the strings package, it has functions to convert letters to +// upper and lower cases. +// +// BONUS +// Invent your own arrays with different types other than string, +// and do some manipulations on them. +// +// EXPECTED OUTPUT +// Note: Don't worry about the book titles here, you can use any title. +// +// books: ["Kafka's Revenge" "Stay Golden" "Everythingship"] +// upper: ["KAFKA'S REVENGE" "STAY GOLDEN" "EVERYTHINGSHIP"] +// lower: ["kafka's revenge" "stay golden" "everythingship"] +// --------------------------------------------------------- + +func main() { +} diff --git a/14-arrays/exercises/07-assign/solution/main.go b/14-arrays/exercises/07-assign/solution/main.go new file mode 100644 index 0000000..532327e --- /dev/null +++ b/14-arrays/exercises/07-assign/solution/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + books := [...]string{"Kafka's Revenge", "Stay Golden", "Everythingship"} + + upper, lower := books, books + + for i := range books { + upper[i] = strings.ToUpper(upper[i]) + lower[i] = strings.ToLower(lower[i]) + } + + fmt.Printf("books: %q\n", books) + fmt.Printf("upper: %q\n", upper) + fmt.Printf("lower: %q\n", lower) +} diff --git a/14-arrays/exercises/08-wizard-printer/main.go b/14-arrays/exercises/08-wizard-printer/main.go new file mode 100644 index 0000000..e38076e --- /dev/null +++ b/14-arrays/exercises/08-wizard-printer/main.go @@ -0,0 +1,25 @@ +package main + +// --------------------------------------------------------- +// EXERCISE: Wizard Printer +// +// In this exercise, your goal is to display a few famous scientists +// in a pretty table. +// +// 1. Create a multi-dimensional array +// 2. In each inner array, store the scientist's name, lastname and his/her +// nickname +// 3. Print their information in a pretty table using a loop. +// +// EXPECTED OUTPUT +// First Name Last Name Nickname +// ================================================== +// Albert Einstein time +// Isaac Newton apple +// Stephen Hawking blackhole +// Marie Curie radium +// Charles Darwin fittest +// --------------------------------------------------------- + +func main() { +} diff --git a/14-arrays/exercises/08-wizard-printer/solution/main.go b/14-arrays/exercises/08-wizard-printer/solution/main.go new file mode 100644 index 0000000..f5cf29c --- /dev/null +++ b/14-arrays/exercises/08-wizard-printer/solution/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + names := [...][3]string{ + {"First Name", "Last Name", "Nickname"}, + {"Albert", "Einstein", "emc2"}, + {"Isaac", "Newton", "apple"}, + {"Stephen", "Hawking", "blackhole"}, + {"Marie", "Curie", "radium"}, + {"Charles", "Darwin", "fittest"}, + } + + for i := range names { + n := names[i] + fmt.Printf("%-15s %-15s %-15s\n", n[0], n[1], n[2]) + + if i == 0 { + fmt.Println(strings.Repeat("=", 50)) + } + } +} diff --git a/14-arrays/exercises/09-currency-converter/main.go b/14-arrays/exercises/09-currency-converter/main.go new file mode 100644 index 0000000..9dd5993 --- /dev/null +++ b/14-arrays/exercises/09-currency-converter/main.go @@ -0,0 +1,41 @@ +package main + +// --------------------------------------------------------- +// EXERCISE: Currency Converter +// +// In this exercise, you're going to display currency exchange ratios +// against USD. +// +// 1. Declare a few constants with iota. They're going to be the keys +// of the array. +// +// 2. Create an array that contains the conversion ratios. +// +// You should use keyed elements and the contants you've declared before. +// +// 3. Get the USD amount to be converted from the command line. +// +// 4. Handle the error cases for missing or invalid input. +// +// 5. Print the exchange ratios. +// +// EXPECTED OUTPUT +// go run main.go +// Please provide the amount to be converted. +// +// go run main.go invalid +// Invalid amount. It should be a number. +// +// go run main.go 10.5 +// 10.50 USD is 9.24 EUR +// 10.50 USD is 8.19 GBP +// 10.50 USD is 1186.71 JPY +// +// go run main.go 1 +// 1.00 USD is 0.88 EUR +// 1.00 USD is 0.78 GBP +// 1.00 USD is 113.02 JPY +// --------------------------------------------------------- + +func main() { +} diff --git a/14-arrays/exercises/09-currency-converter/solution/main.go b/14-arrays/exercises/09-currency-converter/solution/main.go new file mode 100644 index 0000000..09e9a21 --- /dev/null +++ b/14-arrays/exercises/09-currency-converter/solution/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "os" + "strconv" +) + +func main() { + const ( + EUR = iota + GBP + JPY + ) + + rates := [...]float64{ + EUR: 0.88, + GBP: 0.78, + JPY: 113.02, + } + + args := os.Args[1:] + if len(args) != 1 { + fmt.Println("Please provide the amount to be converted.") + return + } + + amount, err := strconv.ParseFloat(args[0], 64) + if err != nil { + fmt.Println("Invalid amount. It should be a number.") + return + } + + fmt.Printf("%.2f USD is %.2f EUR\n", amount, rates[EUR]*amount) + fmt.Printf("%.2f USD is %.2f GBP\n", amount, rates[GBP]*amount) + fmt.Printf("%.2f USD is %.2f JPY\n", amount, rates[JPY]*amount) +} diff --git a/14-arrays/exercises/0x-hipsters-love-search/main.go b/14-arrays/exercises/0x-hipsters-love-search/main.go deleted file mode 100644 index 356105b..0000000 --- a/14-arrays/exercises/0x-hipsters-love-search/main.go +++ /dev/null @@ -1,24 +0,0 @@ -// 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 - -// search for books in hipster's love - -// --------------------------------------------------------- -// EXERCISE: Name -// ? -// -// NOTE -// ? -// -// EXPECTED OUTPUT -// ? -// --------------------------------------------------------- - -func main() { -} diff --git a/14-arrays/exercises/10-hipsters-love-search/main.go b/14-arrays/exercises/10-hipsters-love-search/main.go new file mode 100644 index 0000000..da8496a --- /dev/null +++ b/14-arrays/exercises/10-hipsters-love-search/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: Hipster's Love Search Engine +// +// Your goal is to let people search for books of Hipster's Love Bookstore. +// +// 1. Create an array with these book titles: +// Kafka's Revenge +// Stay Golden +// Everythingship +// Kafka's Revenge 2nd Edition +// +// 2. Get the search query from the command-line argument +// +// 3. Search for the books in the books array +// +// 4. When the programs find the book, print it. +// 5. Otherwise, print that the book doesn't exist. +// +// 6. Handle the errors. +// +// RESTRICTION: +// + The search should be case insensitive. +// +// EXPECTED OUTPUT +// go run main.go +// Tell me a book title +// +// go run main.go STAY +// Search Results: +// + Stay Golden +// +// go run main.go sTaY +// Search Results: +// + Stay Golden +// +// go run main.go "Kafka's Revenge" +// Search Results: +// + Kafka's Revenge +// + Kafka's Revenge 2nd Edition +// +// go run main.go void +// Search Results: +// We don't have the book: "void" +// --------------------------------------------------------- + +func main() { +} diff --git a/14-arrays/exercises/0x-hipsters-love-search/solution/main.go b/14-arrays/exercises/10-hipsters-love-search/solution/main.go similarity index 62% rename from 14-arrays/exercises/0x-hipsters-love-search/solution/main.go rename to 14-arrays/exercises/10-hipsters-love-search/solution/main.go index 8e0a074..24ec793 100644 --- a/14-arrays/exercises/0x-hipsters-love-search/solution/main.go +++ b/14-arrays/exercises/10-hipsters-love-search/solution/main.go @@ -13,27 +13,24 @@ import ( "strings" ) -const yearly = 4 - func main() { - var books [yearly]string + books := [4]string{ + "Kafka's Revenge", + "Stay Golden", + "Everythingship", + "Kafka's Revenge 2nd Edition", + } - books[0] = "Kafka's Revenge" - books[1] = "Stay Golden" - books[2] = "Everythingship" - books[3] += books[0] + " 2nd Edition" - - if len(os.Args) != 2 { + args := os.Args[1:] + if len(args) != 1 { fmt.Println("Tell me a book title") return } - query := os.Args[1] + query := strings.ToLower(args[0]) fmt.Println("Search Results:") - fmt.Println("---------------") var found bool - for _, v := range books { if strings.Contains(strings.ToLower(v), query) { fmt.Println("+", v) @@ -42,6 +39,6 @@ func main() { } if !found { - fmt.Printf("We don't have that book: %q\n", query) + fmt.Printf("We don't have the book: %q\n", query) } } diff --git a/14-arrays/exercises/11-average/main.go b/14-arrays/exercises/11-average/main.go new file mode 100644 index 0000000..3cbe99e --- /dev/null +++ b/14-arrays/exercises/11-average/main.go @@ -0,0 +1,42 @@ +// 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: Find the Average +// +// Your goal is to fill an array with numbers and find the average. +// +// 1. Get the numbers from the command-line. +// +// 2. Create an array and assign the given numbers to that array. +// +// 3. Print the given numbers and their average. +// +// RESTRICTION +// + Maximum 5 numbers can be provided +// + If one of the arguments are not a valid number, skip it +// +// EXPECTED OUTPUT +// go run main.go +// Please tell me numbers (maximum 5 numbers). +// +// go run main.go 1 2 3 4 5 6 +// Please tell me numbers (maximum 5 numbers). +// +// go run main.go 1 2 3 4 5 +// Your numbers: [1 2 3 4 5] +// Average: 3 +// +// go run main.go 1 a 2 b 3 +// Your numbers: [1 0 2 0 3] +// Average: 2 +// --------------------------------------------------------- + +func main() { +} diff --git a/14-arrays/exercises/11-average/solution/main.go b/14-arrays/exercises/11-average/solution/main.go new file mode 100644 index 0000000..fb21a24 --- /dev/null +++ b/14-arrays/exercises/11-average/solution/main.go @@ -0,0 +1,42 @@ +// 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[1:] + if l := len(args); l == 0 || l > 5 { + fmt.Println("Please tell me numbers (maximum 5 numbers).") + return + } + + var ( + sum float64 + nums [5]float64 + total float64 + ) + + for i, v := range args { + n, err := strconv.ParseFloat(v, 64) + if err != nil { + continue + } + + total++ + nums[i] = n + sum += n + } + + fmt.Println("Your numbers:", nums) + fmt.Println("Average:", sum/total) +} diff --git a/14-arrays/exercises/12-sorter/main.go b/14-arrays/exercises/12-sorter/main.go new file mode 100644 index 0000000..59acf01 --- /dev/null +++ b/14-arrays/exercises/12-sorter/main.go @@ -0,0 +1,41 @@ +package main + +// --------------------------------------------------------- +// EXERCISE: Number Sorter +// +// Your goal is to sort the given numbers from the command-line. +// +// 1. Get the numbers from the command-line. +// +// 2. Create an array and assign the given numbers to that array. +// +// 3. Sort the given numbers and print them. +// +// RESTRICTION +// + Maximum 5 numbers can be provided +// + If one of the arguments are not a valid number, skip it +// +// HINTS +// + You can use the bubble-sort algorithm to sort the numbers. +// Please watch this: https://youtu.be/nmhjrI-aW5o?t=7 +// +// + When swapping for elements, do not check for the last element. +// Or, you will receive this error: +// "panic: runtime error: index out of range" +// +// EXPECTED OUTPUT +// go run main.go +// Please give me up to 5 numbers. +// +// go run main.go 6 5 4 3 2 1 +// Sorry. Go arrays are fixed. So, for now, I'm only supporting sorting 5 numbers... +// +// go run main.go 5 4 3 2 1 +// [1 2 3 4 5] +// +// go run main.go 5 4 a c 1 +// [0 0 1 4 5] +// --------------------------------------------------------- + +func main() { +} diff --git a/14-arrays/exercises/12-sorter/solution/main.go b/14-arrays/exercises/12-sorter/solution/main.go new file mode 100644 index 0000000..8dd2b5a --- /dev/null +++ b/14-arrays/exercises/12-sorter/solution/main.go @@ -0,0 +1,58 @@ +// 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[1:] + + switch l := len(args); { + case l == 0: + fmt.Println("Please give me up to 5 numbers.") + return + case l > 5: + fmt.Println("Sorry. Go arrays are fixed.", + "So, for now, I'm only supporting sorting 5 numbers...") + return + } + + var nums [5]float64 + + // fill the array with the numbers + for i, v := range args { + n, err := strconv.ParseFloat(v, 64) + if err != nil { + // skip if it's not a valid number + continue + } + + nums[i] = n + } + + /* + check whether it's the last element or not: + i < len(nums)-1 + + check whether the next number is greater than the current one, if so, swap it: + v > nums[i+1] + */ + for range nums { + for i, v := range nums { + if i < len(nums)-1 && v > nums[i+1] { + nums[i], nums[i+1] = nums[i+1], nums[i] + } + } + } + + fmt.Println(nums) +} diff --git a/14-arrays/exercises/13-word-finder/main.go b/14-arrays/exercises/13-word-finder/main.go new file mode 100644 index 0000000..2c1b6d5 --- /dev/null +++ b/14-arrays/exercises/13-word-finder/main.go @@ -0,0 +1,48 @@ +package main + +// --------------------------------------------------------- +// EXERCISE: Word Finder +// +// Your goal is to search for the words inside the corpus. +// +// Note: This exercise is similar to the previous word finder program: +// https://github.com/inancgumus/learngo/tree/master/13-loops/10-word-finder-labeled-switch +// +// 1. Get the search query from the command-line (it can be multiple words) +// +// 2. Filter these words, do not search for them: +// and, or, was, the, since, very +// +// To do this, use an array for the filtered words. +// +// 3. Print the words found. +// +// RESTRICTION +// + The search and the filtering should be case insensitive +// +// HINT +// + strings.Fields function converts a given string a slice. +// You can find its example in the worder finder program that I've mentioned +// above. +// +// EXPECTED OUTPUT +// go run main.go +// Please give me a word to search. +// +// go run main.go and was +// +// go run main.go AND WAS +// +// go run main.go cat beginning +// #2 : "cat" +// #11: "beginning" +// +// go run main.go Cat Beginning +// #2 : "cat" +// #11: "beginning" +// --------------------------------------------------------- + +const corpus = "lazy cat jumps again and again and again since the beginning this was very important" + +func main() { +} diff --git a/14-arrays/exercises/13-word-finder/solution/main.go b/14-arrays/exercises/13-word-finder/solution/main.go new file mode 100644 index 0000000..96bb780 --- /dev/null +++ b/14-arrays/exercises/13-word-finder/solution/main.go @@ -0,0 +1,48 @@ +// 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" + "strings" +) + +const corpus = "lazy cat jumps again and again and again since the beginning this was very important" + +func main() { + query := os.Args[1:] + if len(query) == 0 { + fmt.Println("Please give me a word to search.") + return + } + + filter := [...]string{ + "and", "or", "was", "the", "since", "very", + } + + words := strings.Fields(strings.ToLower(corpus)) + +queries: + for _, q := range query { + q = strings.ToLower(q) + + for _, v := range filter { + if q == v { + continue queries + } + } + + for i, w := range words { + if q == w { + fmt.Printf("#%-2d: %q\n", i+1, w) + break + } + } + } +} diff --git a/14-arrays/exercises/IDEAS.md b/14-arrays/exercises/IDEAS.md deleted file mode 100644 index 6b28c65..0000000 --- a/14-arrays/exercises/IDEAS.md +++ /dev/null @@ -1,13 +0,0 @@ -# Array Exercises - -- get data from command-line - - into a fixed array; see how it blows beyond its len - -- add items -- get items -- check the length -- reverse the array -- shuffle the items -- find the first item that contains x -- find the last item that contains y -- find the duplicate items diff --git a/14-arrays/exercises/README.md b/14-arrays/exercises/README.md index f7e2b4a..4484db4 100644 --- a/14-arrays/exercises/README.md +++ b/14-arrays/exercises/README.md @@ -1,6 +1,6 @@ # Array Exercises -## Basic Exercises +## Exercises Level I - Basics 1. **[Declare Empty Arrays](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/01-declare-empty)** @@ -10,10 +10,24 @@ 4. **[Refactor to Ellipsis](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/04-ellipsis)** +5. **[Fix](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/05-fix)** + +6. **[Compare the Arrays](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/06-compare)** + +7. **[Assign the Arrays](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/07-assign)** + --- -## Program Exercises +## Exercises Level II -????. **[text](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/)** +1. **[Wizard Printer](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/08-wizard-printer)** - ? +2. **[Currency Converter](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/09-currency-converter)** + +3. **[Hipster's Bookstore Search Engine](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/10-hipsters-love-search)** + +4. **[Find the Average](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/11-average)** + +5. **[Number Sorter](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/12-sorter)** + +6. **[Word Finder](https://github.com/inancgumus/learngo/tree/master/14-arrays/exercises/13-word-finder)** diff --git a/etc/stratch/main.go b/etc/stratch/main.go index 31fcc05..da29a2c 100644 --- a/etc/stratch/main.go +++ b/etc/stratch/main.go @@ -1,42 +1,4 @@ package main -import "fmt" - func main() { - students := [...][3]float64{ - {5, 6, 1}, - {9, 8, 4}, - } - - var sum float64 - for _, grades := range students { - for _, grade := range grades { - sum += grade - } - } - - const N = float64(len(students) * len(students[0])) - fmt.Printf("Avg Grade: %g\n", sum/N) - - // students := [2][3]float64{ - // [3]float64{5, 6, 1}, - // [3]float64{9, 8, 4}, - // } - - // var sum float64 - // sum += students[0][0] + students[0][1] + students[0][2] - // sum += students[1][0] + students[1][1] + students[1][2] - - // const N = float64(len(students) * len(students[0])) - // fmt.Printf("Avg Grade: %g\n", sum/N) - - // student1 := [3]float64{5, 6, 1} - // student2 := [3]float64{9, 8, 4} - - // var sum float64 - // sum += student1[0] + student1[1] + student1[2] - // sum += student2[0] + student2[1] + student2[2] - - // const N = float64(len(student1) * 2) - // fmt.Printf("Avg Grade: %g\n", sum/N) } diff --git a/x-tba/17-strings-revisited/exercises/_exp/fromarrays/main.go b/x-tba/17-strings-revisited/exercises/_exp/fromarrays/main.go new file mode 100644 index 0000000..8aeed53 --- /dev/null +++ b/x-tba/17-strings-revisited/exercises/_exp/fromarrays/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "fmt" + "strings" +) + +// --------------------------------------------------------- +// EXERCISE: Assign the Arrays +// +// 1. Create an array named books +// 2. Add book titles to the array +// 3. Create two more copies of the array named: upper and lower +// 4. Change the book titles to uppercase in the upper array only +// 5. Change the book titles to lowercase in the lower array only +// 6. Print all the arrays +// +// NOTE +// Check out the strings package, it has function to convert cases to +// upper and lower cases. +// +// BONUS +// 1. Invent your own arrays with different types other than string, +// and do some manipulations on them. +// +// 👉 THISSSS-------------------------------------------------------- +// 2. Find some Turkish book titles and do the same upper, lowercase conversion +// for them. +// +// Here are some books: https://www.goodreads.com/group/bookshelf/417154-bilimkurgu-kul-b?shelf=read +// +// Note: You'd need to use special functions to convert the Turkish letters. +// They're in the strings package as well. +// +// EXPECTED OUTPUT +// ? +// --------------------------------------------------------- + +func main() { + books := [...]string{"Kafka's Revenge", "Stay Golden", "Everythingship"} + + upper, lower := books, books + + for i := range books { + upper[i] = strings.ToUpper(upper[i]) + lower[i] = strings.ToLower(lower[i]) + } + + fmt.Printf("books: %q\n", books) + fmt.Printf("upper: %q\n", upper) + fmt.Printf("lower: %q\n", lower) +}