Add 2020 advent.

I only completed up to day 5.
This commit is contained in:
Érico Nogueira 2021-12-01 15:57:08 -03:00
commit 462062498f
13 changed files with 3848 additions and 0 deletions

200
2020/day1/data Normal file
View File

@ -0,0 +1,200 @@
1593
1575
1583
1609
1835
2008
1638
1396
1833
1524
1778
1574
1653
1962
1831
1557
1847
1587
1876
1914
1565
1585
1713
35
1862
1885
1735
1497
1989
1871
1923
1917
1719
1797
1222
1493
1939
1139
1260
1622
1625
1683
1742
1996
1579
1703
1692
1920
1536
1965
1936
1947
1800
1556
1633
1530
1612
1764
1810
1845
1750
1854
1973
1512
1856
1568
1634
1630
1602
1555
1681
1844
1544
1909
1690
1851
1785
863
1866
1988
1715
1881
1570
1380
1956
777
1693
1717
1724
1975
790
1484
1822
1922
1963
1741
1809
1896
1837
1980
1244
1832
1834
1643
1775
1818
1503
1802
1957
1174
1826
1649
1941
1571
1930
1629
1502
2002
1700
1880
1723
1803
2007
1543
1872
1993
1740
1919
1688
1067
1680
1580
1558
1772
1694
1480
1257
1796
2001
537
1701
1613
1784
1559
1482
1968
1604
983
1842
1817
1850
1788
1982
1535
1615
453
1895
1443
1308
1533
1714
1765
1037
1992
1843
1883
1981
1525
1038
1540
1766
1886
1546
1716
810
1899
1708
1508
1870
1051
1867
1840
1617
1726
1566
1616
1948
1771
1627
1994
1486
1913
1600
1983
1501
2003
1667
1620
1943
1674

51
2020/day1/day1.c Normal file
View File

@ -0,0 +1,51 @@
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *f = fopen("data", "r");
if (!f) {
return 1;
}
int lines = 0;
for (;;) {
char *line = NULL;
size_t n = 0;
ssize_t e = getline(&line, &n, f);
free(line);
if (e > 0) {
lines++;
} else {
break;
}
}
printf("lines: %d\n", lines);
int *v = calloc(sizeof *v, lines);
fseek(f, 0, 0);
for (int i = 0; i < lines; i++) {
char *line = NULL;
size_t n = 0;
getline(&line, &n, f);
v[i] = atoi(line);
free(line);
for (int j = 0; j < i; j++) {
int sum2 = v[i] + v[j];
if (sum2 == 2020) {
printf("found match: %d and %d\n", v[i], v[j]);
printf("product: %d\n", v[i] * v[j]);
} else if (sum2 < 2020) {
for (int k = 0; k < j; k++) {
if (v[i] + v[j] + v[k] == 2020) {
printf("found match: %d and %d and %d\n", v[i], v[j], v[k]);
printf("product: %d\n", v[i] * v[j] * v[k]);
}
}
}
}
}
fclose(f);
free(v);
}

1000
2020/day2/data Normal file

File diff suppressed because it is too large Load Diff

37
2020/day2/day2.py Executable file
View File

@ -0,0 +1,37 @@
#!/usr/bin/python3
count = 0
lines = 0
count2 = 0 # for part 2
with open("data", "r") as f:
for line in f:
lines += 1
parts = line.split(' ')
amount = parts[0]
char = parts[1]
pwd = parts[2]
first, second = amount.split('-')
first, second = int(first), int(second)
c = char[0]
cpwd = pwd.count(c)
if not first <= cpwd <= second:
#print(f"bad: {first}-{second} {c}: {pwd} - has {cpwd}")
count += 1
l = len(pwd)
match = 0
for p in [first, second]:
if l >= p:
if pwd[p - 1] == c:
match += 1
if match != 1:
count2 += 1
print(f'bad count: {count}')
print(f'good count: {lines - count}')
print(f'total lines: {lines}')
print(f'2: bad count: {count2}')
print(f'2: good count: {lines - count2}')

323
2020/day3/data Normal file
View File

@ -0,0 +1,323 @@
..#.#...#.#.#.##.....###.#....#
...........##.#...#.#..........
....#.....#..#.............#...
.#....###..##...#...##...#.#..#
#.......#.........#..#.......#.
...#.##..##...#.#......#.##.#..
#.#..##.....#.....#..##........
...#.####...#.##...#...........
.#...#..#..#....#.#.#.#.##.....
##.#..#.##..#......#..##.#.#..#
.#.##.....#.#...............#.#
..##.#.....#.....##..##.#....#.
#..#..........#...##........#..
#..##.#.#...............#..#...
..#....#...#.......#.......#...
.........#.#.##.#........#.....
#...##....#..#.........#.#...##
...#.#...#...........#..#...#..
...#..#........#...#...........
.#....##.#...#.#....#....##....
...#...#......#.#.......#...##.
####..........##....#..........
#..#...........................
#....#...####..##.#......#.#...
..#..#.....##.....#...#....#..#
#.##......#..##........#.......
..........#.....#...#.#.#....##
....##...##..#........#...#..#.
#..#..#...##..............##...
###.##..##.###...#....##.#..#..
.#......#.................#.#..
#.#..#.##.#.#.#.....#.........#
..##......#.......##........#..
#..............#.##.#.....#....
............................##.
..#.##......#..........#....#..
..##.....#..##.#....#.......##.
..#.#.##.#.........#...........
...........##.#.#...#......###.
#....#...#........#.#...#.#.###
..............#...#.....##....#
#...#...#..............#..#...#
.##..#.........#.##.#..#...##..
.....#.........#..#..#.......#.
.#......#.#.#....##..#...#..##.
#....................#.#....#..
......#.....##............#....
.#.....#......####.....#....##.
##.####.#..#..........#......#.
##....................#..##....
.....#...#.#.##.#.###.....#....
.#..#...####.#.#...#.#.....#...
#.....##.........##.##.##.....#
....#....##.###.........#...###
.......#........#.##.....#####.
...#.##..#...#...####.....##...
..#....#....#......#......#.#..
...#.#.#.........#.......#..#..
.....#...........#.#........##.
..##...#.#.##.#.#.#...###.#....
..##.............###....#.#....
#.......#....#..#...#..##..#...
....##..#.......####....#..#.##
##....#...#.#.#...#...#........
....#.#................#...#...
...#.....#.#.......##....#.#..#
#....##.#...#.#..#.#.........#.
#..##.........##.....#...#.....
....#.....#.#..#..##..##.##...#
#.....#...#.#.#.##....#.#.##...
.#.#........#..##.......#...#.#
..###.....#..#.##....#...#....#
...#..###...#...#.......#..#...
.#....##.......#.#..........##.
...#.#.............##.....##...
..#..#...#.....#...#...........
.#.#......#.##....#.....#......
........#.#.....#.#...#..#.#..#
#.....#.#.....#.##..#.#....#.#.
..#..###.#.#........#.....##..#
#.#....#......#.#....###..#...#
...#.#....#..#.##.....#...#....
....##....#.#...#.........#..##
.#......#...#.............#..#.
#........#........#.#.....##...
..##..#.##..#........#.........
.....#...#...#..#.....#.#.##.#.
..#..#..#.........#...#.......#
....#.....#.......#.##.#.##..##
......#.......##...#......#....
....#....##.......###.#......#.
.....#..#.#........#....#.....#
#...#...#....#...###........#..
#...........####.......#.#..#.#
..###....#..........#...#.###..
....#.#.....#....#..#.....#.##.
...##.#..#..#.......#......#.#.
....#......###..#.....#.....#..
.....#.#.#.....#.##.#....####..
.##....#.....#.#....##..#......
#..#.....#..#...#....#.#.......
.##.#..####..#.##.#......#.....
......#....#.......##.##....#..
...#....#....#..##.......##.###
..##..........##.............#.
.#...#.#...##..##.....#..#.....
....#.#.##...................#.
.......#.#..#....#.....#.......
.#.#..#....####...#.#.##....#..
.#.##...#..#..#...#.#.......#..
##.#.....##.........#.......#..
.##...#.....#.........##.#....#
.............#..#............##
...##.......#.....#.......#.##.
##..##.........................
.##.#........#........#........
.....#................#.#......
.............#....#....##....#.
#..##...##...#..#.#............
.......#...####.#..#..#.....##.
..#.#..#......#.....#.#.#.....#
...#..##........#..#.#....#.#..
.#.....#..###..#....#.##.#...#.
#.#..#.##.#..#......#.###...#..
##..#.#..###....##.#...#...##.#
##..#.........#...##......#....
#.#...#.#..#..........#.......#
.......#.#.......#.....##..#...
........#..##............##.#..
........##.....#........#..#...
#..##.#..###......##...........
..#.....#.#.#....#...#.#..#..##
#...............#.......#.#.##.
#..#.....#....#............#.#.
...#....#...#....#..#..###.....
..#....#.#.....#..#......##.#.#
.#.#....#..#...#....#........#.
..##....##....#.....#.#........
.#...#....##..##.....##.....##.
.#...........#....##...##.#....
...#.....#......###.##.#.......
......#.#..##.#.#....#...#...##
....#...###.##....#.#.....#....
.......#.....#......#.....##..#
.####.#...##..#....#...........
................###...#....#..#
...#...#.....###.#.##.......#..
..#....#...##...#.###......#.#.
#...#......#............#.....#
#.........#...............#..#.
...#.##.....#............#.....
........#......##..#..#..#.#..#
....#....#.....#.#.....##..#...
.....#....#..##.....#..........
.##....#..#...........##.......
#......##.....#...#.....#......
...#.....#......#.#....#.......
...#................##...#..#..
........#..........#....#......
......#....#.#.#...........#.#.
.#............#....##.......##.
#.......#.....#...##.#..##.....
.#.....#.##..#..#....#.#..#.#.#
....#...............###........
#####...........#..#.......#..#
...#.......#...#.#............#
#...#..#.#...#.#...#.##.....##.
.#..#..#..#.....#....#...#.....
.#...#......#.......#.........#
.#....#.....#...#...#..#....#..
#....#....#.......#.....##.....
.#...#.#.##.#....#..##........#
..##...#............#..........
..........#..#..#...#....#.....
..#.......#....#.....##..##....
.#...#......#...#..###...#...#.
..##...#......#...#.#.#...#....
.....#..#.#.#.#.#...#....##..#.
##..#..##....#.#........##.#...
.##..#.#...##..#....#..#.......
.....#...#...#..#.#..#......#..
.#.....##.##..#....####..#....#
......##.................#....#
....##.......###...#.##...##.#.
...#...#.................##.#..
.#.....##...#...#.....#.....##.
##.........####..#...#...#....#
...##.....#......#.###..#......
.....###..##.#.......###..##...
#....#...#.#...#...#.#....#..#.
#...#.........##.#.........###.
#....#..###..........##........
.###.....#.#.....#........##..#
....#.........##..#..#.#.#..#..
..#......#...........#..##...#.
...#.#..#..#...#.##..#..#.....#
.#...#...#....................#
..#..##..#.............#.....#.
.....###.#.#.#...##..#.##....#.
..#...####..##.#....#...#...#..
.....#..#........#.#.#..#.##...
#.#.........####..#...#.#......
..............#..#........#....
....#........#......#.........#
#..#.##......#.#.......#....#..
....#..............#.#.#..#....
#.#......#.....##.......#..##..
.#.#..........#....#......#....
.....#.......#.##.....#......##
...#...#.##.............####...
..#....##...#...##..#.#..##.#..
..#.........##.......###.#.....
..#.........#####..##...#......
..#.#...#.......#.####......##.
......#.#.#....#......####....#
.###...........#...#..#..#..##.
..#...#..##.##...#.#.##.....#..
.....#..#....##.......#...#....
......#.....#.........#..#..#..
...#..#.........##.....##.#...#
....##...#......#..#.....#.....
....#..#....#....#........##...
##.....#.......#.....#.#.#..#..
.....#..##.....##.##.#.........
.#.#..##.............#.#.......
......#.##.#.....#.#......#..#.
..........#.#..#....#.#.#.#..##
...##.....#..#...#...#...##....
........#.#......#..###..#.....
..#.##......#.......#.......#..
...#....##.##.........#.#......
......#....#.#.........#......#
.....#...#....#...#......#..#..
.##...#......#.........#...#.#.
..#.#.#......#....#............
..#.....##.............#.##.##.
#......#......#...##.......#.#.
##........#.....#..............
.#.###.................#.#....#
........##.#..##........#.#....
.......###...#...##.#..#....#..
.#..#....#..#......##......#...
.#...#....#..........##..##.#..
.#..###.......#............#...
...#.....###.#..#........#.#.#.
...#....#..#.##..........#.#.#.
.#..##..#.....#...........#....
#...#...##....#..#....##.......
#..#......#................#...
#..##....#.#..#......#.#.#.....
##.#..#...#.....#.#...#......##
#....#.#.#....#.....##.....##..
....#...##.#...####.#.#.#.#..#.
.....#.#....#..#.....#..#......
.........#.#...................
........#.....####......#..#..#
.#.#.##.#...#.#......#...##.##.
.#......#.#.#...#..#.......#...
..#......#.##.##.#.#....#......
..........#.#...###............
.##..#..#.#.#..#.....#..#.#....
......#.......#.#..#.#....#...#
.#.......###......#...#.#.#....
.............##..#..#...#....#.
....#......#.#...#.#...#...#...
..#....#.......#.#..#..#.#..#.#
.#..#.#...#.....#.#...#####...#
.##............#....#..........
#.......####...#.#.#...........
...#.......##.#..........#....#
..#.#......#.......##.....#..##
#......#.###..#......#......#.#
##....#..#....#.##....#..#.....
...##...#.#....#.#.......#.....
#...####....#..#.#..#.##....###
.....#..#..........###..#......
.#..#..#...#....#.##..#..#.....
#..#.....#....#..#.##...##.....
.....###.#..#.......#...###.##.
#..#........#.#..#.#.........#.
....##........................#
.#....#.#.#.#.#...#......#....#
#....#...#.##.......#.#.###....
..........###..##....#..##.#...
...##..###...#.#.#.......##...#
##.#...#..#.....###....#.......
..#..##....###........##....###
.....##..#...#..#.....#..#....#
#................#....#...#..##
#....#.#....#..###.#.#...#..#.#
........##.#...#.#.#.#...#.....
..#..###....#......##.#...##...
..#..##....#.##..#.....#.....#.
.#.#...#.....#..#..#......##.#.
........#.#...#..##....#..#....
...##...#...#...#...##...##..#.
.......#..#..#....#.#..#...##..
.#.....#.##........#...#.#.....
##.#..#....#.#....#.#....#...#.
..#.#......#.......##...#....#.
#.#..####..#........#.......###
....#.......#.......##.#...#.#.
..#..#.#.............#..#......
........###.....##....#.......#
...#.....#...#...#....#.###....
#...##.#........#..#...##..#..#
...##..#....#....#.#.#...#.#...
#......#.....#....###......##..
.....#.........####...##..#....
.......#...##...#..#..#.#......
.#.#....#.....#.......#........
...##...#....##..#.....###.....
.#....#........##......#....#.#
.........#.#.#.#...........#.#.
....#.#..##......#.#.#..##.....
.........#.....##....#.........
....#.............#...........#
...#..##........#.....###......
#....#....#......#..#..#..#.#..
#......##.....#..#....#..#.#...
#..............#....#.#....###.
..##..#..#...#...##........##..
..#.##....#..#......###..#.....

75
2020/day3/day3.go Normal file
View File

@ -0,0 +1,75 @@
package main
import (
"bufio"
"fmt"
"os"
"log"
)
func main() {
f, _ := os.Open("data")
defer f.Close()
// arbitrary max length
first_line := make([]byte, 255)
max_le, _ := f.Read(first_line)
repeat_after := 0
for i, c := range first_line {
if c == '\n' {
repeat_after = i
break
}
if i == max_le {
log.Fatal("line too long!")
}
}
fmt.Printf("line length: %d\n", repeat_after)
// arbitrary max lines
themap := make([][]byte, 1000)
for i := range themap {
themap[i] = make([]byte, repeat_after)
}
f.Seek(0, 0)
scanner := bufio.NewScanner(f)
ln := 0
for scanner.Scan() {
copy(themap[ln], scanner.Bytes())
ln += 1
}
// movement: right,down
// 1,1 - 3,1 - 5,1 - 7,1
counts := []int{0, 0, 0, 0}
hoff := []int{1, 3, 5, 7}
// 1,2
count2 := 0
// (v,h): vertical and horizontal
for v := 0; v < ln; v++ {
for i := range counts {
h:= (v * hoff[i]) % repeat_after
if themap[v][h] == '#' {
counts[i]++
}
}
if v % 2 == 0 {
h := (v / 2) % repeat_after
if themap[v][h] == '#' {
count2++
}
}
}
// part 1
fmt.Printf("total trees: %d\n", counts[1])
// part 2
mul := 1
for _, v := range counts {
mul *= v
}
mul *= count2
fmt.Printf("product of total trees: %d\n", mul)
}

1129
2020/day4/data Normal file

File diff suppressed because it is too large Load Diff

119
2020/day4/day4.bash Executable file
View File

@ -0,0 +1,119 @@
#!/bin/bash
isyear() {
case $1 in
[[:digit:]][[:digit:]][[:digit:]][[:digit:]])
;;
*)
return 1
;;
esac
}
check_pass() {
e=
# ignore cid
for f in byr iyr eyr hgt hcl ecl pid
do
if [[ "$1" != *"${f}:"* ]]; then
return 1
fi
done
f=
# validate each
for v in $1
do
e=${v#*:}
case "$v" in
byr:*)
isyear $e || return 1
[ $e -lt 1920 -o $e -gt 2002 ] && return 1
;;
iyr:*)
isyear $e || return 1
[ $e -lt 2010 -o $e -gt 2020 ] && return 1
;;
eyr:*)
isyear $e || return 1
[ $e -lt 2020 -o $e -gt 2030 ] && return 1
;;
hgt:*)
case $e in
*cm)
m=${e%cm}
[ $m -lt 150 -o $m -gt 193 ] && return 1
;;
*in)
m=${e%in}
[ $m -lt 59 -o $m -gt 76 ] && return 1
;;
*)
return 1
;;
esac
;;
hcl:*)
case $e in
\#[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]])
;;
*)
return 1
;;
esac
;;
ecl:*)
case $e in
amb|blu|brn|gry|grn|hzl|oth)
;;
*)
return 1
;;
esac
;;
pid:*)
case $e in
[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]])
;;
*)
return 1
;;
esac
;;
esac
done
return 0
}
total_count=0
invalid_count=0
total=
while read -r input
do
if [ -n "$input" ]; then
total+=" $input"
else
if ! check_pass "$total"; then
invalid_count=$(($invalid_count + 1))
[ "$f" ] && echo missing $f $total
[ "$e" ] && echo bad value $e - $total
fi
total=
total_count=$(($total_count + 1))
fi
done < data
# count trailing data
total_count=$(($total_count + 1))
if ! check_pass "$total"; then
invalid_count=$(($invalid_count + 1))
[ "$e" ] && echo bad value $e - $total
fi
echo "total: $total_count"
echo "inval: $invalid_count"
echo " val: $(($total_count - $invalid_count))"

13
2020/day4/example-data Normal file
View File

@ -0,0 +1,13 @@
ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
byr:1937 iyr:2017 cid:147 hgt:183cm
iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
hcl:#cfa07d byr:1929
hcl:#ae17e1 iyr:2013
eyr:2024
ecl:brn pid:760753108 byr:1931
hgt:179cm
hcl:#cfa07d eyr:2025 pid:166559648
iyr:2011 ecl:brn hgt:59in

13
2020/day4/invalid Normal file
View File

@ -0,0 +1,13 @@
eyr:1972 cid:100
hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926
iyr:2019
hcl:#602927 eyr:1967 hgt:170cm
ecl:grn pid:012533040 byr:1946
hcl:dab227 iyr:2012
ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277
hgt:59cm ecl:zzz
eyr:2038 hcl:74454a iyr:2023
pid:3556412378 byr:2007

12
2020/day4/valid Normal file
View File

@ -0,0 +1,12 @@
pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980
hcl:#623a2f
eyr:2029 ecl:blu cid:129 byr:1989
iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm
hcl:#888785
hgt:164cm byr:2001 iyr:2015 cid:88
pid:545766238 ecl:hzl
eyr:2022
iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719

816
2020/day5/data Normal file
View File

@ -0,0 +1,816 @@
FBFBFBFRRL
BFBBFFFRRL
FFBFFFFRLL
BFFFBBBRLL
BBFFBFBLLR
FFFFBBBRLR
FBBBBFFLRR
FBFFFBFRLL
FFFFBFFRRR
FFFBBFFRLR
BFBBBBFRLL
FBBFBFFLLL
FFFBFFBRRL
BFBFFBBLLL
FFBBFBBLLR
FFBFFBBRRL
BFBFBBBRRL
FFBFFBBLLL
BFFFBBBLRR
BFBFFBFRRR
BFFBFFBRRL
BFBFFFFLLR
FFFFBBBLRR
FFBBFBFRRR
BFFFBFBLLL
FBFFBBBRRL
FBBBBBBRRL
BBFBFFBLLL
BFFBFFFLLL
FBFFBBFLLR
FBFBFFBLRL
FFBFFFBRLR
FFBBBBFRLL
FBFBFFFLRL
FBBFBBFRLR
FFBBBBBLLL
FBFFBFBLLL
FBFFFBBRRR
BBFFBBFRRR
FBFFBFBRLL
FBBBFBBRRR
BFFFBFFRRL
FFBFBFBLLL
FBFBFFFRLR
FBBFBBBLLL
FFFBBBBLLL
FFFBFFBLLL
BFBFFBBLRR
FFBBFFFLLR
FFBBBBBLRR
BBFFFFBRLL
BFFFBBFLRR
BFBFFFBRRR
FBBFFFBLRR
BFBFBFFLLL
FBBFFBFRLL
FFBBBBFLRL
BFFFFBFLLR
FBFBBBFLLR
FFFBBFBRLL
FFBFFBBRLL
BFBBFFBRRR
FFFFBFBRLL
FBFFFBFRRL
FBBFFBBLLR
FFBBFFBRRL
FBBBFFBRRL
BFFFBBFLRL
FFBBBFBRRL
FFFFBFBRRL
BFBFFBFLLR
FBBBBBFLLR
BFFBFFFLRL
FFFBFBFRRL
FFFFBBBRLL
BFFFBFFRLL
BFFFBBBLLR
BBFFFFFRLR
BBFFFBFRLR
BFBBFBBLLL
FBFBBBFRLL
BFFBBFFRLR
BFFBFBBLRR
FFBFBBFRRR
BFBBBFFLRR
BFFBFBBRRR
BBFFFFFRRL
BBFFBFBLLL
BFBBFBFLRL
FBBFFBFLLL
FBBFBFFRLL
FBBBBFFLRL
FBBFBFFRRL
FFFBFBFLLL
FFBFFBFRLR
FBBFFFBLLR
FFFFBFBLRL
FFFBBFBLRR
FFBBBFFRLL
FBFBBBFRRR
BFBBBBFLLL
BBFFBFFLRL
FFFFBBBLLL
FFBFBBBLLL
BFBFBFFRRL
FBFFBBFRRR
FFFBBBBLRR
FBBBBFBLLL
FBBBBBBLRL
FFBFFFBLRR
BBFBFFBRRL
BFBBFFBLLL
BFFFFFFLRL
BFFFFBFRLR
FBFFFFFLLL
BFFBBFFRRL
BFBFBBFLLL
BFBFBFBRLL
FBFBFBBLLL
BFFFBFFLLR
FBBBFBBLLL
FFBFFFBRLL
FBBFFBBLRR
FFBFBFBRLL
BFFFBBBRLR
BBFFBFBLRL
BBFFBFBLRR
BBFFBBFRLL
BFFFFBBRRR
FBFBBFFLRR
FFBBBBBRRR
BFBBBFFRLL
BFBBFFFLRR
FBFBFFBRRR
FFBFFBFLRR
BFBBBBBLRL
FBFFFFBRRR
FFBFFFFLLR
BFFFFFBLRL
FFBBBBFLLL
FBFFFBBLRL
BBFFBFFLLR
FBBFFFBRLL
BBFFBBBRLR
FBFFFBFLRR
BFFBBFBRRL
FBBFFFFRLR
BFFBBBFLRR
FFBBFBBLRR
BFBBBBFRRL
FBFBBBBLLL
BBFFBFBRRR
FFFFBBFRLR
BFBBBBFRLR
FBBFFBFRLR
BFBFFFBRLL
FBFBFBBRRL
FBFBBFBRLR
BFBBBBBRRR
BBFBFFBRLR
FFBFFFBLRL
FBBFFBFLLR
BFFBFBFLLL
BFFFFFBLLL
BFBFFBBRLR
FBBBBFBRLR
BFBBBFBRLR
BFBBFBBRLL
BBFFFFBLLR
FBFBFBFRLL
FFFBBFBRRL
FBFFBBFRLR
FFFBBBBLLR
BBFFBFFLRR
FBBBFFFRRL
BBFFBBFLLL
BBFFFBFRLL
FFBFBBFLRR
BFBFFFBLRL
FFBFBBFLLR
FBBBBFFLLL
FFBBBBFLRR
FFFBFBBLRL
FFFBBFFLRR
FBBBFBBRLL
FFBFFFFLLL
FBBBFBFLRL
FBFBFBFRRR
FFBBFBFLRR
FFBFBBFRRL
FBFBBFFLRL
BFFFBBBRRL
BFBBBBFLLR
FFFBBFFRRR
BFBBFBBRRL
BBFFFBBLRL
BFBFBFFLRR
FFFFBFFLRL
BFBFFBFRLL
BFBFBBFRLR
BFFBFFFLRR
FBFFFFFLRR
BFFBFBFRLL
FBBFBFFLRR
FBFBBBBLRR
BFFFFFFRLR
FBBFBBBRRL
BFFBFBFRLR
FFFBFFFRRL
FFBFFFFRLR
BFFBFFBLLL
FFBFBBFLRL
BBFFFFFLRL
FFFBBFFRRL
FFBBBFFLRL
BFBBFFBLRR
FFBBFBFRLR
FFBFBFFRRR
FFFFBFFLRR
FBBBBFBRRL
BFBBFBBLRL
BFFBBFFLLR
FBFFFBFLLR
FBFBFFBLRR
FFBBFBBRLL
FBFFFFFRLR
FFBBBBFRRL
FBBFFBFRRR
FFFFBBFRRR
FBBBFFBLLL
FFBBFBBLLL
BFBFBFFRLL
BFFFBBFLLL
BFFBBFFRLL
FBFBBFFRRL
BBFBFFFLLR
BBFBFFBLRR
FBFFFFFRRR
FBFFBFFRRR
BFFBBFBRLR
FBFBFBFLLL
BFFBBBBLRR
BFBBFBBRLR
FFBBBFFLRR
FBFBBBBRRR
BFBBBBBRLL
BFBFFBBRRR
FBFBBFBRLL
FBFFBFBLRL
FBBFBBBRLL
FBFBBBBLRL
FBFFFBBLLR
BBFFFBFRRL
FBFBFBBRLL
BFBBBBBRLR
BFBFFFFRLR
FBFBBFBLRR
BFBBFBFRLR
BBFFBBBLLL
BFFFFFFRRR
BFBBBFBLRL
FBFBBFFLLR
FBFBBFFRLR
FFFBFBBLLR
FFBBFFFRLL
BFBFFFFLRR
FFFFBBBRRL
BFFFBFFRRR
BFFFBFBRLL
FFFFBFFRRL
BFFFBBFRRL
FFFBBFFLLL
BFBBFFBRRL
FBFBFFFRRR
FBFBFBFLRL
BFBFBFBLLL
FBBBFFBRLL
FBFFBBBLRL
BFBFFFFRRL
BFFBBFBLLL
FBFFFBBRLR
BBFBFFFRLL
FFBFBFFLRL
FBBFBBBLRL
BBFBFFFLRR
BBFBFFBRRR
BFFBFFBRLR
BBFFBBFRRL
FBFBBBFLRR
FBBFFFFLLL
BFFBBFBLRR
BFBFFFFLLL
BFFBBBBRLL
FFBFFBFLLL
FBBBBFBLLR
BBFFFBFLLR
BFBBBFBRLL
FBFFFFBRLR
FFBBBFFRRL
FFBFFFBRRR
BFFBFFFRLL
FFFBFBBLLL
FFFBBBFLLL
BFBBFBFRLL
BFBFFFBRLR
FBBFBBFRLL
FBBBFBFRRL
FFBFBFFRLR
BFBBFBBLLR
FBBFBFBRLR
BBFFFBBLLL
FBFBFFFLLL
BBFBFFFRRR
FBFBBFBLRL
FFBBBFBRLR
BFBBFFBRLR
FBFFBBBLRR
FFBBFFBRRR
BBFFBFBRRL
FFBBBFFRRR
BFBFFBFLRL
FBFFFFBLLL
BBFFFFBRRL
BBFFFFBLRR
FFBBFFBRLL
BFBBFFFLLL
FBBFBFBLLL
FBBBFFFLRL
FBFBBBBRRL
FFFBBBFRRR
FFBFFBBRRR
FBFFFFFLRL
BFFBFBFLRR
BBFFBBBRRR
FBFFFFFRRL
FBBFBFBLRR
BFFBBBBLLL
FBBBFFFLLR
BFFFFBFLLL
FFBFBFBLLR
FBFFFBBRLL
BFFFBFBRLR
FBBBFBFLLR
FBBBBFFLLR
BFFFFBBLLR
FFBBBBBRLR
BFFFBFBLRR
FBBBFFBLLR
FBFFBFBRRL
FBFBFBBRRR
FBBBBBBLRR
FFBBBBBRRL
FBFFFFBLLR
BBFBFFBRLL
FFFBBBFRLR
FBFFFBBLLL
FBFFBBBLLR
BFBFBBFRRL
BBFFBFBRLL
BFFFBBFRRR
BFFBBFBLRL
FBBBFBFLRR
FFFBFBFRRR
FFBBBFBLRR
BFBFBBFRRR
FFBBBFBRLL
BFFFBBBLLL
BFFFBFBRRL
BFFBFBBRLL
FBBFFFFLRL
FFFFBFFRLR
FFFBBBBRRL
BFFBFBFRRL
FFFBBFBRRR
FFBFBFBLRR
FFFFBBFLRL
BBFFFFBLRL
BFBBBBBRRL
FBBBBBFLLL
FBFFBFFLRL
FFBFBBBRRR
FBFBBBBRLL
BBFFFBBRRL
FFBBFBFRRL
FFBBBFFRLR
FFFBFBFRLL
FBBFBFBLLR
FFBBBBBLLR
FBFBFFBLLR
BFFFBBFRLR
FFBBFFFRRL
FFFFBBFLRR
BBFFFFFRRR
FFBBFFBLLR
FBFFFFBLRR
FFFFBFFRLL
BFBBFFFRLL
BFBBFFBRLL
BBFFFBBRLR
FFBFFFFRRR
BFBFBFBRRR
FFBBFBFLLR
BFFBBBFRLL
FBBBFFFRRR
BFBBBBBLLL
FFBFFFFLRR
FBFFFFBRLL
BFFFFBFRRL
FBBBBBBRRR
FFFFBBFLLL
FBFFBFFLRR
FFFBBBFRRL
FBBFFFBRRL
BFBFBBBRLL
BBFFFBFLRR
FBBFBFBRRL
FBBFFFFLRR
BFBBBFBLLL
BFFFFFBRRL
BBFFFBBLRR
BFFFFFBLRR
BFBBBBFLRL
FBFBFFBRRL
BBFFFFFLRR
FFFFBBBLLR
BFBBFBFLLL
FBBFFFBRRR
FFBBBFBRRR
FFBFBFFRLL
FFBBFBBLRL
FBBFFBFRRL
FFFBBFBLRL
FFBBFFBLRR
BFFFFBBLLL
FBBFBBFLRL
FFFBFFBLRL
FBBFFBBRRL
FBFFFBFRRR
BFBBBFFLRL
FFFFBFFLLL
FBFFFFFRLL
BFBFFFFRLL
FFBFBBBLRL
BFFBBBBLLR
BFFBBBFRRL
FFBBBBFLLR
FFFBFBFLRR
FBFFBFFRLR
BFBFBBBRLR
BFFBFFFLLR
FFFFBFBLLR
FBFFBFBLRR
BFFBFBFRRR
BFFBFFBLRL
FBBBBBFRRR
BFBBFFBLRL
FFBBFBBRRL
FBFFBFFRLL
FFBFFBFLLR
BFBBBBBLRR
BFFBBFFLRL
FBBBFBBRRL
BBFFBBBLRR
BBFFFBFRRR
FBFFBFBRLR
FBFBFFBRLR
BBFFFFBLLL
FBBFBFFRRR
FFBBFBFRLL
FFFFBFBLRR
FBFBFFFRRL
FBBFBBFRRL
FFBFFBFLRL
FFBFBFBRRR
FFFFBBFRRL
BFFBBBFRLR
FFBFBBBRRL
BFFBFBBLLL
FBBBBFFRRL
FFFBFBFRLR
FFBFFBBLRL
BFFBFFBLRR
FBBBFFFRLR
FBBBFFBRLR
FBBBBBBLLR
FBBFBFFLLR
BBFFBFFRRL
FBBBBBFRRL
FFFBBFFRLL
FFFBBFFLRL
FFBFFBBLRR
FBBFFFBLLL
FFFFBBFRLL
FFBFFBBLLR
BFFFBFFLLL
BFFBBFBRLL
FBBFFFBRLR
FFFBFBBLRR
BFBFFBBLRL
FBFFFBFRLR
BFBFFFFLRL
BFBBBBBLLR
FFFBBFFLLR
BFBFFFBLLR
FFFFBBFLLR
FBBFBBFLRR
FBBBFBBLLR
BFFFFFBRRR
FBFBFFFLLR
FBFBBBBRLR
FFFBFFBLLR
FFFBBFBLLL
BFFBFBBRRL
BFBFBBBLRL
BFFFBBFRLL
FBBFFBFLRL
BFBFBBBRRR
FFFBFFBRRR
BFFFBFFLRL
BBFFBBFRLR
FFFBBBBLRL
FBBFFFFRRL
FBFFBFFRRL
BFFFFFBRLL
FBFBBFBRRR
FBFBBBFLRL
FBFFBBBLLL
FFFFBBBRRR
FBBBFBBLRL
BFBFFBBRLL
FBFBBBFRLR
FFFBBBFLRR
BFFBFFFRLR
BFBFFBFRLR
BFBBFFFLLR
FBFFBBBRRR
FBBBFFBLRL
BFBFBBBLRR
FBBBBBFLRR
FBBBBBBRLR
BFBFFFFRRR
BFBBBBFLRR
BFBBFFFRRR
FFBFBFFLLL
FBFFFBFLRL
BFBBFBFLLR
BFFBBBFLLR
FBBFBFBRRR
FFBFFBFRLL
BFFFBFFLRR
FBFBBFFLLL
FFFBFBBRRR
FBBBFBBRLR
BFFFBBBRRR
FFFBFBFLLR
BFFBFBBLRL
FBFBBFFRLL
BFBBFBBLRR
FFFBBBBRLR
BFFFFFFLRR
FBFFBBFLRL
BFBFFFBRRL
BBFFBFFLLL
FFBBFBBRRR
BFBFFBFRRL
BFFFFBBLRL
BFBBFFFLRL
FBFFFBFLLL
FBBFFBBRLL
FFBBFFBRLR
FFFBFFBLRR
BFBFBFFLRL
FBBBBFBRRR
FBBFFBFLRR
BFFBBFBRRR
FFFBFFBRLL
FFBFBFFLRR
FFFBFFFLRL
BFBFBFBRRL
BFFFFBFRRR
FFBFBBBRLR
BFFBFFBRRR
FBBBFBFRRR
FBBBBBFRLL
BBFBFBFLLL
FBFFFBBRRL
FBBBBFBRLL
BBFFBFBRLR
FFFFBFBLLL
FFBFBBBLLR
FFFBBFBRLR
BFBFFBBRRL
FFBFBFBRRL
FFBFBFBRLR
FFFBBBFRLL
FFBFBBFRLL
FFFFBFBRRR
FFFFBFBRLR
BBFFFFFLLL
BFBFFFBLLL
BFBBBFFRRR
FBBBBBBLLL
FFBFBBBRLL
FBFBBBFLLL
FBBBFFBRRR
BFBBFBFLRR
FFFBBFBLLR
FFFBBBBRRR
FFBFBFBLRL
FFBBFFFLRR
FBBFBFBLRL
FBBFFBBRLR
FBBFFBBRRR
BFBFFBFLLL
FBFFFFBLRL
FFBBBBBRLL
FBFBFBBLRL
FBFFFFBRRL
BFBBBFBRRR
FFFBBBFLRL
FBFBFBFLRR
BFFBFFBLLR
BFBFBFBRLR
FBBFBBFRRR
BFBFFBBLLR
BFBFFFBLRR
FBBBBBFLRL
BFFFBFBLLR
BBFFFFBRLR
BBFBFFFRRL
BBFBFFBLRL
BBFFFBFLRL
FFBBFFFLRL
FBBBFBFRLL
BFFFFBFRLL
FBBBFFFLRR
FFBFFBFRRR
FBBBFBFRLR
FFBFBFFRRL
FBFBBFBLLL
FFBBBFBLRL
FFBBBBFRRR
FBFBFBBLLR
FBBBBFBLRL
FFBBBFFLLL
FBFFBBFLRR
FBFBFBBRLR
BBFFBBFLRR
FBFBBBFRRL
BFFBBFFRRR
BBFFFBBRRR
BFFBBBBRRL
BBFFFFFLLR
BFBBBFFLLR
BBFBFFFLLL
BFFBBBFLRL
BFBFFBFLRR
FBBFBFBRLL
BFFFFFBLLR
BFBFBBFRLL
FBBFBBBRRR
FFBFFFBRRL
BFBBBBFRRR
BFFFBBFLLR
FBBBFFFLLL
FBFFFFFLLR
FFBFFFFRRL
FFBBFFFRLR
FBFBFFFRLL
FFBBBBBLRL
FBFFBFBLLR
BFBFBBFLRL
BFFFBFFRLR
BBFFBBFLRL
BFFBFFBRLL
BFFFFBBLRR
BFBFBBBLLR
BFFBBBBRLR
FBBBBFFRRR
BBFFBBBLRL
FBBBFFFRLL
FBBFFFFRRR
FFBBBFFLLR
BBFFBBFLLR
BFFBBBBRRR
BFBBFFBLLR
BFBFBBBLLL
BFFBBFBLLR
BFBBFBFRRR
BFFFBFBRRR
BFBBBFFLLL
BBFFBFFRLL
FBBFFFBLRL
FFFBFFFLLL
BFBBBFBLRR
FFBBBBFRLR
BFFBFBFLRL
BFBFBFBLLR
BBFFFBBLLR
FBFBFFFLRR
FFBFBFFLLR
FFBBFFBLLL
BFBFBFFRRR
FBFBBBBLLR
BFBFBBFLLR
FBBFFBBLLL
FBFFBBBRLR
FBFFBBBRLL
FBFFBFFLLR
BFFBBBFRRR
BFFFFFFLLR
BFBBFBFRRL
FFBFFBBRLR
FBBBBFFRLR
BFFBFFFRRL
FFBFBBFLLL
FFFBFBBRLL
FFFBBBBRLL
FBBFBBBRLR
FFFBFBBRRL
FFBBFFFRRR
BFFFFFFRRL
FFBBFFBLRL
BFFFFFBRLR
BFFBBBFLLL
FBFFBFFLLL
FFBFFFFLRL
FFFFBBBLRL
FBFBBFFRRR
FBFFBBFRLL
BFFFFFFLLL
FFBFFFBLLL
BFBFBBFLRR
FBBFFFFLLR
BFBFBFFRLR
BFBBFFFRLR
BFBBBFFRLR
BFFBBFFLRR
BBFFBBBRLL
FBBFFFFRLL
BFFFFBBRRL
FBFBBFBRRL
BFFBFFFRRR
FFBFFBFRRL
BFFFFBBRLR
BFFFFBFLRL
BFBBBFFRRL
FBBBFBFLLL
BFFBFBBLLR
FBFBFBBLRR
FBBFBBBLRR
BFBFBFFLLR
BFFBBBBLRL
BFFFFFFRLL
FFFBFFFRLR
FFBBFBFLRL
FBFBFFBLLL
BBFFBFFRLR
FBBFBBFLLL
BFBBFBBRRR
FBBBBFFRLL
BFBBBFBLLR
FFBFFFBLLR
FFFBFFFLRR
FBFBFBFRLR
BBFFFFBRRR
FBBFBBBLLR
BFBBBFBRRL
BBFBFFBLLR
FFBFBBBLRR
FFBBBFBLLL
FBBBFFBLRR
FFFBFBFLRL
FBFFBBFRRL
FFFBBBFLLR
BFFFBBBLRL
BBFFFBBRLL
BBFFFBFLLL
FBBFBFFLRL
FFFBFBBRLR
FFBFBBFRLR
FBBBFBBLRR
FBFFBFBRRR
BFFBBFFLLL
FFBBFFFLLL
FFFBFFBRLR
FFBBFBFLLL
FBBFBBFLLR
FFFFBFFLLR
BFFBFBBRLR
FBFBFFBRLL
BBFFFFFRLL
BBFBFFFLRL
FFFBFFFRRR
BFFBFBFLLR
FFBBBFBLLR
FBFFBBFLLL
FBFFFBBLRR
BBFFBBBRRL
FBFBBFBLLR
FFFBFFFLLR
BBFFBFFRRR
FBBFFBBLRL
FBBFBFFRLR
BBFBFFFRLR
BFBFBFBLRR
FFBBFBBRLR
FFFBFFFRLL
BBFFBBBLLR
FBBBBFBLRR
FBFBFBFLLR
BFFFFBFLRR
BFFFFBBRLL
FBBBBBBRLL
FBBBBBFRLR
BFFFBFBLRL

60
2020/day5/day5.lua Normal file
View File

@ -0,0 +1,60 @@
max_id_possible = 127 * 7 + 7
--[[ table to hold seats accounted for --]]
occupied = {}
for i = 0,max_id_possible
do
occupied[i] = false
end
--[[ max id in data --]]
m = 0
for l in io.lines("data")
do
row1 = 0
row2 = 127
for i = 1,7,1
do
c = l:sub(i,i)
median = (row1 + row2) / 2
if (c == 'F')
then
row2 = math.floor(median)
else
row1 = math.ceil(median)
end
end
col1 = 0
col2 = 7
for i = 8,10,1
do
c = l:sub(i,i)
median = (col1 + col2) / 2
if (c == 'L')
then
col2 = math.floor(median)
else
col1 = math.ceil(median)
end
end
id = row1 * 8 + col1
if (id > m)
then
m = id
end
occupied[id] = true
end
print("max id: ", m)
for i = 0,max_id_possible
do
if (occupied[i] == false)
then
if(occupied[i-1] and occupied[i+1])
then
print("your id: ", i)
end
end
end