82 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|   | // 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" | ||
|  | 	"strings" | ||
|  | ) | ||
|  | 
 | ||
|  | 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 | ||
|  | 	// | ||
|  | 	const N = 3 | ||
|  | 
 | ||
|  | 	// | ||
|  | 	// Allocate the slice efficiently with the exact size needed | ||
|  | 	// | ||
|  | 	l := len(reqs) | ||
|  | 	size := l / N | ||
|  | 	if l%N != 0 { | ||
|  | 		size++ | ||
|  | 	} | ||
|  | 	daily := make([][]int, 0, size) | ||
|  | 
 | ||
|  | 	// | ||
|  | 	// Group the `reqs` per day into a slice named: `daily` | ||
|  | 	// | ||
|  | 	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 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// | ||
|  | 	// Add the residual elements to the group (len(reqs) % N) | ||
|  | 	// | ||
|  | 	daily = append(daily, reqs) | ||
|  | 
 | ||
|  | 	// | ||
|  | 	// Print the header: | ||
|  | 	// | ||
|  | 	fmt.Printf("%-10s%-10s\n", "Day", "Requests") | ||
|  | 	fmt.Println(strings.Repeat("=", 20)) | ||
|  | 
 | ||
|  | 	// | ||
|  | 	// Print the data per day along with the totals: | ||
|  | 	// | ||
|  | 	var grand int | ||
|  | 
 | ||
|  | 	for i, d := range daily { | ||
|  | 		var sum int | ||
|  | 
 | ||
|  | 		for _, q := range d { | ||
|  | 			sum += q | ||
|  | 			fmt.Printf("%-10d%-10d\n", i+1, q) | ||
|  | 		} | ||
|  | 
 | ||
|  | 		fmt.Println(strings.Repeat("-", 20)) | ||
|  | 		fmt.Printf("%10s%-10d\n\n", "", sum) | ||
|  | 
 | ||
|  | 		grand += sum | ||
|  | 	} | ||
|  | 
 | ||
|  | 	fmt.Printf("%10s%-10d\n", "", grand) | ||
|  | } |