mirror of
				https://codeberg.org/ziglings/exercises.git
				synced 2025-10-30 18:25:36 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Zig
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Zig
		
	
	
	
	
	
| //
 | |
| // 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 });
 | |
| }
 | 
