// // Zig has one array operator. // // You can use '++' to concatenate two arrays: // // const a = [_]u8{ 1,2 }; // const b = [_]u8{ 3,4 }; // const c = a ++ b ++ [_]u8{ 5 }; // equals 1 2 3 4 5 // // Note that '++' only operates on arrays while your program is // _being compiled_. This special time is known in Zig // parlance as "comptime" and we'll learn plenty more about that // later. // const std = @import("std"); pub fn main() void { const le = [_]u8{ 1, 3 }; const et = [_]u8{ 3, 7 }; // (Problem 1) // Please set this array concatenating the two arrays above. // It should result in: 1 3 3 7 const leet = ???; // (Problem 2) // Please set this array using repetition. // It should result in: 1 0 0 1 1 0 0 1 1 0 0 1 const bit_pattern_unit = [_]u8{ ??? }; const bit_pattern: [3 * bit_pattern_unit.len]u8 = @bitCast(@as([3][bit_pattern_unit.len]u8, @splat(bit_pattern_unit))); // Okay, that's all of the problems. Let's see the results. // // We could print these arrays with leet[0], leet[1],...but let's // have a little preview of Zig 'for' loops instead: // // for () |item| { } // // Don't worry, we'll cover looping properly in upcoming // lessons. // std.debug.print("LEET: ", .{}); for (leet) |n| { std.debug.print("{}", .{n}); } std.debug.print(", Bits: ", .{}); for (bit_pattern) |n| { std.debug.print("{}", .{n}); } std.debug.print("\n", .{}); }