aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-03-12 18:59:46 -0500
committerDave Gauer <dave@ratfactor.com>2021-03-12 18:59:46 -0500
commit0956f1839fcaaa273353148da9e157a8f9690d2f (patch)
treed6c90700131d5b28e898881f13e2a05612e4703f
parent93eefe0f250bb76bfdd8e6bb784b6a9586517000 (diff)
"999 is enough for anybody" triple-zero padding (#18)
When I hit 999 exercises, I will finally have reached the ultimate state of soteriological release and no more exercises will be needed. The cycle will be complete. All that will be left is perfect quietude, freedom, and highest happiness.
-rw-r--r--build.zig132
-rw-r--r--exercises/001_hello.zig (renamed from exercises/01_hello.zig)0
-rw-r--r--exercises/002_std.zig (renamed from exercises/02_std.zig)0
-rw-r--r--exercises/003_assignment.zig (renamed from exercises/03_assignment.zig)0
-rw-r--r--exercises/004_arrays.zig (renamed from exercises/04_arrays.zig)0
-rw-r--r--exercises/005_arrays2.zig (renamed from exercises/05_arrays2.zig)0
-rw-r--r--exercises/006_strings.zig (renamed from exercises/06_strings.zig)0
-rw-r--r--exercises/007_strings2.zig (renamed from exercises/07_strings2.zig)0
-rw-r--r--exercises/008_quiz.zig (renamed from exercises/08_quiz.zig)0
-rw-r--r--exercises/009_if.zig (renamed from exercises/09_if.zig)0
-rw-r--r--exercises/010_if2.zig (renamed from exercises/10_if2.zig)0
-rw-r--r--exercises/011_while.zig (renamed from exercises/11_while.zig)0
-rw-r--r--exercises/012_while2.zig (renamed from exercises/12_while2.zig)0
-rw-r--r--exercises/013_while3.zig (renamed from exercises/13_while3.zig)0
-rw-r--r--exercises/014_while4.zig (renamed from exercises/14_while4.zig)0
-rw-r--r--exercises/015_for.zig (renamed from exercises/15_for.zig)0
-rw-r--r--exercises/016_for2.zig (renamed from exercises/16_for2.zig)0
-rw-r--r--exercises/017_quiz2.zig (renamed from exercises/17_quiz2.zig)0
-rw-r--r--exercises/018_functions.zig (renamed from exercises/18_functions.zig)0
-rw-r--r--exercises/019_functions2.zig (renamed from exercises/19_functions2.zig)0
-rw-r--r--exercises/020_quiz3.zig (renamed from exercises/20_quiz3.zig)0
-rw-r--r--exercises/021_errors.zig (renamed from exercises/21_errors.zig)0
-rw-r--r--exercises/022_errors2.zig (renamed from exercises/22_errors2.zig)0
-rw-r--r--exercises/023_errors3.zig (renamed from exercises/23_errors3.zig)0
-rw-r--r--exercises/024_errors4.zig (renamed from exercises/24_errors4.zig)0
-rw-r--r--exercises/025_errors5.zig (renamed from exercises/25_errors5.zig)0
-rw-r--r--exercises/026_hello2.zig (renamed from exercises/26_hello2.zig)0
-rw-r--r--exercises/027_defer.zig (renamed from exercises/27_defer.zig)0
-rw-r--r--exercises/028_defer2.zig (renamed from exercises/28_defer2.zig)0
-rw-r--r--exercises/029_errdefer.zig (renamed from exercises/29_errdefer.zig)0
-rw-r--r--exercises/030_switch.zig (renamed from exercises/30_switch.zig)0
-rw-r--r--exercises/031_switch2.zig (renamed from exercises/31_switch2.zig)0
-rw-r--r--exercises/032_unreachable.zig (renamed from exercises/32_unreachable.zig)0
-rw-r--r--exercises/033_iferror.zig (renamed from exercises/33_iferror.zig)0
-rw-r--r--exercises/034_quiz4.zig (renamed from exercises/34_quiz4.zig)0
-rw-r--r--exercises/035_enums.zig (renamed from exercises/35_enums.zig)0
-rw-r--r--exercises/036_enums2.zig (renamed from exercises/36_enums2.zig)0
-rw-r--r--exercises/037_structs.zig (renamed from exercises/37_structs.zig)0
-rw-r--r--exercises/038_structs2.zig (renamed from exercises/38_structs2.zig)0
-rw-r--r--exercises/039_pointers.zig (renamed from exercises/39_pointers.zig)0
-rw-r--r--exercises/040_pointers2.zig (renamed from exercises/40_pointers2.zig)0
-rw-r--r--exercises/041_pointers3.zig (renamed from exercises/41_pointers3.zig)0
-rw-r--r--exercises/042_pointers4.zig (renamed from exercises/42_pointers4.zig)0
-rw-r--r--exercises/043_pointers5.zig (renamed from exercises/43_pointers5.zig)0
-rw-r--r--exercises/044_quiz5.zig (renamed from exercises/44_quiz5.zig)0
-rw-r--r--exercises/045_optionals.zig (renamed from exercises/45_optionals.zig)0
-rw-r--r--exercises/046_optionals2.zig (renamed from exercises/46_optionals2.zig)0
-rw-r--r--exercises/047_methods.zig (renamed from exercises/47_methods.zig)0
-rw-r--r--exercises/048_methods2.zig (renamed from exercises/48_methods2.zig)0
-rw-r--r--exercises/049_quiz6.zig (renamed from exercises/49_quiz6.zig)0
-rw-r--r--exercises/050_no_value.zig (renamed from exercises/50_no_value.zig)0
-rw-r--r--exercises/051_values.zig (renamed from exercises/51_values.zig)0
-rw-r--r--exercises/052_slices.zig (renamed from exercises/52_slices.zig)0
-rw-r--r--exercises/053_slices2.zig (renamed from exercises/53_slices2.zig)0
-rw-r--r--exercises/054_manypointers.zig (renamed from exercises/54_manypointers.zig)0
-rw-r--r--exercises/055_unions.zig (renamed from exercises/55_unions.zig)0
-rw-r--r--exercises/056_unions2.zig (renamed from exercises/56_unions2.zig)0
-rw-r--r--exercises/057_unions3.zig (renamed from exercises/57_unions3.zig)0
-rw-r--r--patches/patches/001_hello.patch (renamed from patches/patches/01_hello.patch)0
-rw-r--r--patches/patches/002_std.patch (renamed from patches/patches/02_std.patch)0
-rw-r--r--patches/patches/003_assignment.patch (renamed from patches/patches/03_assignment.patch)0
-rw-r--r--patches/patches/004_arrays.patch (renamed from patches/patches/04_arrays.patch)0
-rw-r--r--patches/patches/005_arrays2.patch (renamed from patches/patches/05_arrays2.patch)0
-rw-r--r--patches/patches/006_strings.patch (renamed from patches/patches/06_strings.patch)0
-rw-r--r--patches/patches/007_strings2.patch (renamed from patches/patches/07_strings2.patch)0
-rw-r--r--patches/patches/008_quiz.patch (renamed from patches/patches/08_quiz.patch)0
-rw-r--r--patches/patches/009_if.patch (renamed from patches/patches/09_if.patch)0
-rw-r--r--patches/patches/010_if2.patch (renamed from patches/patches/10_if2.patch)0
-rw-r--r--patches/patches/011_while.patch (renamed from patches/patches/11_while.patch)0
-rw-r--r--patches/patches/012_while2.patch (renamed from patches/patches/12_while2.patch)0
-rw-r--r--patches/patches/013_while3.patch (renamed from patches/patches/13_while3.patch)0
-rw-r--r--patches/patches/014_while4.patch (renamed from patches/patches/14_while4.patch)0
-rw-r--r--patches/patches/015_for.patch (renamed from patches/patches/15_for.patch)0
-rw-r--r--patches/patches/016_for2.patch (renamed from patches/patches/16_for2.patch)0
-rw-r--r--patches/patches/017_quiz2.patch (renamed from patches/patches/17_quiz2.patch)0
-rw-r--r--patches/patches/018_functions.patch (renamed from patches/patches/18_functions.patch)0
-rw-r--r--patches/patches/019_functions2.patch (renamed from patches/patches/19_functions2.patch)0
-rw-r--r--patches/patches/020_quiz3.patch (renamed from patches/patches/20_quiz3.patch)0
-rw-r--r--patches/patches/021_errors.patch (renamed from patches/patches/21_errors.patch)0
-rw-r--r--patches/patches/022_errors2.patch (renamed from patches/patches/22_errors2.patch)0
-rw-r--r--patches/patches/023_errors3.patch (renamed from patches/patches/23_errors3.patch)0
-rw-r--r--patches/patches/024_errors4.patch (renamed from patches/patches/24_errors4.patch)0
-rw-r--r--patches/patches/025_errors5.patch (renamed from patches/patches/25_errors5.patch)0
-rw-r--r--patches/patches/026_hello2.patch (renamed from patches/patches/26_hello2.patch)0
-rw-r--r--patches/patches/027_defer.patch (renamed from patches/patches/27_defer.patch)0
-rw-r--r--patches/patches/028_defer2.patch (renamed from patches/patches/28_defer2.patch)0
-rw-r--r--patches/patches/029_errdefer.patch (renamed from patches/patches/29_errdefer.patch)0
-rw-r--r--patches/patches/030_switch.patch (renamed from patches/patches/30_switch.patch)0
-rw-r--r--patches/patches/031_switch2.patch (renamed from patches/patches/31_switch2.patch)0
-rw-r--r--patches/patches/032_unreachable.patch (renamed from patches/patches/32_unreachable.patch)0
-rw-r--r--patches/patches/033_iferror.patch (renamed from patches/patches/33_iferror.patch)0
-rw-r--r--patches/patches/034_quiz4.patch (renamed from patches/patches/34_quiz4.patch)0
-rw-r--r--patches/patches/035_enums.patch (renamed from patches/patches/35_enums.patch)0
-rw-r--r--patches/patches/036_enums2.patch (renamed from patches/patches/36_enums2.patch)0
-rw-r--r--patches/patches/037_structs.patch (renamed from patches/patches/37_structs.patch)0
-rw-r--r--patches/patches/038_structs2.patch (renamed from patches/patches/38_structs2.patch)0
-rw-r--r--patches/patches/039_pointers.patch (renamed from patches/patches/39_pointers.patch)0
-rw-r--r--patches/patches/040_pointers2.patch (renamed from patches/patches/40_pointers2.patch)0
-rw-r--r--patches/patches/041_pointers3.patch (renamed from patches/patches/41_pointers3.patch)0
-rw-r--r--patches/patches/042_pointers4.patch (renamed from patches/patches/42_pointers4.patch)0
-rw-r--r--patches/patches/043_pointers5.patch (renamed from patches/patches/43_pointers5.patch)0
-rw-r--r--patches/patches/044_quiz5.patch (renamed from patches/patches/44_quiz5.patch)0
-rw-r--r--patches/patches/045_optionals.patch (renamed from patches/patches/45_optionals.patch)0
-rw-r--r--patches/patches/046_optionals2.patch (renamed from patches/patches/46_optionals2.patch)0
-rw-r--r--patches/patches/047_methods.patch (renamed from patches/patches/47_methods.patch)0
-rw-r--r--patches/patches/048_methods2.patch (renamed from patches/patches/48_methods2.patch)0
-rw-r--r--patches/patches/049_quiz6.patch (renamed from patches/patches/49_quiz6.patch)0
-rw-r--r--patches/patches/050_no_value.patch (renamed from patches/patches/50_no_value.patch)0
-rw-r--r--patches/patches/051_values.patch (renamed from patches/patches/51_values.patch)0
-rw-r--r--patches/patches/052_slices.patch (renamed from patches/patches/52_slices.patch)0
-rw-r--r--patches/patches/053_slices2.patch (renamed from patches/patches/53_slices2.patch)0
-rw-r--r--patches/patches/054_manypointers.patch (renamed from patches/patches/54_manypointers.patch)0
-rw-r--r--patches/patches/055_unions.patch (renamed from patches/patches/55_unions.patch)0
-rw-r--r--patches/patches/056_unions2.patch (renamed from patches/patches/56_unions2.patch)0
-rw-r--r--patches/patches/057_unions3.patch (renamed from patches/patches/57_unions3.patch)0
115 files changed, 70 insertions, 62 deletions
diff --git a/build.zig b/build.zig
index 82a5786..1467fe7 100644
--- a/build.zig
+++ b/build.zig
@@ -27,269 +27,278 @@ const Exercise = struct {
return self.main_file[0 .. self.main_file.len - 4];
}
- /// Returns the key of the main file, which is the text before the _.
- /// For example, "01_hello.zig" has the key "01".
+ /// Returns the key of the main file, the string before the '_' with
+ /// "zero padding" removed.
+ /// For example, "001_hello.zig" has the key "1".
pub fn key(self: Exercise) []const u8 {
const end_index = std.mem.indexOfScalar(u8, self.main_file, '_');
assert(end_index != null); // main file must be key_description.zig
- return self.main_file[0..end_index.?];
+
+ // remove zero padding by advancing index past '0's
+ var start_index: usize = 0;
+ while (self.main_file[start_index] == '0') start_index += 1;
+ return self.main_file[start_index..end_index.?];
}
};
const exercises = [_]Exercise{
.{
- .main_file = "01_hello.zig",
+ .main_file = "001_hello.zig",
.output = "Hello world",
.hint = "DON'T PANIC!\nRead the error above.\nSee how it has something to do with 'main'?\nOpen up the source file as noted and read the comments.\nYou can do this!",
},
.{
- .main_file = "02_std.zig",
+ .main_file = "002_std.zig",
.output = "Standard Library",
},
.{
- .main_file = "03_assignment.zig",
+ .main_file = "003_assignment.zig",
.output = "55 314159 -11",
.hint = "There are three mistakes in this one!",
},
.{
- .main_file = "04_arrays.zig",
+ .main_file = "004_arrays.zig",
.output = "Fourth: 7, Length: 8",
.hint = "There are two things to complete here.",
},
.{
- .main_file = "05_arrays2.zig",
+ .main_file = "005_arrays2.zig",
.output = "LEET: 1337, Bits: 100110011001",
.hint = "Fill in the two arrays.",
},
.{
- .main_file = "06_strings.zig",
+ .main_file = "006_strings.zig",
.output = "d=d ha ha ha Major Tom",
.hint = "Each '???' needs something filled in.",
},
.{
- .main_file = "07_strings2.zig",
+ .main_file = "007_strings2.zig",
.output = "Ziggy",
.hint = "Please fix the lyrics!",
},
.{
- .main_file = "08_quiz.zig",
+ .main_file = "008_quiz.zig",
.output = "Program in Zig",
.hint = "See if you can fix the program!",
},
.{
- .main_file = "09_if.zig",
+ .main_file = "009_if.zig",
.output = "Foo is 1!",
},
.{
- .main_file = "10_if2.zig",
+ .main_file = "010_if2.zig",
.output = "price is $17",
},
.{
- .main_file = "11_while.zig",
+ .main_file = "011_while.zig",
.output = "n=1024",
.hint = "You probably want a 'less than' condition.",
},
.{
- .main_file = "12_while2.zig",
+ .main_file = "012_while2.zig",
.output = "n=1024",
.hint = "It might help to look back at the previous exercise.",
},
.{
- .main_file = "13_while3.zig",
+ .main_file = "013_while3.zig",
.output = "1 2 4 7 8 11 13 14 16 17 19",
},
.{
- .main_file = "14_while4.zig",
+ .main_file = "014_while4.zig",
.output = "n=4",
},
.{
- .main_file = "15_for.zig",
+ .main_file = "015_for.zig",
.output = "A Dramatic Story: :-) :-) :-( :-| :-) The End.",
},
.{
- .main_file = "16_for2.zig",
+ .main_file = "016_for2.zig",
.output = "13",
},
.{
- .main_file = "17_quiz2.zig",
+ .main_file = "017_quiz2.zig",
.output = "8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16",
.hint = "This is a famous game!",
},
.{
- .main_file = "18_functions.zig",
+ .main_file = "018_functions.zig",
.output = "Question: 42",
.hint = "Can you help write the function?",
},
.{
- .main_file = "19_functions2.zig",
+ .main_file = "019_functions2.zig",
.output = "2 4 8 16",
},
.{
- .main_file = "20_quiz3.zig",
+ .main_file = "020_quiz3.zig",
.output = "32 64 128 256",
.hint = "Unexpected pop quiz! Help!",
},
.{
- .main_file = "21_errors.zig",
+ .main_file = "021_errors.zig",
.output = "2<4. 3<4. 4=4. 5>4. 6>4.",
.hint = "What's the deal with fours?",
},
.{
- .main_file = "22_errors2.zig",
+ .main_file = "022_errors2.zig",
.output = "I compiled",
.hint = "Get the error union type right to allow this to compile.",
},
.{
- .main_file = "23_errors3.zig",
+ .main_file = "023_errors3.zig",
.output = "a=64, b=22",
},
.{
- .main_file = "24_errors4.zig",
+ .main_file = "024_errors4.zig",
.output = "a=20, b=14, c=10",
},
.{
- .main_file = "25_errors5.zig",
+ .main_file = "025_errors5.zig",
.output = "a=0, b=19, c=0",
},
.{
- .main_file = "26_hello2.zig",
+ .main_file = "026_hello2.zig",
.output = "Hello world",
.hint = "Try using a try!",
.check_stdout = true,
},
.{
- .main_file = "27_defer.zig",
+ .main_file = "027_defer.zig",
.output = "One Two",
},
.{
- .main_file = "28_defer2.zig",
+ .main_file = "028_defer2.zig",
.output = "(Goat) (Cat) (Dog) (Dog) (Goat) (Unknown) done.",
},
.{
- .main_file = "29_errdefer.zig",
+ .main_file = "029_errdefer.zig",
.output = "Getting number...got 5. Getting number...failed!",
},
.{
- .main_file = "30_switch.zig",
+ .main_file = "030_switch.zig",
.output = "ZIG?",
},
.{
- .main_file = "31_switch2.zig",
+ .main_file = "031_switch2.zig",
.output = "ZIG!",
},
.{
- .main_file = "32_unreachable.zig",
+ .main_file = "032_unreachable.zig",
.output = "1 2 3 9 8 7",
},
.{
- .main_file = "33_iferror.zig",
+ .main_file = "033_iferror.zig",
.output = "2<4. 3<4. 4=4. 5>4. 6>4.",
.hint = "Seriously, what's the deal with fours?",
},
.{
- .main_file = "34_quiz4.zig",
+ .main_file = "034_quiz4.zig",
.output = "my_num=42",
.hint = "Can you make this work?",
.check_stdout = true,
},
.{
- .main_file = "35_enums.zig",
+ .main_file = "035_enums.zig",
.output = "1 2 3 9 8 7",
.hint = "This problem seems familiar...",
},
.{
- .main_file = "36_enums2.zig",
+ .main_file = "036_enums2.zig",
.output = "#0000ff",
.hint = "I'm feeling blue about this.",
},
.{
- .main_file = "37_structs.zig",
+ .main_file = "037_structs.zig",
.output = "Your wizard has 90 health and 25 gold.",
},
.{
- .main_file = "38_structs2.zig",
+ .main_file = "038_structs2.zig",
.output = "Character 2 - G:10 H:100 XP:20",
},
.{
- .main_file = "39_pointers.zig",
+ .main_file = "039_pointers.zig",
.output = "num1: 5, num2: 5",
.hint = "Pointers aren't so bad.",
},
.{
- .main_file = "40_pointers2.zig",
+ .main_file = "040_pointers2.zig",
.output = "a: 12, b: 12",
},
.{
- .main_file = "41_pointers3.zig",
+ .main_file = "041_pointers3.zig",
.output = "foo=6, bar=11",
},
.{
- .main_file = "42_pointers4.zig",
+ .main_file = "042_pointers4.zig",
.output = "num: 5, more_nums: 1 1 5 1",
},
.{
- .main_file = "43_pointers5.zig",
+ .main_file = "043_pointers5.zig",
.output = "Wizard (G:10 H:100 XP:20)",
},
.{
- .main_file = "44_quiz5.zig",
+ .main_file = "044_quiz5.zig",
.output = "Elephant A. Elephant B. Elephant C.",
.hint = "Oh no! We forgot Elephant B!",
},
.{
- .main_file = "45_optionals.zig",
+ .main_file = "045_optionals.zig",
.output = "The Ultimate Answer: 42.",
},
.{
- .main_file = "46_optionals2.zig",
+ .main_file = "046_optionals2.zig",
.output = "Elephant A. Elephant B. Elephant C.",
.hint = "Elephants again!",
},
.{
- .main_file = "47_methods.zig",
+ .main_file = "047_methods.zig",
.output = "5 aliens. 4 aliens. 1 aliens. 0 aliens. Earth is saved!",
.hint = "Use the heat ray. And the method!",
},
.{
- .main_file = "48_methods2.zig",
+ .main_file = "048_methods2.zig",
.output = "A B C",
.hint = "This just needs one little fix.",
},
.{
- .main_file = "49_quiz6.zig",
+ .main_file = "049_quiz6.zig",
.output = "A B C Cv Bv Av",
.hint = "Now you're writting Zig!",
},
.{
- .main_file = "50_no_value.zig",
+ .main_file = "050_no_value.zig",
.output = "That is not dead which can eternal lie / And with strange aeons even death may die.",
},
.{
- .main_file = "51_values.zig",
+ .main_file = "051_values.zig",
.output = "1:false!. 2:true!. 3:true!. XP before:0, after:200.",
},
.{
- .main_file = "52_slices.zig",
+ .main_file = "052_slices.zig",
.output = "Hand1: A 4 K 8 Hand2: 5 2 Q J",
},
.{
- .main_file = "53_slices2.zig",
+ .main_file = "053_slices2.zig",
.output = "'all your base are belong to us.' 'for great justice.'",
},
.{
- .main_file = "54_manypointers.zig",
+ .main_file = "054_manypointers.zig",
.output = "Memory is a resource.",
},
.{
- .main_file = "55_unions.zig",
+ .main_file = "055_unions.zig",
.output = "Insect report! Ant alive is: true. Bee visited 15 flowers.",
},
.{
- .main_file = "56_unions2.zig",
+ .main_file = "056_unions2.zig",
.output = "Insect report! Ant alive is: true. Bee visited 16 flowers.",
},
.{
- .main_file = "57_unions3.zig",
+ .main_file = "057_unions3.zig",
+ .output = "Insect report! Ant alive is: true. Bee visited 17 flowers.",
+ },
+ .{
+ .main_file = "057_unions3.zig",
.output = "Insect report! Ant alive is: true. Bee visited 17 flowers.",
},
};
@@ -548,8 +557,7 @@ const ZiglingStep = struct {
zig_args.append(@tagName(builder.color)) catch unreachable;
}
- const zig_file = std.fs.path.join(builder.allocator, &[_][]const u8{
- if (self.use_healed) "patches/healed" else "exercises", self.exercise.main_file }) catch unreachable;
+ const zig_file = std.fs.path.join(builder.allocator, &[_][]const u8{ if (self.use_healed) "patches/healed" else "exercises", self.exercise.main_file }) catch unreachable;
zig_args.append(builder.pathFromRoot(zig_file)) catch unreachable;
zig_args.append("--cache-dir") catch unreachable;
diff --git a/exercises/01_hello.zig b/exercises/001_hello.zig
index d2093c7..d2093c7 100644
--- a/exercises/01_hello.zig
+++ b/exercises/001_hello.zig
diff --git a/exercises/02_std.zig b/exercises/002_std.zig
index 50059e1..50059e1 100644
--- a/exercises/02_std.zig
+++ b/exercises/002_std.zig
diff --git a/exercises/03_assignment.zig b/exercises/003_assignment.zig
index 6a4364b..6a4364b 100644
--- a/exercises/03_assignment.zig
+++ b/exercises/003_assignment.zig
diff --git a/exercises/04_arrays.zig b/exercises/004_arrays.zig
index 88fcc78..88fcc78 100644
--- a/exercises/04_arrays.zig
+++ b/exercises/004_arrays.zig
diff --git a/exercises/05_arrays2.zig b/exercises/005_arrays2.zig
index 9282a31..9282a31 100644
--- a/exercises/05_arrays2.zig
+++ b/exercises/005_arrays2.zig
diff --git a/exercises/06_strings.zig b/exercises/006_strings.zig
index 6258816..6258816 100644
--- a/exercises/06_strings.zig
+++ b/exercises/006_strings.zig
diff --git a/exercises/07_strings2.zig b/exercises/007_strings2.zig
index 6350be1..6350be1 100644
--- a/exercises/07_strings2.zig
+++ b/exercises/007_strings2.zig
diff --git a/exercises/08_quiz.zig b/exercises/008_quiz.zig
index eda66b8..eda66b8 100644
--- a/exercises/08_quiz.zig
+++ b/exercises/008_quiz.zig
diff --git a/exercises/09_if.zig b/exercises/009_if.zig
index 284563d..284563d 100644
--- a/exercises/09_if.zig
+++ b/exercises/009_if.zig
diff --git a/exercises/10_if2.zig b/exercises/010_if2.zig
index d0c8cac..d0c8cac 100644
--- a/exercises/10_if2.zig
+++ b/exercises/010_if2.zig
diff --git a/exercises/11_while.zig b/exercises/011_while.zig
index 674d904..674d904 100644
--- a/exercises/11_while.zig
+++ b/exercises/011_while.zig
diff --git a/exercises/12_while2.zig b/exercises/012_while2.zig
index ef53ea0..ef53ea0 100644
--- a/exercises/12_while2.zig
+++ b/exercises/012_while2.zig
diff --git a/exercises/13_while3.zig b/exercises/013_while3.zig
index 4cccf62..4cccf62 100644
--- a/exercises/13_while3.zig
+++ b/exercises/013_while3.zig
diff --git a/exercises/14_while4.zig b/exercises/014_while4.zig
index 7b2714e..7b2714e 100644
--- a/exercises/14_while4.zig
+++ b/exercises/014_while4.zig
diff --git a/exercises/15_for.zig b/exercises/015_for.zig
index 2ce930e..2ce930e 100644
--- a/exercises/15_for.zig
+++ b/exercises/015_for.zig
diff --git a/exercises/16_for2.zig b/exercises/016_for2.zig
index 0a62a1a..0a62a1a 100644
--- a/exercises/16_for2.zig
+++ b/exercises/016_for2.zig
diff --git a/exercises/17_quiz2.zig b/exercises/017_quiz2.zig
index 7de7010..7de7010 100644
--- a/exercises/17_quiz2.zig
+++ b/exercises/017_quiz2.zig
diff --git a/exercises/18_functions.zig b/exercises/018_functions.zig
index 51be2cd..51be2cd 100644
--- a/exercises/18_functions.zig
+++ b/exercises/018_functions.zig
diff --git a/exercises/19_functions2.zig b/exercises/019_functions2.zig
index 00f33c5..00f33c5 100644
--- a/exercises/19_functions2.zig
+++ b/exercises/019_functions2.zig
diff --git a/exercises/20_quiz3.zig b/exercises/020_quiz3.zig
index 651af8c..651af8c 100644
--- a/exercises/20_quiz3.zig
+++ b/exercises/020_quiz3.zig
diff --git a/exercises/21_errors.zig b/exercises/021_errors.zig
index cbb5ac8..cbb5ac8 100644
--- a/exercises/21_errors.zig
+++ b/exercises/021_errors.zig
diff --git a/exercises/22_errors2.zig b/exercises/022_errors2.zig
index fa0eafa..fa0eafa 100644
--- a/exercises/22_errors2.zig
+++ b/exercises/022_errors2.zig
diff --git a/exercises/23_errors3.zig b/exercises/023_errors3.zig
index a465737..a465737 100644
--- a/exercises/23_errors3.zig
+++ b/exercises/023_errors3.zig
diff --git a/exercises/24_errors4.zig b/exercises/024_errors4.zig
index 560b129..560b129 100644
--- a/exercises/24_errors4.zig
+++ b/exercises/024_errors4.zig
diff --git a/exercises/25_errors5.zig b/exercises/025_errors5.zig
index 5119dcf..5119dcf 100644
--- a/exercises/25_errors5.zig
+++ b/exercises/025_errors5.zig
diff --git a/exercises/26_hello2.zig b/exercises/026_hello2.zig
index 237d27c..237d27c 100644
--- a/exercises/26_hello2.zig
+++ b/exercises/026_hello2.zig
diff --git a/exercises/27_defer.zig b/exercises/027_defer.zig
index b41e2af..b41e2af 100644
--- a/exercises/27_defer.zig
+++ b/exercises/027_defer.zig
diff --git a/exercises/28_defer2.zig b/exercises/028_defer2.zig
index 6943012..6943012 100644
--- a/exercises/28_defer2.zig
+++ b/exercises/028_defer2.zig
diff --git a/exercises/29_errdefer.zig b/exercises/029_errdefer.zig
index f43c738..f43c738 100644
--- a/exercises/29_errdefer.zig
+++ b/exercises/029_errdefer.zig
diff --git a/exercises/30_switch.zig b/exercises/030_switch.zig
index cb983f5..cb983f5 100644
--- a/exercises/30_switch.zig
+++ b/exercises/030_switch.zig
diff --git a/exercises/31_switch2.zig b/exercises/031_switch2.zig
index b7680b4..b7680b4 100644
--- a/exercises/31_switch2.zig
+++ b/exercises/031_switch2.zig
diff --git a/exercises/32_unreachable.zig b/exercises/032_unreachable.zig
index ffc35a4..ffc35a4 100644
--- a/exercises/32_unreachable.zig
+++ b/exercises/032_unreachable.zig
diff --git a/exercises/33_iferror.zig b/exercises/033_iferror.zig
index 67777a9..67777a9 100644
--- a/exercises/33_iferror.zig
+++ b/exercises/033_iferror.zig
diff --git a/exercises/34_quiz4.zig b/exercises/034_quiz4.zig
index 6b0e3fc..6b0e3fc 100644
--- a/exercises/34_quiz4.zig
+++ b/exercises/034_quiz4.zig
diff --git a/exercises/35_enums.zig b/exercises/035_enums.zig
index 1825f52..1825f52 100644
--- a/exercises/35_enums.zig
+++ b/exercises/035_enums.zig
diff --git a/exercises/36_enums2.zig b/exercises/036_enums2.zig
index 0ddc4a5..0ddc4a5 100644
--- a/exercises/36_enums2.zig
+++ b/exercises/036_enums2.zig
diff --git a/exercises/37_structs.zig b/exercises/037_structs.zig
index 8082248..8082248 100644
--- a/exercises/37_structs.zig
+++ b/exercises/037_structs.zig
diff --git a/exercises/38_structs2.zig b/exercises/038_structs2.zig
index b0db022..b0db022 100644
--- a/exercises/38_structs2.zig
+++ b/exercises/038_structs2.zig
diff --git a/exercises/39_pointers.zig b/exercises/039_pointers.zig
index d545525..d545525 100644
--- a/exercises/39_pointers.zig
+++ b/exercises/039_pointers.zig
diff --git a/exercises/40_pointers2.zig b/exercises/040_pointers2.zig
index 43dd2c3..43dd2c3 100644
--- a/exercises/40_pointers2.zig
+++ b/exercises/040_pointers2.zig
diff --git a/exercises/41_pointers3.zig b/exercises/041_pointers3.zig
index 9e2bcc6..9e2bcc6 100644
--- a/exercises/41_pointers3.zig
+++ b/exercises/041_pointers3.zig
diff --git a/exercises/42_pointers4.zig b/exercises/042_pointers4.zig
index 261dbc1..261dbc1 100644
--- a/exercises/42_pointers4.zig
+++ b/exercises/042_pointers4.zig
diff --git a/exercises/43_pointers5.zig b/exercises/043_pointers5.zig
index cb94189..cb94189 100644
--- a/exercises/43_pointers5.zig
+++ b/exercises/043_pointers5.zig
diff --git a/exercises/44_quiz5.zig b/exercises/044_quiz5.zig
index 8a0d88c..8a0d88c 100644
--- a/exercises/44_quiz5.zig
+++ b/exercises/044_quiz5.zig
diff --git a/exercises/45_optionals.zig b/exercises/045_optionals.zig
index 1327e4c..1327e4c 100644
--- a/exercises/45_optionals.zig
+++ b/exercises/045_optionals.zig
diff --git a/exercises/46_optionals2.zig b/exercises/046_optionals2.zig
index d3f65bb..d3f65bb 100644
--- a/exercises/46_optionals2.zig
+++ b/exercises/046_optionals2.zig
diff --git a/exercises/47_methods.zig b/exercises/047_methods.zig
index c8e5c17..c8e5c17 100644
--- a/exercises/47_methods.zig
+++ b/exercises/047_methods.zig
diff --git a/exercises/48_methods2.zig b/exercises/048_methods2.zig
index f97710d..f97710d 100644
--- a/exercises/48_methods2.zig
+++ b/exercises/048_methods2.zig
diff --git a/exercises/49_quiz6.zig b/exercises/049_quiz6.zig
index a1a1dec..a1a1dec 100644
--- a/exercises/49_quiz6.zig
+++ b/exercises/049_quiz6.zig
diff --git a/exercises/50_no_value.zig b/exercises/050_no_value.zig
index 8708d2d..8708d2d 100644
--- a/exercises/50_no_value.zig
+++ b/exercises/050_no_value.zig
diff --git a/exercises/51_values.zig b/exercises/051_values.zig
index dd68d3b..dd68d3b 100644
--- a/exercises/51_values.zig
+++ b/exercises/051_values.zig
diff --git a/exercises/52_slices.zig b/exercises/052_slices.zig
index 98177cd..98177cd 100644
--- a/exercises/52_slices.zig
+++ b/exercises/052_slices.zig
diff --git a/exercises/53_slices2.zig b/exercises/053_slices2.zig
index 2456d86..2456d86 100644
--- a/exercises/53_slices2.zig
+++ b/exercises/053_slices2.zig
diff --git a/exercises/54_manypointers.zig b/exercises/054_manypointers.zig
index 23f2ae5..23f2ae5 100644
--- a/exercises/54_manypointers.zig
+++ b/exercises/054_manypointers.zig
diff --git a/exercises/55_unions.zig b/exercises/055_unions.zig
index 5e08aa1..5e08aa1 100644
--- a/exercises/55_unions.zig
+++ b/exercises/055_unions.zig
diff --git a/exercises/56_unions2.zig b/exercises/056_unions2.zig
index e4294db..e4294db 100644
--- a/exercises/56_unions2.zig
+++ b/exercises/056_unions2.zig
diff --git a/exercises/57_unions3.zig b/exercises/057_unions3.zig
index 142180f..142180f 100644
--- a/exercises/57_unions3.zig
+++ b/exercises/057_unions3.zig
diff --git a/patches/patches/01_hello.patch b/patches/patches/001_hello.patch
index fb360a7..fb360a7 100644
--- a/patches/patches/01_hello.patch
+++ b/patches/patches/001_hello.patch
diff --git a/patches/patches/02_std.patch b/patches/patches/002_std.patch
index 6c97adb..6c97adb 100644
--- a/patches/patches/02_std.patch
+++ b/patches/patches/002_std.patch
diff --git a/patches/patches/03_assignment.patch b/patches/patches/003_assignment.patch
index bef4b24..bef4b24 100644
--- a/patches/patches/03_assignment.patch
+++ b/patches/patches/003_assignment.patch
diff --git a/patches/patches/04_arrays.patch b/patches/patches/004_arrays.patch
index c6f9de3..c6f9de3 100644
--- a/patches/patches/04_arrays.patch
+++ b/patches/patches/004_arrays.patch
diff --git a/patches/patches/05_arrays2.patch b/patches/patches/005_arrays2.patch
index 1e7b6b1..1e7b6b1 100644
--- a/patches/patches/05_arrays2.patch
+++ b/patches/patches/005_arrays2.patch
diff --git a/patches/patches/06_strings.patch b/patches/patches/006_strings.patch
index 040a73c..040a73c 100644
--- a/patches/patches/06_strings.patch
+++ b/patches/patches/006_strings.patch
diff --git a/patches/patches/07_strings2.patch b/patches/patches/007_strings2.patch
index 34cd053..34cd053 100644
--- a/patches/patches/07_strings2.patch
+++ b/patches/patches/007_strings2.patch
diff --git a/patches/patches/08_quiz.patch b/patches/patches/008_quiz.patch
index 3d35a5a..3d35a5a 100644
--- a/patches/patches/08_quiz.patch
+++ b/patches/patches/008_quiz.patch
diff --git a/patches/patches/09_if.patch b/patches/patches/009_if.patch
index 46579ad..46579ad 100644
--- a/patches/patches/09_if.patch
+++ b/patches/patches/009_if.patch
diff --git a/patches/patches/10_if2.patch b/patches/patches/010_if2.patch
index e78f644..e78f644 100644
--- a/patches/patches/10_if2.patch
+++ b/patches/patches/010_if2.patch
diff --git a/patches/patches/11_while.patch b/patches/patches/011_while.patch
index a892191..a892191 100644
--- a/patches/patches/11_while.patch
+++ b/patches/patches/011_while.patch
diff --git a/patches/patches/12_while2.patch b/patches/patches/012_while2.patch
index 29ae763..29ae763 100644
--- a/patches/patches/12_while2.patch
+++ b/patches/patches/012_while2.patch
diff --git a/patches/patches/13_while3.patch b/patches/patches/013_while3.patch
index b0172da..b0172da 100644
--- a/patches/patches/13_while3.patch
+++ b/patches/patches/013_while3.patch
diff --git a/patches/patches/14_while4.patch b/patches/patches/014_while4.patch
index fb67587..fb67587 100644
--- a/patches/patches/14_while4.patch
+++ b/patches/patches/014_while4.patch
diff --git a/patches/patches/15_for.patch b/patches/patches/015_for.patch
index e937221..e937221 100644
--- a/patches/patches/15_for.patch
+++ b/patches/patches/015_for.patch
diff --git a/patches/patches/16_for2.patch b/patches/patches/016_for2.patch
index 5aba37f..5aba37f 100644
--- a/patches/patches/16_for2.patch
+++ b/patches/patches/016_for2.patch
diff --git a/patches/patches/17_quiz2.patch b/patches/patches/017_quiz2.patch
index b46dab6..b46dab6 100644
--- a/patches/patches/17_quiz2.patch
+++ b/patches/patches/017_quiz2.patch
diff --git a/patches/patches/18_functions.patch b/patches/patches/018_functions.patch
index dd3f2f6..dd3f2f6 100644
--- a/patches/patches/18_functions.patch
+++ b/patches/patches/018_functions.patch
diff --git a/patches/patches/19_functions2.patch b/patches/patches/019_functions2.patch
index 254889a..254889a 100644
--- a/patches/patches/19_functions2.patch
+++ b/patches/patches/019_functions2.patch
diff --git a/patches/patches/20_quiz3.patch b/patches/patches/020_quiz3.patch
index 6a00d31..6a00d31 100644
--- a/patches/patches/20_quiz3.patch
+++ b/patches/patches/020_quiz3.patch
diff --git a/patches/patches/21_errors.patch b/patches/patches/021_errors.patch
index b37b3c8..b37b3c8 100644
--- a/patches/patches/21_errors.patch
+++ b/patches/patches/021_errors.patch
diff --git a/patches/patches/22_errors2.patch b/patches/patches/022_errors2.patch
index 0501159..0501159 100644
--- a/patches/patches/22_errors2.patch
+++ b/patches/patches/022_errors2.patch
diff --git a/patches/patches/23_errors3.patch b/patches/patches/023_errors3.patch
index a850116..a850116 100644
--- a/patches/patches/23_errors3.patch
+++ b/patches/patches/023_errors3.patch
diff --git a/patches/patches/24_errors4.patch b/patches/patches/024_errors4.patch
index bb3fc8f..bb3fc8f 100644
--- a/patches/patches/24_errors4.patch
+++ b/patches/patches/024_errors4.patch
diff --git a/patches/patches/25_errors5.patch b/patches/patches/025_errors5.patch
index 8aa59d4..8aa59d4 100644
--- a/patches/patches/25_errors5.patch
+++ b/patches/patches/025_errors5.patch
diff --git a/patches/patches/26_hello2.patch b/patches/patches/026_hello2.patch
index 0065da5..0065da5 100644
--- a/patches/patches/26_hello2.patch
+++ b/patches/patches/026_hello2.patch
diff --git a/patches/patches/27_defer.patch b/patches/patches/027_defer.patch
index 6ff7f98..6ff7f98 100644
--- a/patches/patches/27_defer.patch
+++ b/patches/patches/027_defer.patch
diff --git a/patches/patches/28_defer2.patch b/patches/patches/028_defer2.patch
index c042c45..c042c45 100644
--- a/patches/patches/28_defer2.patch
+++ b/patches/patches/028_defer2.patch
diff --git a/patches/patches/29_errdefer.patch b/patches/patches/029_errdefer.patch
index f93c56f..f93c56f 100644
--- a/patches/patches/29_errdefer.patch
+++ b/patches/patches/029_errdefer.patch
diff --git a/patches/patches/30_switch.patch b/patches/patches/030_switch.patch
index 05cbe1a..05cbe1a 100644
--- a/patches/patches/30_switch.patch
+++ b/patches/patches/030_switch.patch
diff --git a/patches/patches/31_switch2.patch b/patches/patches/031_switch2.patch
index f786762..f786762 100644
--- a/patches/patches/31_switch2.patch
+++ b/patches/patches/031_switch2.patch
diff --git a/patches/patches/32_unreachable.patch b/patches/patches/032_unreachable.patch
index 0883932..0883932 100644
--- a/patches/patches/32_unreachable.patch
+++ b/patches/patches/032_unreachable.patch
diff --git a/patches/patches/33_iferror.patch b/patches/patches/033_iferror.patch
index 62904db..62904db 100644
--- a/patches/patches/33_iferror.patch
+++ b/patches/patches/033_iferror.patch
diff --git a/patches/patches/34_quiz4.patch b/patches/patches/034_quiz4.patch
index b259352..b259352 100644
--- a/patches/patches/34_quiz4.patch
+++ b/patches/patches/034_quiz4.patch
diff --git a/patches/patches/35_enums.patch b/patches/patches/035_enums.patch
index ed2344b..ed2344b 100644
--- a/patches/patches/35_enums.patch
+++ b/patches/patches/035_enums.patch
diff --git a/patches/patches/36_enums2.patch b/patches/patches/036_enums2.patch
index 54a7094..54a7094 100644
--- a/patches/patches/36_enums2.patch
+++ b/patches/patches/036_enums2.patch
diff --git a/patches/patches/37_structs.patch b/patches/patches/037_structs.patch
index c26510d..c26510d 100644
--- a/patches/patches/37_structs.patch
+++ b/patches/patches/037_structs.patch
diff --git a/patches/patches/38_structs2.patch b/patches/patches/038_structs2.patch
index 5d0d188..5d0d188 100644
--- a/patches/patches/38_structs2.patch
+++ b/patches/patches/038_structs2.patch
diff --git a/patches/patches/39_pointers.patch b/patches/patches/039_pointers.patch
index 57d67e5..57d67e5 100644
--- a/patches/patches/39_pointers.patch
+++ b/patches/patches/039_pointers.patch
diff --git a/patches/patches/40_pointers2.patch b/patches/patches/040_pointers2.patch
index a69cb20..a69cb20 100644
--- a/patches/patches/40_pointers2.patch
+++ b/patches/patches/040_pointers2.patch
diff --git a/patches/patches/41_pointers3.patch b/patches/patches/041_pointers3.patch
index 02f7744..02f7744 100644
--- a/patches/patches/41_pointers3.patch
+++ b/patches/patches/041_pointers3.patch
diff --git a/patches/patches/42_pointers4.patch b/patches/patches/042_pointers4.patch
index 29ca2d0..29ca2d0 100644
--- a/patches/patches/42_pointers4.patch
+++ b/patches/patches/042_pointers4.patch
diff --git a/patches/patches/43_pointers5.patch b/patches/patches/043_pointers5.patch
index 8a73551..8a73551 100644
--- a/patches/patches/43_pointers5.patch
+++ b/patches/patches/043_pointers5.patch
diff --git a/patches/patches/44_quiz5.patch b/patches/patches/044_quiz5.patch
index 44d4451..44d4451 100644
--- a/patches/patches/44_quiz5.patch
+++ b/patches/patches/044_quiz5.patch
diff --git a/patches/patches/45_optionals.patch b/patches/patches/045_optionals.patch
index c945b5a..c945b5a 100644
--- a/patches/patches/45_optionals.patch
+++ b/patches/patches/045_optionals.patch
diff --git a/patches/patches/46_optionals2.patch b/patches/patches/046_optionals2.patch
index 10705d9..10705d9 100644
--- a/patches/patches/46_optionals2.patch
+++ b/patches/patches/046_optionals2.patch
diff --git a/patches/patches/47_methods.patch b/patches/patches/047_methods.patch
index cde93af..cde93af 100644
--- a/patches/patches/47_methods.patch
+++ b/patches/patches/047_methods.patch
diff --git a/patches/patches/48_methods2.patch b/patches/patches/048_methods2.patch
index 781a99e..781a99e 100644
--- a/patches/patches/48_methods2.patch
+++ b/patches/patches/048_methods2.patch
diff --git a/patches/patches/49_quiz6.patch b/patches/patches/049_quiz6.patch
index 83f9faf..83f9faf 100644
--- a/patches/patches/49_quiz6.patch
+++ b/patches/patches/049_quiz6.patch
diff --git a/patches/patches/50_no_value.patch b/patches/patches/050_no_value.patch
index 79db0a3..79db0a3 100644
--- a/patches/patches/50_no_value.patch
+++ b/patches/patches/050_no_value.patch
diff --git a/patches/patches/51_values.patch b/patches/patches/051_values.patch
index 43d1f65..43d1f65 100644
--- a/patches/patches/51_values.patch
+++ b/patches/patches/051_values.patch
diff --git a/patches/patches/52_slices.patch b/patches/patches/052_slices.patch
index 80f8d72..80f8d72 100644
--- a/patches/patches/52_slices.patch
+++ b/patches/patches/052_slices.patch
diff --git a/patches/patches/53_slices2.patch b/patches/patches/053_slices2.patch
index f5403a2..f5403a2 100644
--- a/patches/patches/53_slices2.patch
+++ b/patches/patches/053_slices2.patch
diff --git a/patches/patches/54_manypointers.patch b/patches/patches/054_manypointers.patch
index 82824e8..82824e8 100644
--- a/patches/patches/54_manypointers.patch
+++ b/patches/patches/054_manypointers.patch
diff --git a/patches/patches/55_unions.patch b/patches/patches/055_unions.patch
index c362f20..c362f20 100644
--- a/patches/patches/55_unions.patch
+++ b/patches/patches/055_unions.patch
diff --git a/patches/patches/56_unions2.patch b/patches/patches/056_unions2.patch
index 7341f7a..7341f7a 100644
--- a/patches/patches/56_unions2.patch
+++ b/patches/patches/056_unions2.patch
diff --git a/patches/patches/57_unions3.patch b/patches/patches/057_unions3.patch
index 17e27a2..17e27a2 100644
--- a/patches/patches/57_unions3.patch
+++ b/patches/patches/057_unions3.patch