summaryrefslogtreecommitdiff
path: root/assignments/1-solution.md
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2024-06-01 13:09:02 -0600
committermo khan <mo@mokhan.ca>2024-06-01 13:09:02 -0600
commit5ccc7d02a4daef5231b89c0cc4258ce2d7e6a12a (patch)
treecec13104415610f71b837de1d22e9270df25f029 /assignments/1-solution.md
parent24c677e809f77e9798f1a07da347e620b78b7a1b (diff)
Complete assignment 1
Diffstat (limited to 'assignments/1-solution.md')
-rw-r--r--assignments/1-solution.md75
1 files changed, 75 insertions, 0 deletions
diff --git a/assignments/1-solution.md b/assignments/1-solution.md
new file mode 100644
index 0000000..a4fa273
--- /dev/null
+++ b/assignments/1-solution.md
@@ -0,0 +1,75 @@
+# Assignment 1 – choose ONE exercise each from Chapters 2 and 3
+
+## Chapter 2: Exercises
+
+4. Write an algorithm that gets the price for item A plus the quantity
+ purchased. The algorithm prints the total cost, including 6% sales tax.
+
+ ```plaintext
+ Get values for `price` and `quantity`
+ Set the value of `tax` to 1.06
+ Set the value of `total` to `price` multiplied by `quantity` multiplied by `tax`
+ Print the value of `total`
+ ```
+
+ ```ruby
+ def calculate_total(price, quantity, tax = 0.06)
+ return (price * quantity) * (1.0 + tax)
+ end
+ ```
+
+## Chapter 3: Exercises
+
+21. Use the binary search algorithm to decide whether 35 is in the following
+ list: `3, 6, 7, 9, 12, 14, 18, 21, 22, 31, 43`
+
+ ```plaintext
+ Get the list of numbers and assign to variable `items`
+ Get the target number and assign to variable `target`
+ Set variable `min` to 0
+ Set variable `max` to total # of `items`
+ Set variable `mid` to `max - min / 2`
+ Set variable `found` to No
+ while (mid > min && mid < max)
+ Set the variable `current` to `items` at index `mid`
+ if current = target
+ Set variable `found` to Yes
+ Set variable `mid` to `min - 1`
+ else if target > current
+ Set variable `min` to the value of `mid`
+ Set the variable `mid` to `((max-min) / 2) + min`
+ else
+ Set variable `max` to the value of `mid`
+ Set the variable `mid` to `((max-min) / 2) + min`
+ end
+ end of loop
+ If Found = Yes
+ print Found
+ else
+ print Not Found
+ stop
+ ```
+
+ ```ruby
+ def bsearch(target, items)
+ min = 0
+ max = items.size
+ mid = (max - min) / 2
+
+ while (mid > min && mid < max) do
+ current = items[mid]
+
+ if target == current
+ return true
+ elsif target > current
+ min = mid
+ else
+ max = mid
+ end
+
+ mid = ((max - min) / 2) + min
+ end
+
+ return false
+ end
+ ```