From 29b87158572ac8f8c9b2c118626317a39667729f Mon Sep 17 00:00:00 2001 From: Zobeir-Rigi Date: Fri, 20 Mar 2026 18:27:57 +0000 Subject: [PATCH 1/6] Complete binary and hex exercises --- number-systems/README.md | 43 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/number-systems/README.md b/number-systems/README.md index 77a3bde94..c1cf52131 100644 --- a/number-systems/README.md +++ b/number-systems/README.md @@ -5,61 +5,62 @@ Do not convert any binary numbers to decimal when solving a question unless the The goal of these exercises is for you to gain an intuition for binary numbers. Using tools to solve the problems defeats the point. Convert the decimal number 14 to binary. -Answer: +Answer: 1110 Convert the binary number 101101 to decimal: -Answer: +Answer: 32+8+4+1 = 45 Which is larger: 1000 or 0111? -Answer: +Answer: 1000 Which is larger: 00100 or 01011? -Answer: +Answer: 01011 What is 10101 + 01010? -Answer: +Answer: 11111 What is 10001 + 10001? -Answer: +Answer: 100010 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 How many bits would you need in order to store the numbers between 0 and 255 inclusive? -Answer: +Answer: 2^8 = 255 so 8 bits How many bits would you need in order to store the numbers between 0 and 3 inclusive? -Answer: - +Answer: 2^2=4 2 bits How many bits would you need in order to store the numbers between 0 and 1000 inclusive? -Answer: +Answer: 2^10 = 1024 so 10 bits How can you test if a binary number is a power of two (e.g. 1, 2, 4, 8, 16, ...)? -Answer: +Answer: It's a power of 2 when it had only one 1 Convert the decimal number 14 to hex. -Answer: +Answer: E Convert the decimal number 386 to hex. -Answer: +Answer: 182 Convert the hex number 386 to decimal. -Answer: +Answer: 3*16^2 + 8*16^1 + 6*16^0 = 902 Convert the hex number B to decimal. -Answer: +Answer: 11 If reading the byte 0x21 as a number, what decimal number would it mean? -Answer: +Answer: 2×16^1 + 1×16^0 33 If reading the byte 0x21 as an ASCII character, what character would it mean? -Answer: +Answer: Should be converted to Decimal then ASCII code 33 : ! 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: A very dark grey (almost black), because 0 = black, 255 = white, and 33 is very low in (0-255) 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: Purple , because no green, and full blue If reading the bytes 0xAA00FF as a sequence of three one-byte decimal numbers, what decimal numbers would they be? -Answer: +Answer: AA = 170 +00 = 0 +FF = 255 From 0783e85b66793658fc366d616a3b8d20a4eac5a3 Mon Sep 17 00:00:00 2001 From: Zobeir-Rigi Date: Sat, 4 Apr 2026 17:49:13 +0100 Subject: [PATCH 2/6] -r removes quotes --- jq/script-01.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/jq/script-01.sh b/jq/script-01.sh index 95827f688..8cf5f0bf3 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 From fd2e63a0f370bed92817b635528f4dad50c21470 Mon Sep 17 00:00:00 2001 From: Zobeir-Rigi Date: Sat, 4 Apr 2026 18:23:15 +0100 Subject: [PATCH 3/6] Update jq script-01 --- jq/script-01.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jq/script-01.sh b/jq/script-01.sh index 8cf5f0bf3..bd6d36c21 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 From 3726726dbcbe51b3e8d3216dd03bc1602f2b09f9 Mon Sep 17 00:00:00 2001 From: Zobeir-Rigi Date: Sat, 4 Apr 2026 18:26:01 +0100 Subject: [PATCH 4/6] Remove unrelated number-systems change --- number-systems/README.md | 43 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/number-systems/README.md b/number-systems/README.md index c1cf52131..77a3bde94 100644 --- a/number-systems/README.md +++ b/number-systems/README.md @@ -5,62 +5,61 @@ Do not convert any binary numbers to decimal when solving a question unless the The goal of these exercises is for you to gain an intuition for binary numbers. Using tools to solve the problems defeats the point. Convert the decimal number 14 to binary. -Answer: 1110 +Answer: Convert the binary number 101101 to decimal: -Answer: 32+8+4+1 = 45 +Answer: Which is larger: 1000 or 0111? -Answer: 1000 +Answer: Which is larger: 00100 or 01011? -Answer: 01011 +Answer: What is 10101 + 01010? -Answer: 11111 +Answer: What is 10001 + 10001? -Answer: 100010 +Answer: 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: How many bits would you need in order to store the numbers between 0 and 255 inclusive? -Answer: 2^8 = 255 so 8 bits +Answer: How many bits would you need in order to store the numbers between 0 and 3 inclusive? -Answer: 2^2=4 2 bits +Answer: + How many bits would you need in order to store the numbers between 0 and 1000 inclusive? -Answer: 2^10 = 1024 so 10 bits +Answer: How can you test if a binary number is a power of two (e.g. 1, 2, 4, 8, 16, ...)? -Answer: It's a power of 2 when it had only one 1 +Answer: Convert the decimal number 14 to hex. -Answer: E +Answer: Convert the decimal number 386 to hex. -Answer: 182 +Answer: Convert the hex number 386 to decimal. -Answer: 3*16^2 + 8*16^1 + 6*16^0 = 902 +Answer: Convert the hex number B to decimal. -Answer: 11 +Answer: If reading the byte 0x21 as a number, what decimal number would it mean? -Answer: 2×16^1 + 1×16^0 33 +Answer: If reading the byte 0x21 as an ASCII character, what character would it mean? -Answer: Should be converted to Decimal then ASCII code 33 : ! +Answer: If reading the byte 0x21 as a greyscale colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer: A very dark grey (almost black), because 0 = black, 255 = white, and 33 is very low in (0-255) +Answer: If reading the bytes 0xAA00FF as an RGB colour, as described in "Approaches for Representing Colors and Images", what colour would it mean? -Answer: Purple , because no green, and full blue +Answer: If reading the bytes 0xAA00FF as a sequence of three one-byte decimal numbers, what decimal numbers would they be? -Answer: AA = 170 -00 = 0 -FF = 255 +Answer: From 73c9567558018c262f88d6767bf884cfee668f55 Mon Sep 17 00:00:00 2001 From: Zobeir-Rigi Date: Sat, 4 Apr 2026 18:45:08 +0100 Subject: [PATCH 5/6] join(,) --- jq/script-02.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/jq/script-02.sh b/jq/script-02.sh index 21544d67b..e8b1f5855 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 From 2e0ec05604581073217aa35d237d215816c3aae5 Mon Sep 17 00:00:00 2001 From: Zobeir-Rigi Date: Sat, 4 Apr 2026 21:38:09 +0100 Subject: [PATCH 6/6] Complete jq exercises --- 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 + 9 files changed, 9 insertions(+) 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..7fb3777d1 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..cfd5c993b 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..370e173f9 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]] | join(" ")' scores.json \ No newline at end of file diff --git a/jq/script-07.sh b/jq/script-07.sh index d43f93d1b..69c63a7fd 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]] | join(" ")' scores.json \ No newline at end of file diff --git a/jq/script-08.sh b/jq/script-08.sh index 6671fd1ba..b92720686 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)] | join(" ")' scores.json \ No newline at end of file diff --git a/jq/script-09.sh b/jq/script-09.sh index c2536a536..757de440d 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)] | join(" ")' scores.json \ No newline at end of file diff --git a/jq/script-10.sh b/jq/script-10.sh index 8e9d75f07..11693847a 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 'map(.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..79b554796 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 'map(.scores | add) | add' scores.json \ No newline at end of file