aboutsummaryrefslogtreecommitdiff
path: root/exercises/16_for2.zig
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/16_for2.zig')
-rw-r--r--exercises/16_for2.zig33
1 files changed, 33 insertions, 0 deletions
diff --git a/exercises/16_for2.zig b/exercises/16_for2.zig
new file mode 100644
index 0000000..0a62a1a
--- /dev/null
+++ b/exercises/16_for2.zig
@@ -0,0 +1,33 @@
+//
+// For loops also let you store the "index" of the iteration - a
+// number starting with 0 that counts up with each iteration:
+//
+// for (items) |item, index| {
+//
+// // Do something with item and index
+//
+// }
+//
+// You can name "item" and "index" anything you want. "i" is a popular
+// shortening of "index". The item name is often the singular form of
+// the items you're looping through.
+//
+const std = @import("std");
+
+pub fn main() void {
+ // Let's store the bits of binary number 1101 in
+ // 'little-endian' order (least significant byte first):
+ const bits = [_]u8{ 1, 0, 1, 1 };
+ var value: u32 = 0;
+
+ // Now we'll convert the binary bits to a number value by adding
+ // the value of the place as a power of two for each bit.
+ //
+ // See if you can figure out the missing piece:
+ for (bits) |bit, ???| {
+ var place_value = std.math.pow(u32, 2, @intCast(u32, i));
+ value += place_value * bit;
+ }
+
+ std.debug.print("The value of bits '1101': {}.\n", .{value});
+}