Initial setup and day1
This commit is contained in:
commit
35f21f5b5b
8 changed files with 432 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
out/
|
||||
*.out
|
10
2020/Makefile
Normal file
10
2020/Makefile
Normal file
|
@ -0,0 +1,10 @@
|
|||
day1.out: out/types.o day1.cpp day1.input
|
||||
g++ $(flags) day1.cpp out/types.o -o $@
|
||||
|
||||
out/types.o: types.hpp types.cpp
|
||||
mkdir -p out/
|
||||
g++ $(flags) -c types.cpp -o $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm out/* day*.out
|
79
2020/day1.cpp
Normal file
79
2020/day1.cpp
Normal file
|
@ -0,0 +1,79 @@
|
|||
/*******************************************************************************
|
||||
*
|
||||
* Copyright (c) 2020 Gnarwhal
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files(the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
#include "types.hpp"
|
||||
|
||||
// Find 2 numbers that sum to 2020
|
||||
auto find_2020_x2(const std::vector<i32> & list) -> void {
|
||||
auto begin = 0;
|
||||
auto end = list.size() - 1;
|
||||
auto sum = 0;
|
||||
while ((sum = list[begin] + list[end]) != 2020) {
|
||||
if (sum < 2020) {
|
||||
++begin;
|
||||
} else {
|
||||
--end;
|
||||
}
|
||||
}
|
||||
std::cout << (list[begin] * list[end]) << std::endl;
|
||||
}
|
||||
|
||||
// Find 3 numbers that sum to 2020
|
||||
auto find_2020_x3(const std::vector<i32> & list) -> void {
|
||||
for (auto n0 = 0; n0 < list.size() - 2; ++n0) {
|
||||
for (auto n1 = 1; n1 < list.size() - 1; ++n1) {
|
||||
for (auto n2 = 2; n2 < list.size(); ++n2) {
|
||||
if (list[n0] + list[n1] + list[n2] == 2020) {
|
||||
std::cout << (list[n0] * list[n1] * list[n2]) << std::endl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i32 main(i32 argc, char * argv[]) {
|
||||
auto list = std::vector<i32>();
|
||||
{
|
||||
auto line = std::string();
|
||||
auto file = std::ifstream("day1.input");
|
||||
while (getline(file, line)) {
|
||||
list.push_back(std::stoi(line));
|
||||
}
|
||||
}
|
||||
std::sort(list.begin(), list.end());
|
||||
|
||||
find_2020_x2(list);
|
||||
find_2020_x3(list);
|
||||
|
||||
return 0;
|
||||
}
|
200
2020/day1.input
Normal file
200
2020/day1.input
Normal file
|
@ -0,0 +1,200 @@
|
|||
1587
|
||||
1407
|
||||
1717
|
||||
1596
|
||||
1566
|
||||
1752
|
||||
1925
|
||||
1847
|
||||
1716
|
||||
1726
|
||||
1611
|
||||
1628
|
||||
1853
|
||||
1864
|
||||
1831
|
||||
1942
|
||||
1634
|
||||
1964
|
||||
1603
|
||||
1676
|
||||
1256
|
||||
1906
|
||||
1655
|
||||
1790
|
||||
1666
|
||||
1470
|
||||
1540
|
||||
1544
|
||||
1100
|
||||
1447
|
||||
1384
|
||||
1464
|
||||
1651
|
||||
1572
|
||||
907
|
||||
1653
|
||||
1265
|
||||
1510
|
||||
1639
|
||||
1818
|
||||
376
|
||||
1378
|
||||
1132
|
||||
1750
|
||||
1491
|
||||
1788
|
||||
1882
|
||||
1779
|
||||
1640
|
||||
1586
|
||||
1525
|
||||
1458
|
||||
1994
|
||||
1782
|
||||
1412
|
||||
1033
|
||||
1416
|
||||
1813
|
||||
1520
|
||||
1968
|
||||
715
|
||||
1396
|
||||
1745
|
||||
1506
|
||||
1024
|
||||
1798
|
||||
1870
|
||||
1615
|
||||
1957
|
||||
1718
|
||||
1349
|
||||
1983
|
||||
1387
|
||||
1738
|
||||
1588
|
||||
1321
|
||||
1160
|
||||
1907
|
||||
1861
|
||||
1940
|
||||
1475
|
||||
2004
|
||||
1852
|
||||
1760
|
||||
1608
|
||||
1028
|
||||
1820
|
||||
1495
|
||||
1811
|
||||
1737
|
||||
1417
|
||||
1316
|
||||
1087
|
||||
1803
|
||||
1595
|
||||
1346
|
||||
1971
|
||||
1692
|
||||
1678
|
||||
1330
|
||||
1480
|
||||
1097
|
||||
1898
|
||||
1973
|
||||
1567
|
||||
1733
|
||||
1336
|
||||
1381
|
||||
1327
|
||||
1670
|
||||
1436
|
||||
1989
|
||||
1334
|
||||
89
|
||||
1862
|
||||
1715
|
||||
1743
|
||||
1967
|
||||
1765
|
||||
1402
|
||||
1729
|
||||
1749
|
||||
1671
|
||||
1196
|
||||
1650
|
||||
1089
|
||||
1814
|
||||
1783
|
||||
1225
|
||||
1823
|
||||
1746
|
||||
2009
|
||||
1886
|
||||
1748
|
||||
1481
|
||||
1739
|
||||
1912
|
||||
1663
|
||||
1668
|
||||
1314
|
||||
1594
|
||||
705
|
||||
1449
|
||||
1731
|
||||
1487
|
||||
1648
|
||||
1466
|
||||
1317
|
||||
1979
|
||||
1799
|
||||
1926
|
||||
1703
|
||||
1656
|
||||
1978
|
||||
2005
|
||||
1865
|
||||
1982
|
||||
1951
|
||||
1892
|
||||
1713
|
||||
1744
|
||||
1598
|
||||
1606
|
||||
1583
|
||||
1895
|
||||
1804
|
||||
1430
|
||||
1816
|
||||
1364
|
||||
1575
|
||||
1918
|
||||
1431
|
||||
1812
|
||||
1471
|
||||
1797
|
||||
928
|
||||
1934
|
||||
1156
|
||||
94
|
||||
1563
|
||||
1909
|
||||
1453
|
||||
1392
|
||||
1427
|
||||
1819
|
||||
1524
|
||||
1695
|
||||
1866
|
||||
2008
|
||||
1413
|
||||
1698
|
||||
1051
|
||||
1707
|
||||
1904
|
||||
1681
|
||||
1541
|
||||
1621
|
||||
1421
|
||||
1809
|
||||
1576
|
47
2020/types.cpp
Normal file
47
2020/types.cpp
Normal file
|
@ -0,0 +1,47 @@
|
|||
/*******************************************************************************
|
||||
*
|
||||
* Copyright (c) 2020 Gnarwhal
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files(the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#include "types.hpp"
|
||||
|
||||
constexpr auto operator "" _u8 (unsigned long long int num) noexcept -> u8 { return u8(num); }
|
||||
constexpr auto operator "" _i8 (unsigned long long int num) noexcept -> i8 { return u8(num); }
|
||||
constexpr auto operator "" _u16 (unsigned long long int num) noexcept -> u16 { return u16(num); }
|
||||
constexpr auto operator "" _i16 (unsigned long long int num) noexcept -> i16 { return i16(num); }
|
||||
constexpr auto operator "" _u32 (unsigned long long int num) noexcept -> u32 { return u32(num); }
|
||||
constexpr auto operator "" _i32 (unsigned long long int num) noexcept -> i32 { return i32(num); }
|
||||
constexpr auto operator "" _u64 (unsigned long long int num) noexcept -> u64 { return u64(num); }
|
||||
constexpr auto operator "" _i64 (unsigned long long int num) noexcept -> i64 { return i64(num); }
|
||||
constexpr auto operator "" _usize(unsigned long long int num) noexcept -> usize { return usize(num); }
|
||||
|
||||
constexpr auto operator "" _c8 (char c) noexcept -> c8 { return c8(c); }
|
||||
constexpr auto operator "" _c16(char c) noexcept -> c16 { return c16(c); }
|
||||
constexpr auto operator "" _c32(char c) noexcept -> c32 { return c32(c); }
|
||||
constexpr auto operator "" _c8 (unsigned long long int c) noexcept -> c8 { return c8(c); }
|
||||
constexpr auto operator "" _c16(unsigned long long int c) noexcept -> c16 { return c16(c); }
|
||||
constexpr auto operator "" _c32(unsigned long long int c) noexcept -> c32 { return c32(c); }
|
||||
|
||||
constexpr auto operator "" _f32(long double num) noexcept -> f32 { return (f32) num; }
|
||||
constexpr auto operator "" _f64(long double num) noexcept -> f64 { return (f64) num; }
|
70
2020/types.hpp
Normal file
70
2020/types.hpp
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*******************************************************************************
|
||||
*
|
||||
* Copyright (c) 2020 Gnarwhal
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files(the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef GNARWHAL_REDWOOD_TYPES
|
||||
#define GNARWHAL_REDWOOD_TYPES
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
using u8 = std::uint8_t;
|
||||
using i8 = std::int8_t;
|
||||
using u16 = std::uint16_t;
|
||||
using i16 = std::int16_t;
|
||||
using u32 = std::uint32_t;
|
||||
using i32 = std::int32_t;
|
||||
using u64 = std::uint64_t;
|
||||
using i64 = std::int64_t;
|
||||
using usize = std::size_t;
|
||||
|
||||
constexpr auto operator "" _u8 (unsigned long long int num) noexcept -> u8;
|
||||
constexpr auto operator "" _i8 (unsigned long long int num) noexcept -> i8;
|
||||
constexpr auto operator "" _u16 (unsigned long long int num) noexcept -> u16;
|
||||
constexpr auto operator "" _i16 (unsigned long long int num) noexcept -> i16;
|
||||
constexpr auto operator "" _u32 (unsigned long long int num) noexcept -> u32;
|
||||
constexpr auto operator "" _i32 (unsigned long long int num) noexcept -> i32;
|
||||
constexpr auto operator "" _u64 (unsigned long long int num) noexcept -> u64;
|
||||
constexpr auto operator "" _i64 (unsigned long long int num) noexcept -> i64;
|
||||
constexpr auto operator "" _usize(unsigned long long int num) noexcept -> usize;
|
||||
|
||||
using c8 = u8;
|
||||
using c16 = u16;
|
||||
using c32 = u32;
|
||||
|
||||
constexpr auto operator "" _c8 (char c) noexcept -> c8;
|
||||
constexpr auto operator "" _c16(char c) noexcept -> c16;
|
||||
constexpr auto operator "" _c32(char c) noexcept -> c32;
|
||||
constexpr auto operator "" _c8 (unsigned long long int c) noexcept -> c8;
|
||||
constexpr auto operator "" _c16(unsigned long long int c) noexcept -> c16;
|
||||
constexpr auto operator "" _c32(unsigned long long int c) noexcept -> c32;
|
||||
|
||||
using f32 = float;
|
||||
using f64 = double;
|
||||
|
||||
constexpr auto operator "" _f32(long double num) noexcept -> f32;
|
||||
constexpr auto operator "" _f64(long double num) noexcept -> f64;
|
||||
|
||||
#endif // GNARWHAL_REDWOOD_TYPES
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
Mit License
|
||||
|
||||
Copyright (c) 2020 Gnarwhal
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
3
README.md
Normal file
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Advent of Code
|
||||
|
||||
https://adventofcode.com/
|
Loading…
Reference in a new issue