updated to Onyx package changes
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 6 Dec 2020 22:35:38 +0000 (16:35 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 6 Dec 2020 22:35:38 +0000 (16:35 -0600)
day1.onyx
day2.onyx
day3.onyx
day4.onyx
day5.onyx
day6.onyx
out.wasm

index e02d40c3c36a2ce3244a7fa3d4f235c8ed847ca3..8c7f56f1161adb74cda5b5c13816e2281a0524b9 100644 (file)
--- a/day1.onyx
+++ b/day1.onyx
@@ -3,24 +3,28 @@ package main
 #include_file "core/std/wasi"
 
 use package core
-use package core_file
 
 main :: proc (args: [] cstring) {
-    contents := file_get_contents("input/day1.txt");
+    contents := file.get_contents("input/day1.txt");
     contents_orig := contents;
     defer cfree(contents_orig.data);
 
     nums: [..] u32;
-    array_init(^nums, 128);
-    defer array_free(^nums);
+    array.init(^nums, 128);
+    defer array.free(^nums);
 
     while num := 1; num > 0 {
         // This sets num to be 0 if there is no number
-        string_read_u32(^contents, ^num); 
-        if num != 0 do array_push(^nums, num);
+        str.read_u32(^contents, ^num); 
+        if num != 0 do array.push(^nums, num);
     }
 
     for i: nums do for j: nums do for k: nums {
-        if j + i + k == 2020 do printf("Answer: %i\n", i * j * k);
+        if j + i + k == 2020 {
+            printf("Answer: %i\n", i * j * k);
+
+            // Break out of all of the loops
+            break break break;
+        }
     }
 }
index 75e24cacdbb960975fce6a7855e79f034e1bae46..daa3e802e738d8adaededb1ccf847b9357f2ef74 100644 (file)
--- a/day2.onyx
+++ b/day2.onyx
@@ -3,10 +3,9 @@ package main
 #include_file "core/std/wasi"
 
 use package core
-use package core_file
 
 main :: proc (args: [] cstring) {
-    contents := file_get_contents("input/day2.txt");
+    contents := file.get_contents("input/day2.txt");
     contents_orig := contents;
     defer cfree(contents_orig.data);
 
@@ -17,14 +16,14 @@ main :: proc (args: [] cstring) {
     pw : string = "";
 
     while true {
-        string_read_u32(^contents, ^lo);
+        str.read_u32(^contents, ^lo);
         if lo == 0 do break;
-        string_discard_chars(^contents);
-        string_read_u32(^contents, ^hi);
-        string_discard_chars(^contents);
-        string_read_char(^contents, ^ch);
-        string_discard_chars(^contents, 2);
-        string_read_line(^contents, ^pw);
+        str.discard_chars(^contents);
+        str.read_u32(^contents, ^hi);
+        str.discard_chars(^contents);
+        str.read_char(^contents, ^ch);
+        str.discard_chars(^contents, 2);
+        str.read_line(^contents, ^pw);
 
         // Part 1
         // count := 0;
index db0784934621b30a9485be850ae92b4c7e55e06b..68418c8583e27083491a2c5633d1bc8abca0dc14 100644 (file)
--- a/day3.onyx
+++ b/day3.onyx
@@ -1,7 +1,6 @@
 #include_file "core/std/wasi"
 
 use package core
-use package core_file
 
 Point :: struct {
     x : i32;
@@ -20,25 +19,25 @@ line_interp_at :: proc (use li: LineInterp, t: i32) -> Point {
 }
 
 main :: proc (args: [] cstring) {
-    contents := file_get_contents("input/day3.txt");
+    contents := file.get_contents("input/day3.txt");
     contents_orig := contents;
     defer cfree(contents_orig.data);
 
     forest: [..] u8;
-    array_init(^forest, 1024);
-    defer array_free(^forest);
+    array.init(^forest, 1024);
+    defer array.free(^forest);
 
     width := 0;
     height := 0;
     while true {
         line: string = "";
-        string_read_line(^contents, ^line);
+        str.read_line(^contents, ^line);
         if line.count == 0 do break;
 
         width = line.count;
         height = height + 1;
 
-        for ch: line do array_push(^forest, ch);
+        for ch: line do array.push(^forest, ch);
     }
 
     lis : [5] LineInterp;
index 415f3216583d5cbe804d8ba239ffc0bf289ee802..ba958ebcf55c1072ffd004f0c5b1bd36cc8c4618 100644 (file)
--- a/day4.onyx
+++ b/day4.onyx
@@ -1,7 +1,6 @@
 #include_file "core/std/wasi"
 
 use package core
-use package core_file
 
 // Returns the number of fields
 process_passport :: proc (contents: ^string) -> u32 {
@@ -9,18 +8,17 @@ process_passport :: proc (contents: ^string) -> u32 {
 
     while true {
         line: string;
-        string_read_line(contents, ^line);
+        str.read_line(contents, ^line);
         if line.count == 0 do break;
 
-        fields := string_split(line, #char " ");
+        fields := str.split(line, #char " ");
         defer cfree(fields.data);
 
         for field: fields {
-            data := string_split(field, #char ":");
+            data := str.split(field, #char ":");
             defer cfree(data.data);
-            printf("Field: %s\n", data[0]);
 
-            if !string_equal(data[0], "cid") {
+            if !str.equal(data[0], "cid") {
                 field_count += 1;
             }
         }
@@ -32,7 +30,7 @@ process_passport :: proc (contents: ^string) -> u32 {
 // This does not include part 2 because it is gross and
 // not worth the effort to implement it.
 main :: proc (args: [] cstring) {
-    contents := file_get_contents("input/day4.txt");
+    contents := file.get_contents("input/day4.txt");
     contents_data := contents.data;
     defer cfree(contents_data);
 
index 8d962ca6a78b3fd0386a76a672a583f15fecfab8..21a913b50072b4d1dddcc51785b5cf3977c08acc 100644 (file)
--- a/day5.onyx
+++ b/day5.onyx
@@ -1,22 +1,21 @@
 #include_file "core/std/wasi"
 
 use package core
-use package core_file
 
 main :: proc (args: [] cstring) {
-    contents := file_get_contents("input/day5.txt");
+    contents := file.get_contents("input/day5.txt");
     contents_data := contents.data;
     defer cfree(contents_data);
 
     vals: [..] u32;
-    array_init(^vals);
-    defer array_free(^vals);
+    array.init(^vals);
+    defer array.free(^vals);
 
     max_val := 0;
 
     while true {
         line: string;
-        string_read_line(^contents, ^line);
+        str.read_line(^contents, ^line);
         if line.count == 0 do break;
 
         val := 0;
@@ -25,12 +24,12 @@ main :: proc (args: [] cstring) {
             if ch == #char "B" || ch == #char "R" do val += 1;
         }
 
-        max_val = max_poly(max_val, val);
-        array_push(^vals, val);
+        max_val = math.max(max_val, val);
+        array.push(^vals, val);
     }
 
     missing := 0;
-    array_sort(^vals, cmp_asc);
+    array.sort(^vals, cmp_asc);
     for i: 0 .. vals.count - 1 {
         if vals[i + 1] - vals[i] != 1 do missing = vals[i] + 1;
     }
index 3d374bf9b9450773e6ce570c5f0db9f18c8ad033..cf50b1f4ea61dab93d28225a973ad4de8f1026e6 100644 (file)
--- a/day6.onyx
+++ b/day6.onyx
@@ -1,7 +1,6 @@
 #include_file "core/std/wasi"
 
 use package core
-use package core_file
 
 part_1 :: proc (contents: ^string) -> u32 {
     chars : [26] u8;
@@ -9,7 +8,7 @@ part_1 :: proc (contents: ^string) -> u32 {
 
     while true {
         line: string;
-        string_read_line(contents, ^line);
+        str.read_line(contents, ^line);
         if line.count == 0 do break;
 
         for ch: line do chars[~~ch - cast(u32) #char "a"] = ~~1;
@@ -28,7 +27,7 @@ part_2 :: proc (contents: ^string) -> u32 {
     person_count := 0;
     while true {
         line: string;
-        string_read_line(contents, ^line);
+        str.read_line(contents, ^line);
         if line.count == 0 do break;
         person_count += 1;
 
@@ -42,7 +41,7 @@ part_2 :: proc (contents: ^string) -> u32 {
 }
 
 main :: proc (args: [] cstring) {
-    contents := file_get_contents("input/day6.txt");
+    contents := file.get_contents("input/day6.txt");
     contents_data := contents.data;
     defer cfree(contents_data);
 
@@ -50,7 +49,7 @@ main :: proc (args: [] cstring) {
     while true {
         if contents.count == 0 do break;
 
-        unique := part_2(^contents);
+        unique := part_1(^contents);
         unique_sum += unique;
     }
 
index 0532d5dfe81d9102e252eb56b27b8d6aab199df7..8e103011ab31e5fd660323ff49c99e7b17d82039 100644 (file)
Binary files a/out.wasm and b/out.wasm differ