Added Ex. 100 fourth for (as foretold in #261)
This commit is contained in:
parent
4198d5b2db
commit
2e2924abdb
3 changed files with 70 additions and 0 deletions
|
@ -519,6 +519,10 @@ const exercises = [_]Exercise{
|
||||||
.main_file = "099_formatting.zig",
|
.main_file = "099_formatting.zig",
|
||||||
.output = "\n X | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \n---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+\n 1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \n\n 2 | 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 \n\n 3 | 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 \n\n 4 | 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 \n\n 5 | 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 \n\n 6 | 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 \n\n 7 | 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 \n\n 8 | 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 \n\n 9 | 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 \n\n10 | 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 \n\n11 | 11 22 33 44 55 66 77 88 99 110 121 132 143 154 165 \n\n12 | 12 24 36 48 60 72 84 96 108 120 132 144 156 168 180 \n\n13 | 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 \n\n14 | 14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 \n\n15 | 15 30 45 60 75 90 105 120 135 150 165 180 195 210 225",
|
.output = "\n X | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \n---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+\n 1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \n\n 2 | 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 \n\n 3 | 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 \n\n 4 | 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 \n\n 5 | 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 \n\n 6 | 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 \n\n 7 | 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 \n\n 8 | 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 \n\n 9 | 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 \n\n10 | 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 \n\n11 | 11 22 33 44 55 66 77 88 99 110 121 132 143 154 165 \n\n12 | 12 24 36 48 60 72 84 96 108 120 132 144 156 168 180 \n\n13 | 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 \n\n14 | 14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 \n\n15 | 15 30 45 60 75 90 105 120 135 150 165 180 195 210 225",
|
||||||
},
|
},
|
||||||
|
.{
|
||||||
|
.main_file = "100_for4.zig",
|
||||||
|
.output = "Arrays match!",
|
||||||
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "999_the_end.zig",
|
.main_file = "999_the_end.zig",
|
||||||
.output = "\nThis is the end for now!\nWe hope you had fun and were able to learn a lot, so visit us again when the next exercises are available.",
|
.output = "\nThis is the end for now!\nWe hope you had fun and were able to learn a lot, so visit us again when the next exercises are available.",
|
||||||
|
|
62
exercises/100_for4.zig
Normal file
62
exercises/100_for4.zig
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
//
|
||||||
|
// We've seen that the 'for' loop can let us perform some action
|
||||||
|
// for every item in an array or slice.
|
||||||
|
//
|
||||||
|
// More recently, we discovered that it supports ranges to
|
||||||
|
// iterate over number sequences.
|
||||||
|
//
|
||||||
|
// This is part of a more general capability of the `for` loop:
|
||||||
|
// looping over one or more "objects" where an object is an
|
||||||
|
// array, slice, or range.
|
||||||
|
//
|
||||||
|
// In fact, we *did* use multiple objects way back in Exercise
|
||||||
|
// 016 where we iterated over an array and also a numeric index.
|
||||||
|
// It didn't always work exactly this way, so the exercise had to
|
||||||
|
// be retroactively modified a little bit.
|
||||||
|
//
|
||||||
|
// for (bits, 0..) |bit, i| { ... }
|
||||||
|
//
|
||||||
|
// The general form of a 'for' loop with two lists is:
|
||||||
|
//
|
||||||
|
// for (list_a, list_b) |a, b| {
|
||||||
|
// // Here we have the first item from list_a and list_b,
|
||||||
|
// // then the second item from each, then the third and
|
||||||
|
// // so forth...
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// What's really beautiful about this is that we don't have to
|
||||||
|
// keep track of an index or advancing a memory pointer for
|
||||||
|
// *either* of these lists. That error-prone stuff is all taken
|
||||||
|
// care of for us by the compiler.
|
||||||
|
//
|
||||||
|
// Below, we have a program that is supposed to compare two
|
||||||
|
// arrays. Please make it work!
|
||||||
|
//
|
||||||
|
const std = @import("std");
|
||||||
|
const print = std.debug.print;
|
||||||
|
|
||||||
|
pub fn main() void {
|
||||||
|
const hex_nums = [_]u8{ 0xb, 0x2a, 0x77 };
|
||||||
|
const dec_nums = [_]u8{ 11, 42, 119 };
|
||||||
|
|
||||||
|
for (hex_nums, ???) |hn, ???| {
|
||||||
|
if (hn != dn) {
|
||||||
|
std.debug.print("Uh oh! Found a mismatch: {d} vs {d}\n", .{ hn, dn });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std.debug.print("Arrays match!\n", .{});
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// You are perhaps wondering what happens if one of the two lists
|
||||||
|
// is longer than the other? Try it!
|
||||||
|
//
|
||||||
|
// By the way, congratulations for making it to Exercise 100!
|
||||||
|
//
|
||||||
|
// +-------------+
|
||||||
|
// | Celebration |
|
||||||
|
// | Area * * * |
|
||||||
|
// +-------------+
|
||||||
|
//
|
||||||
|
// Please keep your celebrating within the area provided.
|
4
patches/patches/100_for4.patch
Normal file
4
patches/patches/100_for4.patch
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
42c42
|
||||||
|
< for (hex_nums, ???) |hn, ???| {
|
||||||
|
---
|
||||||
|
> for (hex_nums, dec_nums) |hn, dn| {
|
Loading…
Reference in a new issue