| 
									
										
										
										
											2019-08-06 01:34:36 +03:00
										 |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-06 01:49:48 +03:00
										 |  |  | type groupFunc func(result) (key string) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-06 01:34:36 +03:00
										 |  |  | func groupBy(results []result, keyer groupFunc) []result { | 
					
						
							|  |  |  | 	grouped := make(map[string]result, len(results)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for _, cur := range results { | 
					
						
							|  |  |  | 		key := keyer(cur) | 
					
						
							|  |  |  | 		grouped[key] = cur.add(grouped[key]) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	out := results[:0] | 
					
						
							|  |  |  | 	for _, r := range grouped { | 
					
						
							|  |  |  | 		out = append(out, r) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return out | 
					
						
							|  |  |  | } |