aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/exercises/04_arrays.zig
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/04_arrays.zig')
-rw-r--r--exercises/04_arrays.zig51
1 files changed, 51 insertions, 0 deletions
diff --git a/exercises/04_arrays.zig b/exercises/04_arrays.zig
new file mode 100644
index 0000000..0f4ffe1
--- /dev/null
+++ b/exercises/04_arrays.zig
@@ -0,0 +1,51 @@
+//
+// Let's learn some array basics. Arrays are declared with:
+//
+// var foo [3]u32 = [3]u32{ 42, 108, 5423 };
+//
+// When Zig can infer the size of the array, you can use '_' for the
+// size. You can also let Zig infer the type of the value so the
+// declaration is much less verbose.
+//
+// var foo = [_]u32{ 42, 108, 5423 };
+//
+// Get values of an array using array[index] notation:
+//
+// const bar = foo[3]; // 5423
+//
+// Set values of an array using array[index] notation:
+//
+// foo[3] = 16;
+//
+// Get the length of an array using the len property:
+//
+// const length = foo.len;
+//
+const std = @import("std");
+
+pub fn main() void {
+ // (Problem 1)
+ // This "const" is going to cause a problem later - can you see what it is?
+ // How do we fix it?
+ const some_primes = [_]u8{ 1, 3, 5, 7, 11, 13, 17, 19 };
+
+ // Individual values can be set with '[]' notation.
+ // Example: This line changes the first prime to 2 (which is correct):
+ some_primes[0] = 2;
+
+ // Individual values can also be accessed with '[]' notation.
+ // Example: This line stores the first prime in "first":
+ const first = some_primes[0];
+
+ // (Problem 2)
+ // Looks like we need to complete this expression. Use the example
+ // above to set "fourth" to the fourth element of the some_primes array:
+ const fourth = some_primes[???];
+
+ // (Problem 3)
+ // Use the len property to get the length of the array:
+ const length = some_primes.???;
+
+ std.debug.print("First: {}, Fourth: {}, Length: {}\n",
+ .{first, fourth, length});
+}