add: slice internals backing array and slice header
This commit is contained in:
52
16-slices/exercises/17-internals-backing-array-sort/main.go
Normal file
52
16-slices/exercises/17-internals-backing-array-sort/main.go
Normal file
@ -0,0 +1,52 @@
|
||||
// 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"
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// EXERCISE: Sort the backing array
|
||||
//
|
||||
// 1. Sort only the middle 3 items.
|
||||
//
|
||||
// 2. All the slices should see your change.
|
||||
//
|
||||
//
|
||||
// RESTRICTION
|
||||
//
|
||||
// Do not sort manually. Sort by slicing then by using the sort package.
|
||||
//
|
||||
//
|
||||
// EXPECTED OUTPUT
|
||||
//
|
||||
// Original: [pacman mario tetris doom galaga frogger asteroids simcity metroid defender rayman tempest ultima]
|
||||
//
|
||||
// Sorted : [pacman mario tetris doom galaga asteroids frogger simcity metroid defender rayman tempest ultima]
|
||||
//
|
||||
//
|
||||
// HINT:
|
||||
//
|
||||
// Middle items are : [frogger asteroids simcity]
|
||||
//
|
||||
// After sorting they become: [asteroids frogger simcity]
|
||||
//
|
||||
// ---------------------------------------------------------
|
||||
|
||||
func main() {
|
||||
items := []string{
|
||||
"pacman", "mario", "tetris", "doom", "galaga", "frogger",
|
||||
"asteroids", "simcity", "metroid", "defender", "rayman",
|
||||
"tempest", "ultima",
|
||||
}
|
||||
|
||||
fmt.Println("Original:", items)
|
||||
fmt.Println()
|
||||
fmt.Println("Sorted :", items)
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
// 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"
|
||||
"sort"
|
||||
)
|
||||
|
||||
func main() {
|
||||
items := []string{
|
||||
"pacman", "mario", "tetris", "doom", "galaga", "frogger",
|
||||
"asteroids", "simcity", "metroid", "defender", "rayman",
|
||||
"tempest", "ultima",
|
||||
}
|
||||
|
||||
fmt.Println("Original:", items)
|
||||
|
||||
mid := len(items) / 2
|
||||
smid := items[mid-1 : mid+2]
|
||||
|
||||
// sorting the smid will affect the items
|
||||
// as well. their backing array is the same.
|
||||
sort.Strings(smid)
|
||||
|
||||
fmt.Println()
|
||||
fmt.Println("Sorted :", items)
|
||||
}
|
Reference in New Issue
Block a user