From 4a379159a3f35e30e34745477eccd2420303264a Mon Sep 17 00:00:00 2001 From: Dave Gauer Date: Sun, 9 May 2021 19:53:14 -0400 Subject: [PATCH] add ex083 anon lists --- README.md | 2 +- build.zig | 4 ++++ exercises/083_anonymous_lists.zig | 25 +++++++++++++++++++++++ patches/patches/083_anonymous_lists.patch | 4 ++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 exercises/083_anonymous_lists.zig create mode 100644 patches/patches/083_anonymous_lists.patch diff --git a/README.md b/README.md index 021218c..7a44cf0 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Core Language * [x] Comptime * [x] Sentinel termination * [x] Quoted identifiers @"" -* [ ] Anonymous structs +* [x] Anonymous structs/tuples/lists * [ ] Suspend / Resume * [ ] Async / Await * [ ] Nosuspend diff --git a/build.zig b/build.zig index 90d8a0b..1269a0e 100644 --- a/build.zig +++ b/build.zig @@ -409,6 +409,10 @@ const exercises = [_]Exercise{ .output = "\"0\"(bool):true \"1\"(bool):false \"2\"(i32):42 \"3\"(f32):3.14159202e+00", .hint = "This one is a challenge! But you have everything you need." }, + .{ + .main_file = "083_anonymous_lists.zig", + .output = "I say hello!", + }, }; /// Check the zig version to make sure it can compile the examples properly. diff --git a/exercises/083_anonymous_lists.zig b/exercises/083_anonymous_lists.zig new file mode 100644 index 0000000..838d40e --- /dev/null +++ b/exercises/083_anonymous_lists.zig @@ -0,0 +1,25 @@ +// +// Anonymous struct literal syntax can also be used to compose an +// "anonymous list" with an array type destination: +// +// const foo: [3]u32 = .{10, 20, 30}; +// +// Otherwise it's a "tuple": +// +// const bar = .{10, 20, 30}; +// +// The only difference is the destination type. +// +const print = @import("std").debug.print; + +pub fn main() void { + // Please make 'hello' a string-like array of u8 WITHOUT + // changing the value literal. + // + // Don't change this part: + // + // = .{'h', 'e', 'l', 'l', 'o'}; + // + const hello = .{'h', 'e', 'l', 'l', 'o'}; + print("I say {s}!\n", .{hello}); +} diff --git a/patches/patches/083_anonymous_lists.patch b/patches/patches/083_anonymous_lists.patch new file mode 100644 index 0000000..b981909 --- /dev/null +++ b/patches/patches/083_anonymous_lists.patch @@ -0,0 +1,4 @@ +23c23 +< const hello = .{'h', 'e', 'l', 'l', 'o'}; +--- +> const hello: [5]u8 = .{'h', 'e', 'l', 'l', 'o'};