refactor: slices 26th exercise
This commit is contained in:
		@@ -13,24 +13,22 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	//
 | 
			
		||||
	// DAILY REQUESTS DATA
 | 
			
		||||
	//
 | 
			
		||||
	reqs := []int{
 | 
			
		||||
		500, 600, 250,
 | 
			
		||||
		200, 400, 50,
 | 
			
		||||
		900, 800, 600,
 | 
			
		||||
		750, 250, 100,
 | 
			
		||||
		100, 150,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//
 | 
			
		||||
	// There are 3 requests per day
 | 
			
		||||
	//
 | 
			
		||||
	// There are 3 request totals per day
 | 
			
		||||
	const N = 3
 | 
			
		||||
 | 
			
		||||
	// DAILY REQUESTS DATA (PER 8-HOUR)
 | 
			
		||||
	reqs := []int{
 | 
			
		||||
		500, 600, 250, // 1st day
 | 
			
		||||
		200, 400, 50, // 2nd day
 | 
			
		||||
		900, 800, 600, // 3rd day
 | 
			
		||||
		750, 250, 100, // 4th day
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// ================================================
 | 
			
		||||
	// Allocate a slice efficiently with the exact size needed.
 | 
			
		||||
	//
 | 
			
		||||
	// Allocate the slice efficiently with the exact size needed
 | 
			
		||||
	// Find the `size` automatically using the `reqs` slice.
 | 
			
		||||
	// Do not type it manually.
 | 
			
		||||
	//
 | 
			
		||||
	l := len(reqs)
 | 
			
		||||
	size := l / N
 | 
			
		||||
@@ -38,44 +36,49 @@ func main() {
 | 
			
		||||
		size++
 | 
			
		||||
	}
 | 
			
		||||
	daily := make([][]int, 0, size)
 | 
			
		||||
	//
 | 
			
		||||
	// ================================================
 | 
			
		||||
 | 
			
		||||
	// ================================================
 | 
			
		||||
	// Group the `reqs` per day into the slice: `daily`.
 | 
			
		||||
	//
 | 
			
		||||
	// Group the `reqs` per day into a slice named: `daily`
 | 
			
		||||
	// So the daily will be:
 | 
			
		||||
	// [
 | 
			
		||||
	//  [500, 600, 250]
 | 
			
		||||
	//  [200, 400, 50]
 | 
			
		||||
	//  [900, 800, 600]
 | 
			
		||||
	//  [750, 250, 100]
 | 
			
		||||
	// ]
 | 
			
		||||
	//
 | 
			
		||||
	for N < len(reqs) {
 | 
			
		||||
		daily = append(daily, reqs[:N]) // add the current batch of nums to the `groups`
 | 
			
		||||
		reqs = reqs[N:]                 // move the slice pointer for the next batch
 | 
			
		||||
	for N <= len(reqs) {
 | 
			
		||||
		daily = append(daily, reqs[:N]) // append the daily requests
 | 
			
		||||
		reqs = reqs[N:]                 // move the slice pointer for the next day
 | 
			
		||||
	}
 | 
			
		||||
	// ================================================
 | 
			
		||||
 | 
			
		||||
	//
 | 
			
		||||
	// Add the residual elements to the group (len(reqs) % N)
 | 
			
		||||
	//
 | 
			
		||||
	daily = append(daily, reqs)
 | 
			
		||||
	// ================================================
 | 
			
		||||
	// Don't touch the following code:
 | 
			
		||||
 | 
			
		||||
	//
 | 
			
		||||
	// Print the header:
 | 
			
		||||
	//
 | 
			
		||||
	// Print the header
 | 
			
		||||
	fmt.Printf("%-10s%-10s\n", "Day", "Requests")
 | 
			
		||||
	fmt.Println(strings.Repeat("=", 20))
 | 
			
		||||
 | 
			
		||||
	//
 | 
			
		||||
	// Print the data per day along with the totals:
 | 
			
		||||
	//
 | 
			
		||||
	// Print the data per day along with the totals
 | 
			
		||||
	var grand int
 | 
			
		||||
 | 
			
		||||
	for i, d := range daily {
 | 
			
		||||
	for i, day := range daily {
 | 
			
		||||
		var sum int
 | 
			
		||||
 | 
			
		||||
		for _, q := range d {
 | 
			
		||||
			sum += q
 | 
			
		||||
			fmt.Printf("%-10d%-10d\n", i+1, q)
 | 
			
		||||
		for _, req := range day {
 | 
			
		||||
			sum += req
 | 
			
		||||
			fmt.Printf("%-10d%-10d\n", i+1, req)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fmt.Println(strings.Repeat("-", 20))
 | 
			
		||||
		fmt.Printf("%10s%-10d\n\n", "", sum)
 | 
			
		||||
		fmt.Printf("%9s %-10d\n\n", "TOTAL:", sum)
 | 
			
		||||
 | 
			
		||||
		grand += sum
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Printf("%10s%-10d\n", "", grand)
 | 
			
		||||
	fmt.Printf("%9s %-10d\n", "GRAND:", grand)
 | 
			
		||||
	// ================================================
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user