diff options
author | Dave Gauer <dave@ratfactor.com> | 2021-03-06 19:16:28 -0500 |
---|---|---|
committer | Dave Gauer <dave@ratfactor.com> | 2021-03-06 19:16:28 -0500 |
commit | 5f22bf5c249eb57b83ca15c4e8997a7c49b2bab7 (patch) | |
tree | d83b04fdd9668bddbac55321319b0d4727788f90 /exercises/53_slices2.zig | |
parent | da567348477e5de13f43dc5689e9ca34906c78f3 (diff) | |
download | ziglings-5f22bf5c249eb57b83ca15c4e8997a7c49b2bab7.tar.gz ziglings-5f22bf5c249eb57b83ca15c4e8997a7c49b2bab7.tar.bz2 ziglings-5f22bf5c249eb57b83ca15c4e8997a7c49b2bab7.tar.xz ziglings-5f22bf5c249eb57b83ca15c4e8997a7c49b2bab7.zip |
add ex53 slices2
Diffstat (limited to 'exercises/53_slices2.zig')
-rw-r--r-- | exercises/53_slices2.zig | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/exercises/53_slices2.zig b/exercises/53_slices2.zig new file mode 100644 index 0000000..2456d86 --- /dev/null +++ b/exercises/53_slices2.zig @@ -0,0 +1,35 @@ +// +// You are perhaps tempted to try slices on strings? They're arrays of +// u8 characters after all, right? Slices on strings work great. +// There's just one catch: don't forget that Zig string literals are +// immutable (const) values. So we need to change the type of slice +// from: +// +// var foo: []u8 = "foobar"[0..3]; +// +// to: +// +// var foo: []const u8 = "foobar"[0..3]; +// +// See if you can fix this Zero Wing-inspired phrase descrambler: +const std = @import("std"); + +pub fn main() void { + const scrambled = "great base for all your justice are belong to us"; + + const base1: []u8 = scrambled[15..23]; + const base2: []u8 = scrambled[6..10]; + const base3: []u8 = scrambled[32..]; + printPhrase(base1, base2, base3); + + const justice1: []u8 = scrambled[11..14]; + const justice2: []u8 = scrambled[0..5]; + const justice3: []u8 = scrambled[24..31]; + printPhrase(justice1, justice2, justice3); + + std.debug.print("\n", .{}); +} + +fn printPhrase(part1: []u8, part2: []u8, part3: []u8) void { + std.debug.print("'{s} {s} {s}.' ", .{part1, part2, part3}); +} |