Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 21 additions & 20 deletions number-systems/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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: 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: 1111 = 15 (largest representable number)
Number of possible values including 0 = 16

How many bits would you need in order to store the numbers between 0 and 255 inclusive?
Answer:
Answer: 8 bits

How many bits would you need in order to store the numbers between 0 and 3 inclusive?
Answer:
Answer: 2 bits => 00, 01, 10, 11

How many bits would you need in order to store the numbers between 0 and 1000 inclusive?
Answer:
Answer: 10 bits

How can you test if a binary number is a power of two (e.g. 1, 2, 4, 8, 16, ...)?
Answer:
Answer: Been a binary it would be 1 followed by 0s => 100, 10000, 10

Convert the decimal number 14 to hex.
Answer:
Answer:0xE

Convert the decimal number 386 to hex.
Answer:
Answer: 0x182

Convert the hex number 386 to decimal.
Answer:
Answer: 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:33

If reading the byte 0x21 as an ASCII character, what character would it mean?
Answer:
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:
Answer: Dark Grey

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 (magenta)

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
4 changes: 3 additions & 1 deletion shell-pipelines/ls-grep/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@

set -euo pipefail

# TODO: Write a command to output the names of the files in the sample-files directory whose name contains at least one upper case letter.
# TODO: Write a command to output the names of the files in the sample-files directory
#whose name contains at least one upper case letter.
# Your output should contain 11 files.
ls sample-files | grep '[A-Z]'
4 changes: 3 additions & 1 deletion shell-pipelines/ls-grep/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@

set -euo pipefail

# TODO: Write a command to output the names of the files in the sample-files directory whose name starts with an upper case letter.
# TODO: Write a command to output the names of the files in the sample-files directory
# whose name starts with an upper case letter.
# Your output should contain 10 files.
ls sample-files | grep '^[A-Z]'
4 changes: 3 additions & 1 deletion shell-pipelines/ls-grep/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@

set -euo pipefail

# TODO: Write a command to output the names of the files in the sample-files directory whose name starts with an upper case letter and doesn't contain any other upper case letters.
# TODO: Write a command to output the names of the files in the sample-files directory
#whose name starts with an upper case letter and doesn't contain any other upper case letters.
# Your output should contain 7 files.
ls sample-files | grep '^[A-Z][^A-Z]*$'
4 changes: 3 additions & 1 deletion shell-pipelines/ls-grep/script-04.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@

set -euo pipefail

# TODO: Write a command to count the number of files in the sample-files directory whose name starts with an upper case letter and doesn't contain any other upper case letters.
# TODO: Write a command to count the number of files in the sample-files directory
#whose name starts with an upper case letter and doesn't contain any other upper case letters.
# Your output should be the number 7.
ls sample-files | grep -c '^[A-Z][^A-Z]*$'
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# The input for this script is the scores-table.txt file.
# TODO: Write a command to output scores-table.txt, with lines sorted by the person's name.
# The first line of your output should be "Ahmed London 1 10 4" (with no quotes). And the third line should be "Chandra Birmingham 12 6".
sort -k1 scores-table.txt
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# The input for this script is the scores-table.txt file.
# TODO: Write a command to output scores-table.txt, with lines sorted by the person's first score, descending.
# The first line of your output should be "Basia London 22 9 6" (with no quotes).
sort -k3rn scores-table.txt
4 changes: 3 additions & 1 deletion shell-pipelines/sort-uniq-head-tail/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
set -euo pipefail

# The input for this script is the scores-table.txt file.
# TODO: Write a command to output scores-table.txt, with shows the lines for the three players with the highest first score, in descending order.
# TODO: Write a command to output scores-table.txt,
#qwith shows the lines for the three players with the highest first score, in descending order.
# Your output should be:
# Basia London 22 9 6
# Piotr Glasgow 15 2 25 11 8
# Chandra Birmingham 12 6
sort -k3rn scores-table.txt | head -n 3
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-04.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# The input for this script is the scores-table.txt file.
# TODO: Write a command to output scores-table.txt, with shows the line for the player whose first score was the second highest.
# Your output should be: "Piotr Glasgow 15 2 25 11 8" (without quotes).
sort -k3rn scores-table.txt | head -n 2 | tail -1
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-05.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ set -euo pipefail
# TODO: Write a command to show a list of all events that have happened, without duplication.
# The order they're displayed doesn't matter, but we never want to see the same event listed twice.
# Your output should contain 6 lines.
sort events.txt | uniq
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-06.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# The input for this script is the events.txt file.
# TODO: Write a command to show how many times anyone has entered and exited.
# It should be clear from your script's output that there have been 5 Entry events and 4 Exit events.
awk '{print $1}' events.txt | sort | uniq -c
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-07.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ set -euo pipefail
# TODO: Write a command to show how many times anyone has entered and exited.
# It should be clear from your script's output that there have been 5 Entry events and 4 Exit events.
# The word "Event" should not appear in your script's output.
awk '{print $3}' events-with-timestamps.txt | tail -n +2 | sort | uniq -c
1 change: 1 addition & 0 deletions shell-pipelines/tr/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ set -euo pipefail
# The author got feedback that they're using too many exclamation marks (!).
#
# TODO: Write a command to output the contents of text.txt with every exclamation mark (!) replaced with a full-stop (.).
cat text.txt | tr '!' '.'
1 change: 1 addition & 0 deletions shell-pipelines/tr/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ set -euo pipefail
# so every Y should be a Z, and every Z should be a Y!
#
# TODO: Write a command to output the contents of text.txt with every Y and Z swapped (both upper and lower case).
cat text.txt | tr '!' '.' | tr 'yzYZ' 'zyZY'