diff options
Diffstat (limited to 'day03')
-rwxr-xr-x | day03/day03 | bin | 83112 -> 0 bytes | |||
-rw-r--r-- | day03/day03.cpp | 96 | ||||
-rw-r--r-- | day03/day03_input.txt | 1000 | ||||
-rw-r--r-- | day03/day03_input_ez.txt | 12 | ||||
-rw-r--r-- | day03/makefile | 2 |
5 files changed, 0 insertions, 1110 deletions
diff --git a/day03/day03 b/day03/day03 Binary files differdeleted file mode 100755 index ccb1732..0000000 --- a/day03/day03 +++ /dev/null diff --git a/day03/day03.cpp b/day03/day03.cpp deleted file mode 100644 index 036cd07..0000000 --- a/day03/day03.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include <iostream> -#include <fstream> -#include <string> -#include <vector> - -int bin_to_dec (std::string bin) { - int dec = 0, pow = 1; - for (std::size_t i=bin.size(); i > 0; i--) { - dec += pow * (bin[i-1] == '0' ? 0 : 1); - pow *= 2; - } - return dec; -} - -std::vector<int> get_freq (std::vector<std::string> bits) { - std::vector<int> freq; - for (std::size_t i=0; i<bits[0].size(); i++) { - freq.push_back(0); - } - - for (auto b : bits) { - for (std::size_t i=0; i< b.size(); i++) { - freq[i] += (b[i] == '0' ? 0 : 1)*2-1; - } - } - return freq; -} - -std::vector<std::string> filter (std::vector<std::string> bits, int inv, int sel) { - std::vector<std::string> res; - auto freq = get_freq(bits); - - for (auto b : bits) { - int f = freq[sel] * inv; - if (f == 0) f += inv; - if ((f > 0 ? '0' : '1') == b[sel]) { - res.push_back(b); - } - } - - return res; -} - -int main (int argc, char *argv[]) { - if (argc != 2) return 1; - - std::string raw; - std::getline(std::ifstream(argv[1]), raw, '\0'); - - std::vector<std::string> bits; - - while (1) { - auto token = raw.find("\n"); - if (token != std::string::npos) { - bits.push_back(raw.substr(0, token)); - raw = raw.substr(token+1); - } else { - if (raw.size() > 0) bits.push_back(raw); - break; - } - } - - auto freq = get_freq(bits); - - std::string gamma = "", epsilon = ""; - for (std::size_t i=0; i<freq.size(); i++) { - gamma += freq[i] > 0 ? "1" : "0"; - epsilon += freq[i] > 0 ? "0" : "1"; - } - - int g = bin_to_dec(gamma); - int e = bin_to_dec(epsilon); - std::cout << "power level " << e*g << ", " - << "epsilon " << e << " (" << epsilon << "), " - << "gamma " << g << " (" << gamma << ")" << std::endl; - - std::vector<std::string> o2 = bits; - for (std::size_t i=0; i<freq.size(); i++) { - o2 = filter(o2, 1, i); - if (o2.size() == 1) break; - } - - std::vector<std::string> co2 = bits; - for (std::size_t i=0; i<freq.size(); i++) { - co2 = filter(co2, -1, i); - if (co2.size() == 1) break; - } - - int generator = bin_to_dec(o2[0]); - int scrubber = bin_to_dec(co2[0]); - std::cout << "oxigen generator rating " << scrubber*generator << ", " - << "epsilon " << generator << " (" << o2[0] << "), " - << "gamma " << scrubber << " (" << co2[0] << ")" << std::endl; - - return 0; -} diff --git a/day03/day03_input.txt b/day03/day03_input.txt deleted file mode 100644 index ac22a69..0000000 --- a/day03/day03_input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -011001101000 -010101111100 -000000111101 -001001001010 -010011000001 -111111001110 -001011101111 -110011010110 -100011111110 -101110000111 -000011011100 -001111111011 -011101001111 -111001010110 -011100011110 -001011000010 -100010111011 -000101010011 -000001101100 -010001011110 -100010101000 -111101011101 -110000100001 -011011010101 -110101100110 -001101101010 -111010110011 -011111111000 -010001010001 -000001010101 -001001011011 -101111110011 -100011010001 -111010010111 -011010011010 -101111011011 -101010111100 -001111100110 -010100110111 -010110101100 -000111110101 -111110101110 -111010000000 -011111111010 -000101011100 -000001010110 -101000100101 -100001011001 -011101110010 -110111100100 -110011001011 -000010001111 -000100010101 -110111001100 -010001100000 -101111110101 -111000011011 -000100001001 -101101011101 -001001011110 -101100111010 -011011000010 -110010010111 -101001010101 -000000101110 -000011011111 -010001000011 -011011001010 -101101111011 -100010001010 -001001011100 -010011110001 -000001111101 -100001000101 -011101011010 -000010101110 -001010101010 -101010011011 -000111001011 -000011101000 -110100101001 -000111111010 -100111100101 -111010001111 -111100110001 -011111101010 -110101000011 -001111101100 -101000100110 -100101100011 -000011010011 -010101011111 -010000110111 -110011001001 -101011011101 -001011100001 -000001100101 -001001001101 -001101001111 -001110110001 -010110101110 -001100110110 -001000001111 -101101001001 -011111011010 -111111101110 -111001100000 -100101011001 -010101100101 -100000110100 -011001001000 -111100110011 -111011110001 -110011111010 -001101001010 -111110011111 -110101100000 -111001000101 -010001111110 -111011010100 -110011010111 -100100110111 -111111011010 -011110101111 -001011110010 -010111011010 -011101101101 -011010101110 -011000110001 -010110101010 -011110010000 -111111011100 -111011000101 -100110101110 -010101100010 -101100011110 -000010110101 -010010011110 -110000000110 -011111010101 -000110110011 -101011000010 -000011000111 -101011010000 -101101101001 -010000101010 -101001001001 -111010110110 -111000111101 -000001010111 -101110001100 -110010110001 -100000110001 -101100101011 -100000111001 -010110100111 -101011001111 -101010111001 -010010110000 -001110010011 -010101101110 -011000010100 -100111111000 -011110100011 -110100100111 -101110101000 -101010101111 -101001000000 -111010000110 -101001000100 -010001100111 -011011010001 -000101010101 -010110000011 -100000101110 -110010001000 -111000100001 -001001101001 -110010001001 -100001111011 -101010010100 -110011100101 -010101100001 -011101010100 -110100101111 -110100001111 -011000101101 -001011101100 -010010010101 -011011111010 -010101000001 -100101100000 -101001111101 -010000000100 -110000110100 -000000001101 -100100111101 -111100110010 -001011001111 -101100001011 -001111010001 -101100011001 -100110110001 -010111000011 -011010110101 -100111100011 -000111110011 -010101111101 -010010000000 -011000011011 -001100011001 -001011001001 -101110101101 -101111110111 -101011100100 -000100110100 -110000101111 -011001111101 -000000000111 -111001001010 -110100001100 -000001001110 -111001101011 -100011011111 -110000001000 -110101011011 -001010000101 -001011111001 -011011111100 -010100110101 -110101111001 -010110010101 -010010001000 -001001110111 -011111111111 -100011100010 -000110001101 -011111010000 -010111110010 -110010100011 -101011110101 -110011011110 -010000000101 -011101100100 -110010011100 -011101101100 -000010001001 -000011101101 -000101100011 -010111111000 -010111100111 -010101000101 -110111100010 -110001101011 -111010100000 -101010101011 -011101010101 -000100110111 -000111100111 -000100111111 -111100001001 -010000100001 -110101011111 -100010000100 -000011011000 -111011110000 -101000011100 -110001001010 -001000010101 -110110000101 -100000011110 -001101111010 -010111001100 -111011111100 -100101001000 -010111101001 -110010010000 -110011010000 -000010100111 -100101111101 -110101100010 -110100011110 -101111010110 -110001001111 -011101000111 -001011001101 -110001000010 -011110100110 -000101100110 -000110111110 -001010111010 -100110000111 -001000010110 -100001110100 -000111000110 -101100011100 -110100110110 -100011010111 -000101110001 -001010010110 -101000000101 -100101101000 -000111111110 -010010010111 -110010001010 -001100110111 -110110110101 -011111011101 -110101100111 -100100100111 -011011000000 -111101001100 -011101000011 -011101001010 -101101101101 -100100110010 -001000000010 -010010001010 -111110111001 -000111010001 -011100111111 -011111011001 -110101000000 -011110000010 -001111010110 -010011111111 -110101111011 -101110111111 -001001100001 -011100111100 -110111001110 -011000000111 -001100010111 -001011010010 -010010001011 -101110000011 -100000101000 -100010100100 -000111011101 -001000111011 -010010101010 -111011010011 -110100010001 -011110001110 -111010110001 -010000010111 -010110101101 -111101100001 -110011100110 -000101111110 -110010101010 -000001010000 -001101111101 -011011110100 -110001010101 -011001000001 -001101101100 -100011011011 -101011100010 -011011100101 -100110110101 -110111001011 -000100101011 -001101010100 -010000011100 -101100111011 -011001011100 -011011010100 -011100110001 -010010110011 -101000110011 -111101010001 -111000000100 -101101100111 -001011111000 -010100000111 -011110101101 -111011101100 -110101110001 -001110010000 -010010000111 -101001111011 -100100111100 -000101101101 -101111110100 -100000101111 -011001110000 -011110011001 -000101010110 -000000000101 -110010001100 -000111100100 -010010011010 -001111110100 -011010001010 -101100101111 -011001001011 -100011111101 -101100000001 -100100101010 -000000000100 -111001110101 -000010011110 -110110100100 -111010010001 -011101010010 -011100101111 -010110000010 -010000110101 -110101010011 -001110011110 -111010011010 -000110101000 -001111000001 -010110110000 -001100110001 -110011011111 -000100111011 -110001000111 -011010111101 -000010100110 -010100101001 -010001000010 -000101110101 -101100110100 -111000110010 -111011110010 -010111001111 -100000101101 -101100001010 -100100001001 -111111111101 -001010101001 -000011011010 -101011010010 -111001000110 -111100010011 -111010011100 -100000111100 -011100001101 -110001101000 -101111011001 -001100001000 -101110010111 -011111100000 -001011100000 -101011101010 -110010101111 -001110000101 -001111011011 -011110101000 -111000001000 -010100111010 -010010111001 -110000110001 -110011000101 -001110000100 -010100101101 -101010110100 -100001010100 -100011010011 -100000010010 -011101010111 -001000010111 -001100111100 -000110100011 -101111101010 -010001010000 -001100100110 -111001111110 -101000001001 -000010110010 -110111101011 -101011000011 -001000111111 -100011001101 -011010010101 -110011100011 -110010011010 -110001010100 -100010111101 -101110000110 -010111001011 -110011011100 -110001100011 -000100011010 -111011100010 -011110110011 -011111100010 -000100001101 -100010010000 -110000000011 -101001011000 -101100110101 -001010101011 -011001011010 -001010001001 -001111011100 -111100010001 -100011010110 -001000110111 -011011010011 -001100000000 -100001111100 -000011110101 -100010000111 -000010110011 -000010111110 -011110000101 -010000001011 -001111110010 -001110001001 -011101111111 -010110110001 -110000000111 -010101011101 -010111001001 -100100010010 -101001101110 -100001001010 -010001011101 -100111010101 -100000101011 -000100101001 -110111001001 -100100000001 -010111010010 -111101111011 -011010010010 -111101101000 -100110111101 -010010001001 -100111011000 -110101111111 -111010101110 -010011110010 -101001100100 -010000101111 -010011001111 -110010011111 -101110100111 -011010100101 -111111001001 -010101100110 -101001001101 -001000101010 -010001001100 -101001101000 -110110100000 -011101000101 -100101010101 -101110111011 -010010101001 -110100011000 -110101111010 -110000100000 -010011101101 -111011001101 -100100011101 -110100010111 -011100110100 -010111011001 -011101010001 -101000000010 -100111111001 -100100001000 -001000001000 -001000000100 -011110110010 -010101010011 -101101101100 -110111111001 -010000010011 -100010100001 -000110101111 -101010101101 -100101111100 -000111010110 -001101101111 -110010000011 -110100001110 -011111111101 -111011010101 -001010100010 -100010100110 -101101110111 -010110011011 -111001110110 -011110101001 -110011100111 -000100111101 -101100011000 -101101001010 -011111100111 -010000011000 -100001100110 -000000101101 -000111010010 -110000001100 -111111101010 -001000100010 -111111111011 -001011100111 -000101110010 -010111110011 -010000011001 -111001111101 -110100001101 -010001101000 -110000101011 -011011000110 -110010111011 -100111101010 -011001101011 -001101010011 -011000100101 -110111101111 -001000100001 -010010111101 -101101101011 -011111011100 -111111010110 -001110000000 -101011110010 -011101011111 -001001101101 -011101110000 -011100011101 -111101001101 -010111010101 -010111101010 -001000101101 -100000000011 -111110101111 -000111101111 -001110010101 -101111001101 -111100110000 -110010100000 -011101110100 -100011001111 -010110001001 -111100101100 -101001110100 -011010010111 -011000100100 -001100110100 -001001111000 -001000000111 -110100000111 -011000001011 -001011000000 -110110110111 -000010111011 -001001000011 -000011100111 -110011001111 -010000111101 -001110100010 -000011110001 -011001111011 -110111000001 -111111000001 -011001100110 -110010101100 -111101010100 -010010000101 -000011011011 -110110010001 -010111111010 -010000010101 -110000011010 -110001101110 -000110101011 -101111000111 -001101100000 -010100000001 -111110001001 -000011110000 -111100111001 -000001001011 -011000010110 -000001000100 -011100111000 -001011111110 -011100000000 -000101001011 -111111110110 -111010011000 -001000111101 -011001110010 -001101011100 -100110001111 -110110111010 -001110101100 -010000101100 -010011000011 -100101110010 -000000111010 -000001111001 -111101011000 -101000011001 -111110000101 -101111111011 -100110111110 -000110010110 -011011101110 -100000010111 -110111001000 -000010101010 -001010011011 -101010101010 -101100000000 -000101101011 -010110100110 -110010010100 -001010110101 -001110000001 -010001101010 -111111110100 -001101110110 -111101010111 -101011101100 -110001101010 -100111010100 -101101111001 -001011100110 -010010001111 -100101110110 -110011000010 -001111010100 -000101011011 -110000000001 -011011001001 -001001011111 -000111011111 -100001001100 -111011010010 -010101011001 -000001110100 -000010100101 -110110010010 -100010111110 -011110111110 -000001101000 -001011000110 -000010001010 -101101010100 -011011010000 -000011111000 -101000001110 -011110101011 -110100111000 -000011000010 -111111010001 -011101110001 -100000111101 -110100101101 -110000100101 -011001110110 -110001010010 -010010110110 -011110001000 -111010110100 -101111110010 -110000110111 -111101110100 -110111101110 -100110010111 -001001100011 -001110111000 -101110100100 -010000101101 -010111100101 -011001100010 -011100000101 -101001111001 -100011001010 -100010000010 -100101000010 -111111100101 -100001101110 -101001010110 -100000100011 -100000011000 -000110000001 -000000011011 -011000110101 -011010111011 -111110000001 -001001110100 -001011011110 -110111010110 -011101110101 -101111000101 -100001010010 -000001111000 -001110010100 -111111101100 -001011010001 -111001111001 -100101101010 -111000000010 -010101001010 -001010000010 -101011000110 -110011001010 -001000011000 -001010010011 -110000111101 -001001100000 -111101100111 -011001001100 -001100111011 -100001010101 -111010100011 -111000011111 -001000000000 -101110011001 -000000000011 -111011000111 -011010100011 -110000110000 -000011001001 -011000010001 -011110000011 -011101000000 -010100110011 -010110010001 -111001101111 -110111110100 -110111110110 -100111001011 -111100110110 -101010001110 -100110000010 -011011100001 -001101010010 -010001110011 -010011110000 -110010100111 -001101110100 -101010101100 -110000111000 -011101110110 -101011110001 -110011000000 -010000011011 -001011010000 -010111010001 -010100010101 -110101000100 -010011101011 -010110111001 -101111000011 -011011100000 -000010100010 -001100110000 -110000111001 -100100100000 -001101000010 -100000010011 -100010011110 -110101010000 -000100000101 -000111000001 -000001111011 -100111011101 -110111110111 -011101111000 -001001000110 -100110010011 -100011100111 -010011010000 -010011010111 -001101100101 -010000010110 -000101010001 -011111010100 -010010111100 -001010101110 -110000001011 -011001010101 -000001111110 -010111111011 -011110010010 -001001101100 -101100101000 -100000001110 -110001001110 -011110111011 -001000110011 -111100110111 -001101100111 -000110110000 -000010011011 -100110111010 -111110001100 -000000101100 -110000111100 -100110111100 -110111111100 -110000111010 -100001100100 -100010011010 -011011100110 -110100010110 -001001010101 -000110101110 -101001100000 -100010110011 -111000001101 -101110100110 -100010111100 -000101110110 -000011011001 -000001010100 -101100111001 -011101111101 -011110011000 -111010001011 -010101110101 -100001100101 -100110100010 -100110011000 -001010100110 -011001010111 -111111001010 -111111001000 -111110100101 -000101000011 -110101101111 -110100010010 -011100000010 -001000010100 -101100000111 -001010111111 -101001010011 -101011001000 -001100000011 -010010101000 -101101111101 -101001010010 -100101111011 -101110101110 -100000100100 -000000000010 -011101100011 -110000110110 -101000110000 -111011111010 -010111000110 -001111110110 -100111110110 -100110011101 -000000001000 -101110111010 -000101011000 -001011100011 -011101100111 -000011000011 -000101011001 -110101101101 -101000001111 -111000010101 -000011100010 -011010111001 -001100100101 -010111111101 -010101111011 -000101001100 -101010000111 -111100111111 -100000000111 -110111110011 -000110110111 -010011011111 -100110010100 -000100111110 -001000111001 -011111000001 -001010100101 -101010001100 -011100001011 -000101001111 -010010101111 -101000111011 -001101000001 -100100100001 -100010101111 -100111111110 -011011111001 -101000000001 -111001101101 -101011010101 -111111100110 -001010010100 -011101111001 -001100100000 -101001110110 diff --git a/day03/day03_input_ez.txt b/day03/day03_input_ez.txt deleted file mode 100644 index a6366a8..0000000 --- a/day03/day03_input_ez.txt +++ /dev/null @@ -1,12 +0,0 @@ -00100 -11110 -10110 -10111 -10101 -01111 -00111 -11100 -10000 -11001 -00010 -01010 diff --git a/day03/makefile b/day03/makefile deleted file mode 100644 index 7c21cf0..0000000 --- a/day03/makefile +++ /dev/null @@ -1,2 +0,0 @@ -all day03.cpp: - g++ -std=c++20 -o day03 day03.cpp |