Added the first days
This commit is contained in:
parent
7ebc2cd003
commit
6ed18289c8
26 changed files with 6168 additions and 0 deletions
42
2021/03/first.go
Normal file
42
2021/03/first.go
Normal file
|
@ -0,0 +1,42 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
f, err := os.Open("input")
|
||||
if err != nil {
|
||||
log.Fatalf("%+v", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
scanner := bufio.NewScanner(f)
|
||||
scanner.Split(bufio.ScanLines)
|
||||
|
||||
bits := make([]int, 12)
|
||||
for scanner.Scan() {
|
||||
num := scanner.Text()
|
||||
for n := 0; n < 12; n++ {
|
||||
if num[n] == '1' {
|
||||
bits[n]++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gamma := 0
|
||||
epsilon := 0
|
||||
for n := 0; n < 12; n++ {
|
||||
gamma *= 2
|
||||
epsilon *= 2
|
||||
if bits[n] > 500 {
|
||||
gamma++
|
||||
} else {
|
||||
epsilon++
|
||||
}
|
||||
}
|
||||
fmt.Println(gamma * epsilon)
|
||||
}
|
1000
2021/03/input
Normal file
1000
2021/03/input
Normal file
File diff suppressed because it is too large
Load diff
96
2021/03/second.go
Normal file
96
2021/03/second.go
Normal file
|
@ -0,0 +1,96 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func findBitCount(data []string) []int {
|
||||
bits := make([]int, 12)
|
||||
for _, line := range data {
|
||||
for n := 0; n < 12; n++ {
|
||||
if line[n] == '1' {
|
||||
bits[n]++
|
||||
}
|
||||
}
|
||||
}
|
||||
return bits
|
||||
}
|
||||
|
||||
func main() {
|
||||
f, err := os.Open("input")
|
||||
if err != nil {
|
||||
log.Fatalf("%+v", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
scanner := bufio.NewScanner(f)
|
||||
scanner.Split(bufio.ScanLines)
|
||||
|
||||
data := make([]string, 0)
|
||||
for scanner.Scan() {
|
||||
data = append(data, scanner.Text())
|
||||
}
|
||||
|
||||
datacsr := make([]string, len(data))
|
||||
copy(datacsr, data)
|
||||
|
||||
var ogr int
|
||||
for n := 0; n < 12; n++ {
|
||||
if len(data) == 1 {
|
||||
break
|
||||
}
|
||||
bits := findBitCount(data)
|
||||
var i byte
|
||||
if 2*bits[n] >= len(data) {
|
||||
i = '1'
|
||||
} else {
|
||||
i = '0'
|
||||
}
|
||||
newdata := make([]string, 0)
|
||||
for j := 0; j < len(data); j++ {
|
||||
if data[j][n] == i {
|
||||
newdata = append(newdata, data[j])
|
||||
}
|
||||
}
|
||||
data = newdata
|
||||
}
|
||||
for n := 0; n < 12; n++ {
|
||||
ogr *= 2
|
||||
if data[0][n] == '1' {
|
||||
ogr++
|
||||
}
|
||||
}
|
||||
|
||||
data = datacsr
|
||||
var csr int
|
||||
for n := 0; n < 12; n++ {
|
||||
if len(data) == 1 {
|
||||
break
|
||||
}
|
||||
bits := findBitCount(data)
|
||||
var i byte
|
||||
if 2*bits[n] < len(data) {
|
||||
i = '1'
|
||||
} else {
|
||||
i = '0'
|
||||
}
|
||||
newdata := make([]string, 0)
|
||||
for j := 0; j < len(data); j++ {
|
||||
if data[j][n] == i {
|
||||
newdata = append(newdata, data[j])
|
||||
}
|
||||
}
|
||||
data = newdata
|
||||
}
|
||||
for n := 0; n < 12; n++ {
|
||||
csr *= 2
|
||||
if data[0][n] == '1' {
|
||||
csr++
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(ogr * csr)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue