advent-of-code

Solutions for Advent of Code.
git clone git://git.amin.space/advent-of-code.git
Log | Files | Refs | LICENSE

commit 8d4848d3260121fadcdeda4ae90c8a330f65634f
Author: amin <dev@aminmesbah.com>
Date:   Sat,  1 Dec 2018 19:03:08 +0000

Add solution for 01-1

FossilOrigin-Name: 64a06fc68710a8b666c1c16fcbfccf5a3fa97e2707cac64e895c4cde72762fb4
Diffstat:
A.gitignore | 1+
Ainput_01.txt | 996+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amain.zig | 48++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 1045 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1 @@ +zig-cache/ diff --git a/input_01.txt b/input_01.txt @@ -0,0 +1,996 @@ +-2 +-3 ++4 +-15 +-15 ++18 +-7 ++11 +-16 +-14 ++2 +-6 ++16 ++6 ++14 +-15 ++12 +-5 ++17 +-10 +-20 +-19 +-14 +-10 ++4 +-11 ++10 +-1 ++12 +-17 +-2 ++1 +-17 ++9 ++4 ++19 ++11 +-17 ++15 +-12 ++5 ++4 +-1 +-10 +-19 +-16 +-9 ++18 ++2 ++4 +-19 ++16 ++6 +-16 +-14 ++7 +-9 ++7 ++17 ++17 +-14 ++6 +-22 +-13 +-2 +-1 +-18 +-3 ++19 ++19 ++16 +-22 ++14 +-2 +-3 ++2 +-18 +-15 +-14 +-4 +-15 ++1 +-3 +-8 ++18 +-11 ++6 +-7 ++17 ++7 +-8 +-13 +-4 ++7 +-15 +-11 ++7 ++9 +-7 ++1 +-20 +-19 +-18 +-17 +-12 ++7 +-16 +-11 +-4 +-8 +-4 +-3 +-2 ++3 +-15 ++18 ++5 ++14 ++15 ++2 +-19 ++5 +-13 ++19 ++9 ++8 ++5 +-1 +-19 ++11 ++2 ++13 +-17 ++9 +-16 ++14 ++20 ++12 ++8 ++10 ++17 +-15 +-8 ++15 ++19 +-14 +-3 +-10 ++2 ++4 +-1 ++14 +-12 ++15 +-2 +-11 +-14 +-18 ++6 +-12 ++7 ++18 ++15 ++6 ++12 ++3 +-6 ++17 ++11 ++14 ++13 ++3 ++6 +-11 +-19 +-5 ++14 +-10 +-7 ++18 +-8 +-13 +-2 ++19 +-18 +-17 ++11 ++14 ++17 ++1 ++26 ++6 ++15 ++21 +-5 ++12 ++6 ++4 ++10 +-8 ++16 +-14 ++4 +-1 ++17 +-15 +-23 ++15 ++18 ++19 ++10 +-18 +-2 ++15 ++15 ++13 ++5 ++10 +-8 ++2 +-18 ++13 ++15 ++8 +-19 ++2 +-4 +-3 ++20 +-3 ++12 ++6 ++13 ++13 +-15 ++6 +-15 ++3 ++7 +-19 ++11 ++17 ++15 +-4 +-10 +-14 +-20 ++18 +-11 +-17 ++8 ++12 ++3 +-11 ++7 +-13 +-4 ++19 +-7 +-17 ++12 ++9 ++13 ++7 +-13 ++24 +-2 ++14 +-5 ++10 +-6 +-1 +-8 +-5 +-6 ++5 ++12 ++16 ++5 +-14 ++19 ++18 +-9 +-6 +-12 +-2 ++19 +-12 +-9 ++5 +-4 +-9 +-9 ++16 +-19 +-14 +-7 +-24 +-20 ++16 ++12 ++19 ++20 +-15 ++26 ++21 +-2 ++12 ++4 +-2 ++18 +-17 +-12 +-20 ++2 ++9 ++14 ++16 ++12 +-9 ++14 ++17 +-19 ++11 ++3 +-13 +-3 ++11 +-14 ++18 ++9 +-16 +-2 ++19 ++7 +-10 +-3 ++4 ++10 ++15 ++19 +-2 +-5 ++2 ++2 +-11 ++6 +-17 +-11 ++6 +-10 ++16 ++7 +-1 +-2 ++19 ++6 ++16 +-12 ++14 +-5 ++19 +-12 ++1 +-6 +-6 +-2 ++7 ++19 ++17 +-4 ++3 ++3 ++17 ++16 +-2 +-10 +-1 +-14 +-2 +-17 +-11 ++3 +-21 ++15 ++11 ++7 +-3 +-18 ++1 +-15 +-11 ++1 +-18 ++11 ++15 +-17 +-16 +-19 ++9 +-5 ++16 +-18 ++13 ++16 +-17 +-1 +-3 +-2 ++20 ++14 +-13 +-17 ++13 ++5 ++2 ++19 ++22 +-3 +-22 ++10 +-13 ++2 +-29 +-27 +-16 ++17 +-27 ++18 +-13 +-4 ++6 +-5 ++12 +-16 +-9 ++3 ++1 ++10 +-25 +-1 +-19 ++13 ++12 ++2 +-6 +-12 ++3 ++25 ++28 +-4 ++2 ++17 +-9 ++63 ++23 +-8 ++9 +-6 ++15 +-14 ++12 ++6 ++18 +-6 +-15 ++12 +-16 +-3 ++15 ++24 ++19 +-6 ++4 +-8 +-19 ++4 ++4 +-20 +-1 ++24 ++10 +-9 ++13 ++11 ++2 ++11 ++14 +-2 ++18 +-12 ++1 +-17 ++6 ++1 +-16 ++10 ++4 ++9 +-6 ++10 +-14 +-2 ++22 ++2 ++6 ++10 +-19 +-24 ++10 ++11 ++14 ++2 ++5 ++18 ++29 ++1 ++20 ++7 ++3 +-12 ++25 +-21 ++24 ++4 +-18 ++1 ++51 ++19 +-17 +-23 ++31 +-15 ++27 ++2 ++19 +-16 ++1 ++18 ++9 ++22 ++6 ++15 +-19 ++14 +-7 ++3 ++14 +-7 +-15 ++18 +-8 +-1 +-14 +-7 +-16 ++22 ++22 +-2 ++18 ++2 +-15 +-39 ++5 ++21 +-5 +-2 ++4 ++1 ++9 +-58 ++6 +-95 +-85 +-5 ++1 ++7 ++9 ++15 +-117 +-12 +-14 +-18 ++70 ++9 +-17 ++93 +-37 +-134 +-90 ++22 +-19 +-7 +-59 ++14 +-13 +-47 ++213 ++81022 ++9 ++5 ++4 +-3 +-16 +-2 ++4 ++2 ++5 +-12 +-9 +-13 ++2 +-18 +-18 +-14 ++7 ++18 +-19 ++13 +-1 +-6 ++9 +-1 +-18 ++15 +-14 +-4 ++12 +-1 ++5 ++16 +-7 ++12 ++6 +-16 ++13 ++10 ++3 +-11 +-13 ++6 +-7 ++16 ++3 +-6 ++19 +-15 ++14 +-1 ++19 ++19 ++13 +-9 +-3 +-10 +-14 ++15 +-9 ++19 +-6 ++10 +-7 ++11 +-1 ++3 ++2 +-3 ++8 ++3 ++13 ++6 ++3 ++2 ++18 ++9 +-17 ++13 ++15 +-13 ++9 ++2 ++19 ++14 +-13 ++8 ++18 ++6 +-4 +-18 ++1 +-19 +-1 ++10 +-5 +-11 +-10 +-16 +-4 +-5 ++3 +-13 +-19 +-18 ++16 ++16 +-5 ++16 +-10 +-8 ++9 ++14 ++1 ++9 +-3 ++19 +-12 ++11 ++12 ++5 ++19 +-9 ++4 ++15 ++19 +-4 +-10 +-12 +-18 +-16 ++13 +-4 +-16 +-14 +-15 ++18 ++1 +-8 +-7 +-18 ++3 +-21 ++9 +-7 ++8 ++18 ++2 +-11 ++6 ++10 ++9 ++11 +-21 ++19 ++4 ++2 ++7 ++10 +-16 ++13 ++9 ++9 ++16 ++9 ++13 +-11 ++16 ++10 ++14 ++13 +-5 +-10 +-16 +-2 +-2 ++6 ++19 ++1 +-16 ++14 +-13 ++3 +-5 +-4 ++12 +-5 ++22 ++11 +-5 ++13 ++4 ++13 ++19 ++18 +-13 ++15 ++19 +-12 +-11 +-19 +-12 ++5 +-19 ++18 +-19 ++5 +-13 +-10 ++15 +-8 +-2 +-2 +-11 +-6 ++5 +-4 ++21 ++18 +-5 ++18 +-11 ++19 ++12 +-5 ++4 +-16 +-10 ++11 +-16 ++13 ++11 +-1 ++15 ++4 ++13 +-15 ++14 +-7 ++19 ++10 +-8 ++19 ++4 +-7 ++19 ++8 ++14 +-7 ++3 ++13 ++19 +-9 ++4 +-17 +-19 +-11 +-11 +-4 +-16 +-21 +-5 ++1 ++16 +-11 +-15 +-18 +-13 +-7 +-13 +-21 +-18 ++10 ++14 ++13 +-7 +-1 +-4 ++17 ++20 ++12 +-24 ++3 +-8 ++3 ++10 ++11 ++11 +-16 ++13 ++12 ++19 +-2 ++7 ++6 ++5 ++3 ++10 ++15 ++2 ++11 ++14 +-9 +-1 +-19 +-16 ++9 ++17 +-13 ++4 ++6 ++2 ++13 ++16 ++19 ++12 ++1 ++18 ++17 ++19 ++5 +-8 ++6 ++10 ++16 +-9 ++13 +-8 +-9 ++5 +-12 +-7 +-16 ++4 +-12 ++18 +-19 +-7 ++2 ++2 +-19 ++10 ++19 ++9 +-6 +-18 ++4 ++18 +-11 +-13 +-11 +-16 ++3 +-4 +-11 +-2 ++10 +-14 ++16 ++14 +-1 ++2 ++1 ++4 +-9 ++17 +-5 +-14 +-15 +-13 ++16 +-8 +-11 ++2 ++19 ++23 ++15 +-13 ++20 ++3 ++7 ++9 ++17 ++10 +-11 +-19 +-19 ++9 +-17 ++12 +-20 +-22 ++16 +-9 +-18 +-10 +-9 +-81046 diff --git a/main.zig b/main.zig @@ -0,0 +1,48 @@ +const std = @import("std"); +const debug = std.debug; +const fmt = std.fmt; +const io = std.io; +const mem = std.mem; +const os = std.os; + +pub fn main() !void { + var allocator = &std.heap.DirectAllocator.init().allocator; + var input = try get_file_contents(allocator, "input_01.txt"); + defer allocator.free(input); + + debug.warn("01-1: {}\n", total_sum(input)); +} + +fn total_sum(input: []const u8) !i32 { + var sum: i32 = 0; + var index: usize = 0; + while (index < input.len) { + var e = index; + while (input[e] != '\n') { + e += 1; + } + debug.assert('\n' == input[e]); + + var num = try fmt.parseInt(i32, input[index..e], 10); + sum += num; + index = e + 1; + } + return sum; +} + +test "total_sum" { + const s: []const u8 = "-2\n-3\n+4\n-15\n-15\n+18\n-7\n+11\n-16\n-134\n+200\n"; + debug.assert(41 == try total_sum(s)); +} + +fn get_file_contents(allocator: *mem.Allocator, file_name: []const u8) ![]u8 { + var file = try os.File.openRead(file_name); + defer file.close(); + + const file_size = try file.getEndPos(); + + var file_in_stream = io.FileInStream.init(file); + var buf_stream = io.BufferedInStream(io.FileInStream.Error).init(&file_in_stream.stream); + const st = &buf_stream.stream; + return try st.readAllAlloc(allocator, 2 * file_size); +}