From 6e576785c51ce8aca28f490218a6e5a8ba494b4f Mon Sep 17 00:00:00 2001 From: Martin Wickham Date: Thu, 11 Feb 2021 22:04:36 -0600 Subject: Use a zig build script to run ziglings --- ziglings | 135 --------------------------------------------------------------- 1 file changed, 135 deletions(-) delete mode 100755 ziglings (limited to 'ziglings') diff --git a/ziglings b/ziglings deleted file mode 100755 index 7c2f6a1..0000000 --- a/ziglings +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/bash - -# ziglings takes one parameter: the exercise number to jump to -jump_to=${1:-0} - -echo -echo " _ _ _ " -echo " ___(_) __ _| (_)_ __ __ _ ___ " -echo " |_ | |/ _' | | | '_ \ / _' / __| " -echo " / /| | (_| | | | | | | (_| \__ \ " -echo " /___|_|\__, |_|_|_| |_|\__, |___/ " -echo " |___/ |___/ " -echo - -# Capture terminal escape sequences (ANSI) for formatting -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="exercises/$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" - result=$($cmd 2>&1) - result_status=$? - - # Echo the result to the screen so user can see what their program does - echo "$result" - if [[ $result_status -ne 0 ]] - then - echo - printf "${fmt_err}Uh oh! Looks like there was an error.${fmt_off}\n" - if [[ ! -z "$hint" ]] - then - echo "$hint" - fi - echo - echo "Edit '$source_file' and run me again." - echo - exit 1 - fi - - # Wildcards to be lenient with anything AROUND the correct output - if [[ "$result" == *"$correct_output"* ]] - then - printf "${fmt_yay}** PASSED **${fmt_off}\n" - else - printf "${fmt_err}It seems to compile, but I wanted to see '$correct_output'.${fmt_off}\n" - if [[ ! -z "$hint" ]] - then - echo "$hint" - fi - echo - exit 1 - fi -} - -# I've chosen to explicitly number AND list each exercise rather than rely -# on sorting. Though it does mean manually renaming things to remove/insert, -# it's worked out well so far. - -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" "There are three mistakes in this one!" -check_it 04_arrays.zig "Fourth: 7, Length: 8" "There are two things to complete here." -check_it 05_arrays2.zig "LEET: 1337, Bits: 100110011001" "Fill in the two arrays." -check_it 06_strings.zig "d=d ha ha ha Major Tom" "Each '???' needs something filled in." -check_it 07_strings2.zig "Ziggy" "Please fix the lyrics!" -check_it 08_quiz.zig "Program in Zig" "See if you can fix the program!" -check_it 09_if.zig "Foo is 1!" -check_it 10_if2.zig "price is \$17" -check_it 11_while.zig "n=1024" "You probably want a 'less than' condition." -check_it 12_while2.zig "n=1024" "It might help to look back at the previous exercise." -check_it 13_while3.zig "1 2 4 7 8 11 13 14 16 17 19" -check_it 14_while4.zig "n=4" -check_it 15_for.zig "A Dramatic Story: :-) :-) :-( :-| :-) The End." -check_it 16_for2.zig "13" -check_it 17_quiz2.zig "8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16" "This is a famous game!" -check_it 18_functions.zig "Question: 42" "Can you help write the function?" -check_it 19_functions2.zig "2 4 8 16" -check_it 20_quiz3.zig "32 64 128 256" "Unexpected pop quiz! Help!" -check_it 21_errors.zig "2<4. 3<4. 4=4. 5>4. 6>4." "What's the deal with fours?" -check_it 22_errors2.zig "I compiled" "Get the error union type right to allow this to compile." -check_it 23_errors3.zig "a=64, b=22" -check_it 24_errors4.zig "a=20, b=14, c=10" -check_it 25_errors5.zig "a=0, b=19, c=0" -check_it 26_hello2.zig "Hello world" "Try using a try!" -check_it 27_defer.zig "One Two" -check_it 28_defer2.zig "(Goat) (Cat) (Dog) (Dog) (Goat) (Unknown) done." -check_it 29_errdefer.zig "Getting number...got 5. Getting number...failed!" -check_it 30_switch.zig "ZIG?" -check_it 31_switch2.zig "ZIG!" -check_it 32_unreachable.zig "1 2 3 9 8 7" -check_it 33_iferror.zig "2<4. 3<4. 4=4. 5>4. 6>4." "Seriously, what's the deal with fours?" -check_it 34_quiz4.zig "my_num=42" "Can you make this work?" -check_it 35_enums.zig "1 2 3 9 8 7" "This problem seems familiar..." -check_it 36_enums2.zig "#0000ff" "I'm feeling blue about this." -check_it 37_structs.zig "Your wizard has 90 health and 25 gold." -check_it 38_structs2.zig "Character 2 - G:10 H:100 XP:20" -check_it 39_pointers.zig "num1: 5, num2: 5" "Pointers aren't so bad." -check_it 40_pointers2.zig "a: 12, b: 12" -check_it 41_pointers3.zig "foo=6, bar=11" -check_it 42_pointers4.zig "num: 5, more_nums: 1 1 5 1" -check_it 43_pointers5.zig "Wizard (G:10 H:100 XP:20)" -check_it 44_quiz5.zig "Elephant A. Elephant B. Elephant C." "Oh no! We forgot Elephant B!" -# optional vals (simple scalar) -# optional fields (elephant tail - no longer need circular) -# super-simple struct method -# use struct method for elephant tails -# quiz: add elephant trunk (like tail)! - -echo -echo " __ __ _ " -echo " \ \ / __ _ _ _| | " -echo " \ V / _' | | | | | " -echo " | | (_| | |_| |_| " -echo " |_|\__,_|\__, (_) " -echo " |___/ " -echo -echo "You've completed all of the Ziglings exercises!" -echo " (That have been written so far.)" -echo -- cgit v1.2.3