day1
This commit is contained in:
		
						commit
						8d6a6df572
					
				
					 7 changed files with 130 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .vscode | ||||
							
								
								
									
										41
									
								
								client/client.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								client/client.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | |||
| package client | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"log" | ||||
| 	"net/http" | ||||
| ) | ||||
| 
 | ||||
| type client struct { | ||||
| 	session string | ||||
| } | ||||
| 
 | ||||
| func NewClient(session string) client { | ||||
| 	return client{session} | ||||
| } | ||||
| 
 | ||||
| func (c *client) Day(day int) []byte { | ||||
| 	client := http.Client{} | ||||
| 	req, err := http.NewRequest("GET", fmt.Sprintf("https://adventofcode.com/2021/day/%v/input", day), nil) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		log.Fatalln(err) | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Cookie", fmt.Sprintf("session=%s", c.session)) | ||||
| 	resp, err := client.Do(req) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		log.Fatalln(err) | ||||
| 	} | ||||
| 
 | ||||
| 	defer resp.Body.Close() | ||||
| 	body, err := io.ReadAll(resp.Body) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		log.Fatalln(err) | ||||
| 	} | ||||
| 
 | ||||
| 	return body | ||||
| } | ||||
							
								
								
									
										22
									
								
								d1/d1.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								d1/d1.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| package d1 | ||||
| 
 | ||||
| import ( | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| func D1(scans string) int64 { | ||||
| 	depths := strings.Split(strings.TrimSpace(scans), "\n") | ||||
| 	downs := 0 | ||||
| 
 | ||||
| 	for i := 1; i < len(depths); i++ { | ||||
| 		next, _ := strconv.Atoi(strings.TrimSpace(depths[i])) | ||||
| 		prev, _ := strconv.Atoi(strings.TrimSpace(depths[i-1])) | ||||
| 
 | ||||
| 		if next > prev { | ||||
| 			downs++ | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return int64(downs) | ||||
| } | ||||
							
								
								
									
										25
									
								
								d1/d1_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								d1/d1_test.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| package d1 | ||||
| 
 | ||||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestD1(t *testing.T) { | ||||
| 	input := ` | ||||
| 		199 | ||||
| 		200 | ||||
| 		208 | ||||
| 		210 | ||||
| 		200 | ||||
| 		207 | ||||
| 		240 | ||||
| 		269 | ||||
| 		260 | ||||
| 		263 | ||||
| 	` | ||||
| 	actual := D1(input) | ||||
| 
 | ||||
| 	assert.EqualValues(t, 7, actual) | ||||
| } | ||||
							
								
								
									
										10
									
								
								go.mod
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								go.mod
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| module github.com/fotonmoton/aoc2021 | ||||
| 
 | ||||
| go 1.17 | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/davecgh/go-spew v1.1.0 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/stretchr/testify v1.7.0 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect | ||||
| ) | ||||
							
								
								
									
										10
									
								
								go.sum
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								go.sum
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
							
								
								
									
										21
									
								
								main.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								main.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"bufio" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"github.com/fotonmoton/aoc2021/client" | ||||
| 	"github.com/fotonmoton/aoc2021/d1" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
| 
 | ||||
| 	reader := bufio.NewReader(os.Stdin) | ||||
| 	fmt.Print("Enter your session: ") | ||||
| 	session, _ := reader.ReadString('\n') | ||||
| 	client := client.NewClient(strings.TrimSpace(session)) | ||||
| 
 | ||||
| 	fmt.Printf("day1: %v\n", d1.D1(string(client.Day(1)))) | ||||
| } | ||||
		Loading…
	
	Add table
		
		Reference in a new issue