Browse Source

Added comptime wizardry to 075 quiz8

Thanks to Helios on Discord for the wizardry!
Dave Gauer 3 years ago
parent
commit
c3128f3dee
1 changed files with 15 additions and 7 deletions
  1. 15 7
      exercises/075_quiz8.zig

+ 15 - 7
exercises/075_quiz8.zig

@@ -154,13 +154,21 @@ pub fn main() void {
     const start = &a;        // Archer's Point
     const destination = &f;  // Fox Pond
 
-    // TODO: can we neaten this up????
-    a.paths = a_paths[0..];
-    b.paths = b_paths[0..];
-    c.paths = c_paths[0..];
-    d.paths = d_paths[0..];
-    e.paths = e_paths[0..];
-    f.paths = f_paths[0..];
+    // We could either have this:
+    //
+    //   a.paths = a_paths[0..];
+    //   b.paths = b_paths[0..];
+    //   c.paths = c_paths[0..];
+    //   d.paths = d_paths[0..];
+    //   e.paths = e_paths[0..];
+    //   f.paths = f_paths[0..];
+    //
+    // or this comptime wizardry:
+    //
+    const letters = [_][]const u8{ "a", "b", "c", "d", "e", "f" };
+    inline for (letters) |letter| {
+        @field(@This(), letter).paths = @field(@This(), letter ++ "_paths")[0..];
+    }
 
     var notebook = HermitsNotebook{};
     var working_note = NotebookEntry{