Day 3 Complete

Also clean up some of the problem files
This commit is contained in:
Brian Buller 2016-12-03 11:08:20 -06:00
parent 9ec55d2a89
commit 2dfe2f4b2f
6 changed files with 1748 additions and 42 deletions

View File

@ -1,19 +1,4 @@
Advent of Code Advent of Code
• [About]
• [AoC++]
• [Events]
• [Settings]
• [Log Out]
br0xen (AoC++) 2*
   <y>2016</y>
• [Calendar]
• [Leaderboard]
• [Stats]
• [Sponsors]
--- Day 1: No Time for a Taxicab --- --- Day 1: No Time for a Taxicab ---
@ -56,8 +41,6 @@
If you still want to see it, you can get your puzzle input. If you still want to see it, you can get your puzzle input.
You can also [Shareon Twitter Google+ Reddit] this puzzle.
References References
Visible links Visible links
@ -76,6 +59,3 @@ References
. https://en.wikipedia.org/wiki/Taxicab_geometry . https://en.wikipedia.org/wiki/Taxicab_geometry
. http://adventofcode.com/2016 . http://adventofcode.com/2016
. http://adventofcode.com/2016/day/1/input . http://adventofcode.com/2016/day/1/input
. https://twitter.com/intent/tweet?text=I%27ve+completed+%22No+Time+for+a+Taxicab%22+%2D+Day+1+%2D+Advent+of+Code+2016&url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F1&related=ericwastl&hashtags=AdventOfCode
. https://plus.google.com/share?url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F1
. http://www.reddit.com/submit?url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F1&title=I%27ve+completed+%22No+Time+for+a+Taxicab%22+%2D+Day+1+%2D+Advent+of+Code+2016

View File

@ -1,19 +1,4 @@
Advent of Code Advent of Code
• [About]
• [AoC++]
• [Events]
• [Settings]
• [Log Out]
br0xen (AoC++) 4*
   <y>2016</y>
• [Calendar]
• [Leaderboard]
• [Stats]
• [Sponsors]
--- Day 2: Bathroom Security --- --- Day 2: Bathroom Security ---
@ -89,8 +74,6 @@
If you still want to see it, you can get your puzzle input. If you still want to see it, you can get your puzzle input.
You can also [Shareon Twitter Google+ Reddit] this puzzle.
References References
Visible links Visible links
@ -108,6 +91,3 @@ References
. http://adventofcode.com/2016/sponsors . http://adventofcode.com/2016/sponsors
. http://adventofcode.com/2016 . http://adventofcode.com/2016
. http://adventofcode.com/2016/day/2/input . http://adventofcode.com/2016/day/2/input
. https://twitter.com/intent/tweet?text=I%27ve+completed+%22Bathroom+Security%22+%2D+Day+2+%2D+Advent+of+Code+2016&url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F2&related=ericwastl&hashtags=AdventOfCode
. https://plus.google.com/share?url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F2
. http://www.reddit.com/submit?url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F2&title=I%27ve+completed+%22Bathroom+Security%22+%2D+Day+2+%2D+Advent+of+Code+2016

BIN
day03/day03 Executable file

Binary file not shown.

1599
day03/input Normal file

File diff suppressed because it is too large Load Diff

88
day03/main.go Normal file
View File

@ -0,0 +1,88 @@
package main
import (
"bufio"
"fmt"
"log"
"os"
"sort"
"strconv"
"strings"
)
func main() {
input := stdinToStringSlice()
puzzleOne(input)
puzzleTwo(input)
}
func puzzleOne(input []string) {
fmt.Println("=== Puzzle One ===")
var numGood int
var sides []int
for i := range input {
pts := strings.Fields(input[i])
sides = []int{atoi(pts[0]), atoi(pts[1]), atoi(pts[2])}
if isValidTriangle(sides) {
numGood++
}
}
fmt.Println("Found Good: ", numGood)
}
func puzzleTwo(input []string) {
fmt.Println("=== Puzzle Two ===")
var numGood int
var sides1, sides2, sides3 []int
for i := range input {
pts := strings.Fields(input[i])
sides1 = append(sides1, atoi(pts[0]))
sides2 = append(sides2, atoi(pts[1]))
sides3 = append(sides3, atoi(pts[2]))
if len(sides1) == 3 {
if isValidTriangle(sides1) {
numGood++
}
if isValidTriangle(sides2) {
numGood++
}
if isValidTriangle(sides3) {
numGood++
}
sides1 = []int{}
sides2 = []int{}
sides3 = []int{}
}
}
fmt.Println("Found Good: ", numGood)
}
func isValidTriangle(sides []int) bool {
sort.Ints(sides)
if sides[2] < (sides[1] + sides[0]) {
return true
}
return false
}
func itoa(i int) string {
return strconv.Itoa(i)
}
func atoi(i string) int {
var ret int
var err error
if ret, err = strconv.Atoi(i); err != nil {
log.Fatal("Invalid Atoi")
}
return ret
}
func stdinToStringSlice() []string {
var input []string
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
input = append(input, scanner.Text())
}
return input
}

59
day03/problem Normal file
View File

@ -0,0 +1,59 @@
Advent of Code
--- Day 3: Squares With Three Sides ---
Now that you can think clearly, you move deeper into the labyrinth of hallways and office
furniture that makes up this part of Easter Bunny HQ. This must be a graphic design
department; the walls are covered in specifications for triangles.
Or are they?
The design document gives the side lengths of each triangle it describes, but... 5 10 25? Some
of these aren't triangles. You can't help but mark the impossible ones.
In a valid triangle, the sum of any two sides must be larger than the remaining side. For
example, the "triangle" given above is impossible, because 5 + 10 is not larger than 25.
In your puzzle input, how many of the listed triangles are possible?
Your puzzle answer was 869.
The first half of this puzzle is complete! It provides one gold star: *
--- Part Two ---
Now that you've helpfully marked up their design documents, it occurs to you that triangles
are specified in groups of three vertically. Each set of three numbers in a column specifies a
triangle. Rows are unrelated.
For example, given the following specification, numbers with the same hundreds digit would be
part of the same triangle:
101 301 501
102 302 502
103 303 503
201 401 601
202 402 602
203 403 603
In your puzzle input, and instead reading by columns, how many of the listed triangles are
possible?
Although it hasn't changed, you can still get your puzzle input.
References
Visible links
. http://adventofcode.com/
. http://adventofcode.com/2016/about
. http://adventofcode.com/2016/support
. http://adventofcode.com/2016/events
. http://adventofcode.com/2016/settings
. http://adventofcode.com/2016/auth/logout
. http://adventofcode.com/2016
. http://adventofcode.com/2016
. http://adventofcode.com/2016/leaderboard
. http://adventofcode.com/2016/stats
. http://adventofcode.com/2016/sponsors
. http://adventofcode.com/2016/sponsors
. http://adventofcode.com/2016/day/3/input