add: array exercises
This commit is contained in:
		@@ -1,15 +0,0 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
// EXERCISE: Name
 | 
			
		||||
//  ?
 | 
			
		||||
//
 | 
			
		||||
// NOTE
 | 
			
		||||
//  ?
 | 
			
		||||
//
 | 
			
		||||
// EXPECTED OUTPUT
 | 
			
		||||
//  ?
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								14-arrays/exercises/05-fix/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								14-arrays/exercises/05-fix/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								14-arrays/exercises/05-fix/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								14-arrays/exercises/05-fix/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								14-arrays/exercises/06-compare/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								14-arrays/exercises/06-compare/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								14-arrays/exercises/06-compare/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								14-arrays/exercises/06-compare/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31
									
								
								14-arrays/exercises/07-assign/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								14-arrays/exercises/07-assign/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								14-arrays/exercises/07-assign/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								14-arrays/exercises/07-assign/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								14-arrays/exercises/08-wizard-printer/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								14-arrays/exercises/08-wizard-printer/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								14-arrays/exercises/08-wizard-printer/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								14-arrays/exercises/08-wizard-printer/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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))
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										41
									
								
								14-arrays/exercises/09-currency-converter/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								14-arrays/exercises/09-currency-converter/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								14-arrays/exercises/09-currency-converter/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								14-arrays/exercises/09-currency-converter/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								14-arrays/exercises/10-hipsters-love-search/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								14-arrays/exercises/10-hipsters-love-search/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
@@ -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)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								14-arrays/exercises/11-average/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								14-arrays/exercises/11-average/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								14-arrays/exercises/11-average/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								14-arrays/exercises/11-average/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										41
									
								
								14-arrays/exercises/12-sorter/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								14-arrays/exercises/12-sorter/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								14-arrays/exercises/12-sorter/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								14-arrays/exercises/12-sorter/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								14-arrays/exercises/13-word-finder/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								14-arrays/exercises/13-word-finder/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								14-arrays/exercises/13-word-finder/solution/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								14-arrays/exercises/13-word-finder/solution/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -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)**
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user