diff options
author | Dave Gauer <dave@ratfactor.com> | 2021-01-03 18:55:45 -0500 |
---|---|---|
committer | Dave Gauer <dave@ratfactor.com> | 2021-01-03 18:55:45 -0500 |
commit | b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448 (patch) | |
tree | 224c8604de622b0f1c1e59533c5ca838206a0784 | |
parent | d618414c9cd144e3d63f2b12df7b512b98df041c (diff) | |
download | ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.tar.gz ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.tar.bz2 ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.tar.xz ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.zip |
Add exercise 3, exercise num param for script
-rw-r--r-- | 03_assignment.zig | 30 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rwxr-xr-x | ziglings | 13 |
3 files changed, 44 insertions, 1 deletions
diff --git a/03_assignment.zig b/03_assignment.zig new file mode 100644 index 0000000..6280833 --- /dev/null +++ b/03_assignment.zig @@ -0,0 +1,30 @@ +// +// Oh dear! It seems we got a little carried away making const u8 values. +// * const means constant (cannot be changed) +// * u8 means unsigned (cannot be negative), 8-bit integer +// +// Hint 1: Use 'var' for values that can change. +// Hint 2: Use enough bits to hold the value you want: +// u8 255 +// u16 65,535 +// u32 4,294,967,295 +// Hint 3: Use 'i' (e.g. 'i8', 'i16') for signed integers. +// +const std = @import("std"); + +pub fn main() void { + const n: u8 = 50; + n = n + 5; + + const pi: u8 = 314159; + + const negative_eleven: u8 = -11; + + // There are no errors in the next line, just explanation: + // Perhaps you noticed before that the print function takes two + // parameters. Now it will make more sense: the first parameter + // is a string. The string may contain placeholders '{}', and the + // second parameter is an anonymous struct (data structure) + // with values to be printed in place of the placeholders. + std.debug.print("{} {} {}\n", .{n, pi, negative_eleven}); +} @@ -59,7 +59,7 @@ Planned exercises: * [x] Hello world (main needs to be public) * [x] Importing standard library -* [ ] Assignment +* [x] Assignment * [ ] Arrays * [ ] If * [ ] While @@ -1,5 +1,8 @@ #!/bin/bash +# ziglings takes one parameter: the exercise number to jump to +jump_to=${1:-0} + echo echo " _ _ _ " echo " ___(_) __ _| (_)_ __ __ _ ___ " @@ -14,11 +17,20 @@ fmt_err=$( tput setaf 1 ) # red foreground fmt_yay=$( tput setaf 2 ) # green foreground fmt_off=$( tput sgr0 ) # reset colors/effects +exercise_num=0 + function check_it { source_file=$1 correct_output=$2 hint=$3 + # If the current exercise is less than the requested one, skip it + let exercise_num+=1 + if [[ $exercise_num -lt $jump_to ]] + then + return + fi + # Compile/run the source and capture the result and exit value cmd="zig run $source_file" echo "$ $cmd" @@ -55,6 +67,7 @@ function check_it { check_it 01_hello.zig "Hello world" "Note the error: the source file has a hint for fixing 'main'." check_it 02_std.zig "Standard Library" +check_it 03_assignment.zig "55 314159 -11" echo echo " __ __ _ " |