---
# System prepended metadata

title: 'CS1101S (T06D): Studio 2'

---

# CS1101S (T06D): Studio 2
18 August 2020 . @jiachen247

Elemets of programming
1. Primatives
    - function
    - numbers 
    - boolean
    - string*
    - objects*
    
3. Combinations
    - math operations
    - >= <= 
    - ? : 
    
5. Means of Abstraction
    - vars
    - functions


## Source Academy Burger Joint

Suppose we’re designing a point-of-sale and order-tracking system for a new burger joint. It is a small joint and it only sells 4 options for combos: Classic Single Combo (hamburger with one patty), Classic Double With Cheese Combo (2 patties), and Classic Triple with Cheese Combo (3 patties), Avant-Garde Quadruple with Guacamole Combo (4 patties). We shall encode these combos as 1, 2, 3, and 4 respectively. Each meal can be biggie-sized to acquire a larger box of fries and drink. A biggie-sized combo is represented by 5, 6, 7, and 8 respectively, for combos 1, 2, 3, and 4 respectively.

### Question 1
Write a function named `biggie_size` which when given a regular combo returns a _biggie-sized_ version.
```javascript
function biggie_size(meal){
    return meal + 4;
}
```

### Question 2
Write a function named `unbiggie_size` which when given a biggie-sized combo returns a _non-biggie-sized_ version.

```javascript
function unbiggie_size(meal){
    // for input biggie combo 5,6,7,8
    // output regular combo 1,2,3,4
    // assumed that only codes 5-8 are submitted
    return meal - 4;
}
```


### Question 3
Write a function named `is_biggie_size` which when given a combo, returns `true` if the combo has been _biggie-sized_ and `false` otherwise.

```javascript
function is_biggie_size(x){
	return x > 4;
}
```

### Question 4
Write a function named `combo_price` which takes a combo and returns the price of the combo. Each patty costs $1.17, and a _biggie-sized_ version costs $0.50 extra overall.

```javascript
function combo_price(combo) {
    return is_biggie_size(combo)
        ? 0.50 + combo_price(unbiggie_size(combo))
        : combo * 1.17;
}
```

### Question 5
An order is a collection of combos. We will encode an order as each digit representing a combo. For example, the order 237 represents a Double, Triple, and _biggie-sized_ Triple.

Write a function named `empty_order` which takes no arguments and returns an empty order which is represented by 0.

```javascript
function empty_order() {
    return 0;
}
```


### Question 6
Write a function named `add_to_order` which takes an order and a combo and returns a new order which contains the contents of the old order and the new combo. For example, `add_to_order(1, 2)` returns `12`.

```javascript
function add_to_order(order, combo){
	return order * 10 + combo;
}
```


### Question 7
Write a function named `last_combo` which takes an order and returns the last combo. For example, `last_combo(321)` returns `1`.

```javascript
function last_combo(order) {
    return combos % 10;
}
```

### Question 8
Write a function named `other_combos` which takes an order and returns a new order without the last combo. For example, `other_combos(321)` returns `32`.

```javascript
function other_combos(order){
  return(order - last_combo(order)) / 10;
}

function other_combos(order) {
    return math_floor(order / 10)
}
```
