From 90eace6a82e740e94321b35439f586e8ad84d408 Mon Sep 17 00:00:00 2001 From: mervereis Date: Mon, 13 Jul 2026 23:02:11 +0100 Subject: [PATCH 1/7] Update answers in number systems exercises --- number-systems/Part-1.md | 32 ++++++++++++++++---------------- number-systems/Part-2.md | 12 +++++++----- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/number-systems/Part-1.md b/number-systems/Part-1.md index d8f9c290e..ff1022fd9 100644 --- a/number-systems/Part-1.md +++ b/number-systems/Part-1.md @@ -7,48 +7,48 @@ The goal of these exercises is for you to gain an intuition for binary numbers. The answers to these questions should be a number, either in binary, hex, or decimal. Q1: Convert the decimal number 14 to binary. -Answer: +Answer:1110 Q2: Convert the binary number 101101 to decimal: -Answer: +Answer:45 Q3: Which is larger: 1000 or 0111? -Answer: +Answer:1000 Q4: Which is larger: 00100 or 01011? -Answer: +Answer:01011 Q5: What is 10101 + 01010? -Answer: +Answer:11111 Q6: What is 10001 + 10001? -Answer: +Answer:100010 Q7: What's the largest number you can store with 4 bits, if you want to be able to represent the number 0? -Answer: +Answer:15 Q8: How many bits would you need in order to store the numbers between 0 and 255 inclusive? -Answer: +Answer:8 Q9: How many bits would you need in order to store the numbers between 0 and 3 inclusive? -Answer: +Answer:2 Q10: How many bits would you need in order to store the numbers between 0 and 1000 inclusive? -Answer: +Answer:10 Q11: Convert the decimal number 14 to hex. -Answer: - +Answer:e + Q12: Convert the decimal number 386 to hex. -Answer: +Answer:182 Q13: Convert the hex number 386 to decimal. -Answer: +Answer:902 Q14: Convert the hex number B to decimal. -Answer: +Answer:11 Q15: If reading the byte 0x21 as a number, what decimal number would it mean? -Answer: +Answer:33 Q16: Continues in Part-2 diff --git a/number-systems/Part-2.md b/number-systems/Part-2.md index 68b0933d9..1fd6f152b 100644 --- a/number-systems/Part-2.md +++ b/number-systems/Part-2.md @@ -7,16 +7,18 @@ The goal of these exercises is for you to gain an intuition for binary numbers. The answers to these questions will require a bit of explanation, not just a simple answer. Q16: How can you test if a binary number is a power of two (e.g. 1, 2, 4, 8, 16, ...)? -Answer: +Answer:A binary number is a power of two if it has exactly one 1 bit and all the other bits are 0 so, to test whether a binary number is a power of two, check that it contains only a single 1. Q17: If reading the byte 0x21 as an ASCII character, what character would it mean? -Answer: +Answer:it gives: ! (first changes it to decimal before mapping it to ASCII corresponding character) Q18: If reading the byte 0x21 as a greyscale colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer: +Answer:0x21 is a small value, it represents a dark grey, closer to black than white. Q19: If reading the bytes 0xAA00FF as a sequence of three one-byte decimal numbers, what decimal numbers would they be? -Answer: +Answer:170 +0 +255 Q20: If reading the bytes 0xAA00FF as an RGB colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer: +Answer:a bright purple From 53df955b4c8cc3c29436312642fa8531d3f32bac Mon Sep 17 00:00:00 2001 From: mervereis Date: Tue, 14 Jul 2026 22:38:24 +0100 Subject: [PATCH 2/7] Add jq commands to JSON files in scripts --- jq/script-01.sh | 1 + jq/script-02.sh | 1 + jq/script-03.sh | 1 + jq/script-04.sh | 1 + jq/script-05.sh | 1 + jq/script-06.sh | 1 + jq/script-07.sh | 1 + jq/script-08.sh | 1 + jq/script-09.sh | 1 + jq/script-10.sh | 1 + jq/script-11.sh | 1 + 11 files changed, 11 insertions(+) diff --git a/jq/script-01.sh b/jq/script-01.sh index 95827f688..aec8903aa 100755 --- a/jq/script-01.sh +++ b/jq/script-01.sh @@ -5,3 +5,4 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the name of the person. # Your output should be exactly the string "Selma", but should not contain any quote characters. +jq -r .name person.json \ No newline at end of file diff --git a/jq/script-02.sh b/jq/script-02.sh index 21544d67b..d00ba7ad3 100755 --- a/jq/script-02.sh +++ b/jq/script-02.sh @@ -5,3 +5,4 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the address of the person, all on one line, with a comma between each line. # Your output should be exactly the string "35 Fashion Street, London, E1 6PX", but should not contain any quote characters. +jq -r '.address | join(", ")' person.json \ No newline at end of file diff --git a/jq/script-03.sh b/jq/script-03.sh index 3566f03ba..c5b2d554c 100755 --- a/jq/script-03.sh +++ b/jq/script-03.sh @@ -5,3 +5,4 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the name of the person, then a comma, then their profession. # Your output should be exactly the string "Selma, Software Engineer", but should not contain any quote characters. +jq -r '.name + ", " + .profession' person.json \ No newline at end of file diff --git a/jq/script-04.sh b/jq/script-04.sh index 015997e18..114162d9c 100755 --- a/jq/script-04.sh +++ b/jq/script-04.sh @@ -6,3 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player, one per line. # Your output should contain 6 lines, each with just one word on it. # Your output should not contain any quote characters. +jq -r .[].name scores.json \ No newline at end of file diff --git a/jq/script-05.sh b/jq/script-05.sh index 993fc9ee3..02f0a2bcc 100755 --- a/jq/script-05.sh +++ b/jq/script-05.sh @@ -5,3 +5,4 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the names of each player, as well as their city. # Your output should contain 6 lines, each with two words on it. +jq -r '.[] | "\(.name) \(.city)"' scores.json \ No newline at end of file diff --git a/jq/script-06.sh b/jq/script-06.sh index 8b6e74c52..4b895639d 100755 --- a/jq/script-06.sh +++ b/jq/script-06.sh @@ -6,3 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the score from their first attempt. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 1" with no quotes. +jq -r '.[] | "\(.name) \(.scores[0])"' scores.json \ No newline at end of file diff --git a/jq/script-07.sh b/jq/script-07.sh index d43f93d1b..46fb466cd 100755 --- a/jq/script-07.sh +++ b/jq/script-07.sh @@ -6,3 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the score from their last attempt. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 4" with no quotes. +jq -r '.[] | "\(.name) \(.scores[-1])"' scores.json \ No newline at end of file diff --git a/jq/script-08.sh b/jq/script-08.sh index 6671fd1ba..ecd84638c 100755 --- a/jq/script-08.sh +++ b/jq/script-08.sh @@ -6,3 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the number of times they've played the game. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 3" with no quotes. +jq -r '.[] | "\(.name) \(.scores | length)"' scores.json \ No newline at end of file diff --git a/jq/script-09.sh b/jq/script-09.sh index c2536a536..fbd7b744a 100755 --- a/jq/script-09.sh +++ b/jq/script-09.sh @@ -6,3 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the total scores from all of their games added together. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 15" with no quotes. +jq -r '.[] | "\(.name) \(.scores | add)"' scores.json \ No newline at end of file diff --git a/jq/script-10.sh b/jq/script-10.sh index 8e9d75f07..a628952ba 100755 --- a/jq/script-10.sh +++ b/jq/script-10.sh @@ -5,3 +5,4 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the total of adding together all players' first scores. # Your output should be exactly the number 54. +jq '[.[] | .scores[0]] | add' scores.json \ No newline at end of file diff --git a/jq/script-11.sh b/jq/script-11.sh index d2337a6b2..1918889ff 100755 --- a/jq/script-11.sh +++ b/jq/script-11.sh @@ -5,3 +5,4 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the total of adding together all scores from all games from all players. # Your output should be exactly the number 164. +jq '[.[] | .scores[]] | add' scores.json \ No newline at end of file From df8bd9f6ee0fa4564d700ffae1a635b0117fbc91 Mon Sep 17 00:00:00 2001 From: mervereis Date: Tue, 14 Jul 2026 22:46:11 +0100 Subject: [PATCH 3/7] removed number systems exercises from this branch --- number-systems/Part-1.md | 30 +++++++++++++++--------------- number-systems/Part-2.md | 12 +++++------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/number-systems/Part-1.md b/number-systems/Part-1.md index ff1022fd9..548c93036 100644 --- a/number-systems/Part-1.md +++ b/number-systems/Part-1.md @@ -7,48 +7,48 @@ The goal of these exercises is for you to gain an intuition for binary numbers. The answers to these questions should be a number, either in binary, hex, or decimal. Q1: Convert the decimal number 14 to binary. -Answer:1110 +Answer: Q2: Convert the binary number 101101 to decimal: -Answer:45 +Answer: Q3: Which is larger: 1000 or 0111? -Answer:1000 +Answer: Q4: Which is larger: 00100 or 01011? -Answer:01011 +Answer: Q5: What is 10101 + 01010? -Answer:11111 +Answer: Q6: What is 10001 + 10001? -Answer:100010 +Answer: Q7: What's the largest number you can store with 4 bits, if you want to be able to represent the number 0? -Answer:15 +Answer: Q8: How many bits would you need in order to store the numbers between 0 and 255 inclusive? -Answer:8 +Answer: Q9: How many bits would you need in order to store the numbers between 0 and 3 inclusive? -Answer:2 +Answer: Q10: How many bits would you need in order to store the numbers between 0 and 1000 inclusive? -Answer:10 +Answer: Q11: Convert the decimal number 14 to hex. -Answer:e +Answer: Q12: Convert the decimal number 386 to hex. -Answer:182 +Answer: Q13: Convert the hex number 386 to decimal. -Answer:902 +Answer: Q14: Convert the hex number B to decimal. -Answer:11 +Answer: Q15: If reading the byte 0x21 as a number, what decimal number would it mean? -Answer:33 +Answer: Q16: Continues in Part-2 diff --git a/number-systems/Part-2.md b/number-systems/Part-2.md index 1fd6f152b..698873ca9 100644 --- a/number-systems/Part-2.md +++ b/number-systems/Part-2.md @@ -7,18 +7,16 @@ The goal of these exercises is for you to gain an intuition for binary numbers. The answers to these questions will require a bit of explanation, not just a simple answer. Q16: How can you test if a binary number is a power of two (e.g. 1, 2, 4, 8, 16, ...)? -Answer:A binary number is a power of two if it has exactly one 1 bit and all the other bits are 0 so, to test whether a binary number is a power of two, check that it contains only a single 1. +Answer: Q17: If reading the byte 0x21 as an ASCII character, what character would it mean? -Answer:it gives: ! (first changes it to decimal before mapping it to ASCII corresponding character) +Answer: Q18: If reading the byte 0x21 as a greyscale colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer:0x21 is a small value, it represents a dark grey, closer to black than white. +Answer: Q19: If reading the bytes 0xAA00FF as a sequence of three one-byte decimal numbers, what decimal numbers would they be? -Answer:170 -0 -255 +Answer: Q20: If reading the bytes 0xAA00FF as an RGB colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer:a bright purple +Answer: \ No newline at end of file From 0547a18f89d35ad3b8288ff94a46ae526d9cbc9e Mon Sep 17 00:00:00 2001 From: mervereis <124799990+mervereis@users.noreply.github.com> Date: Tue, 14 Jul 2026 22:48:51 +0100 Subject: [PATCH 4/7] Fix formatting in Part-1.md for question answers --- number-systems/Part-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/number-systems/Part-1.md b/number-systems/Part-1.md index 548c93036..d8f9c290e 100644 --- a/number-systems/Part-1.md +++ b/number-systems/Part-1.md @@ -38,7 +38,7 @@ Answer: Q11: Convert the decimal number 14 to hex. Answer: - + Q12: Convert the decimal number 386 to hex. Answer: From 60afc749feed44d3921462d4bd93ec3abc3eebf8 Mon Sep 17 00:00:00 2001 From: mervereis <124799990+mervereis@users.noreply.github.com> Date: Tue, 14 Jul 2026 22:50:13 +0100 Subject: [PATCH 5/7] Add answer placeholder for Q20 in Part-2.md --- number-systems/Part-2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/number-systems/Part-2.md b/number-systems/Part-2.md index 698873ca9..68b0933d9 100644 --- a/number-systems/Part-2.md +++ b/number-systems/Part-2.md @@ -19,4 +19,4 @@ Q19: If reading the bytes 0xAA00FF as a sequence of three one-byte decimal numbe Answer: Q20: If reading the bytes 0xAA00FF as an RGB colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer: \ No newline at end of file +Answer: From 389391ab6efb917d57d3d7367cafe10d9e75f2da Mon Sep 17 00:00:00 2001 From: mervereis Date: Tue, 14 Jul 2026 22:56:53 +0100 Subject: [PATCH 6/7] Refactor jq commands for consistency in script files --- jq/script-01.sh | 2 +- jq/script-04.sh | 2 +- jq/script-05.sh | 2 +- jq/script-06.sh | 2 +- jq/script-07.sh | 2 +- jq/script-08.sh | 2 +- jq/script-09.sh | 2 +- jq/script-10.sh | 2 +- jq/script-11.sh | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/jq/script-01.sh b/jq/script-01.sh index aec8903aa..f6f802117 100755 --- a/jq/script-01.sh +++ b/jq/script-01.sh @@ -5,4 +5,4 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the name of the person. # Your output should be exactly the string "Selma", but should not contain any quote characters. -jq -r .name person.json \ No newline at end of file +jq -r '.name' person.json \ No newline at end of file diff --git a/jq/script-04.sh b/jq/script-04.sh index 114162d9c..9f946753e 100755 --- a/jq/script-04.sh +++ b/jq/script-04.sh @@ -6,4 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player, one per line. # Your output should contain 6 lines, each with just one word on it. # Your output should not contain any quote characters. -jq -r .[].name scores.json \ No newline at end of file +jq -r '.[].name' scores.json \ No newline at end of file diff --git a/jq/script-05.sh b/jq/script-05.sh index 02f0a2bcc..cfd5c993b 100755 --- a/jq/script-05.sh +++ b/jq/script-05.sh @@ -5,4 +5,4 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the names of each player, as well as their city. # Your output should contain 6 lines, each with two words on it. -jq -r '.[] | "\(.name) \(.city)"' scores.json \ No newline at end of file +jq -r '.[] | .name + " " + .city' scores.json \ No newline at end of file diff --git a/jq/script-06.sh b/jq/script-06.sh index 4b895639d..e5207e496 100755 --- a/jq/script-06.sh +++ b/jq/script-06.sh @@ -6,4 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the score from their first attempt. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 1" with no quotes. -jq -r '.[] | "\(.name) \(.scores[0])"' scores.json \ No newline at end of file +jq -r '.[] | .name + " " + (.scores[0] | tostring)' scores.json \ No newline at end of file diff --git a/jq/script-07.sh b/jq/script-07.sh index 46fb466cd..26c5e953e 100755 --- a/jq/script-07.sh +++ b/jq/script-07.sh @@ -6,4 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the score from their last attempt. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 4" with no quotes. -jq -r '.[] | "\(.name) \(.scores[-1])"' scores.json \ No newline at end of file +jq -r '.[] | .name + " " + (.scores[-1] | tostring)' scores.json \ No newline at end of file diff --git a/jq/script-08.sh b/jq/script-08.sh index ecd84638c..663a4659a 100755 --- a/jq/script-08.sh +++ b/jq/script-08.sh @@ -6,4 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the number of times they've played the game. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 3" with no quotes. -jq -r '.[] | "\(.name) \(.scores | length)"' scores.json \ No newline at end of file +jq -r '.[] | .name + " " + (.scores | length | tostring)' scores.json \ No newline at end of file diff --git a/jq/script-09.sh b/jq/script-09.sh index fbd7b744a..54380f62f 100755 --- a/jq/script-09.sh +++ b/jq/script-09.sh @@ -6,4 +6,4 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the total scores from all of their games added together. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 15" with no quotes. -jq -r '.[] | "\(.name) \(.scores | add)"' scores.json \ No newline at end of file +jq -r '.[] | .name + " " + (.scores | add | tostring)' scores.json \ No newline at end of file diff --git a/jq/script-10.sh b/jq/script-10.sh index a628952ba..f6a017045 100755 --- a/jq/script-10.sh +++ b/jq/script-10.sh @@ -5,4 +5,4 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the total of adding together all players' first scores. # Your output should be exactly the number 54. -jq '[.[] | .scores[0]] | add' scores.json \ No newline at end of file +jq '[.[].scores[0]] | add' scores.json \ No newline at end of file diff --git a/jq/script-11.sh b/jq/script-11.sh index 1918889ff..a55d91c16 100755 --- a/jq/script-11.sh +++ b/jq/script-11.sh @@ -5,4 +5,4 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the total of adding together all scores from all games from all players. # Your output should be exactly the number 164. -jq '[.[] | .scores[]] | add' scores.json \ No newline at end of file +jq '[.[].scores[]] | add' scores.json \ No newline at end of file From d1e33354f78b9125b5665c5845c17f4e4fb3e926 Mon Sep 17 00:00:00 2001 From: mervereis Date: Tue, 14 Jul 2026 23:00:02 +0100 Subject: [PATCH 7/7] Fix spacing in jq command output format in script-03.sh --- jq/script-03.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jq/script-03.sh b/jq/script-03.sh index c5b2d554c..bcd3fd5ec 100755 --- a/jq/script-03.sh +++ b/jq/script-03.sh @@ -5,4 +5,4 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the name of the person, then a comma, then their profession. # Your output should be exactly the string "Selma, Software Engineer", but should not contain any quote characters. -jq -r '.name + ", " + .profession' person.json \ No newline at end of file +jq -r '.name + "," + .profession' person.json \ No newline at end of file