📖 Scenario: You are working with a sorted list of house numbers on a street. You want to find the closest house number that is less than or equal to a given number (floor) and the closest house number that is greater than or equal to that number (ceil).
🎯 Goal: Build a program that finds the floor and ceil values for a given number in a sorted array of house numbers.
📋 What You'll Learn
Create a sorted array of integers called houses with exact values
Create an integer variable called target for the number to find floor and ceil
Write a function findFloorAndCeil that takes houses and target and returns two integers: floor and ceil
Print the floor and ceil values in the format: Floor: X, Ceil: Y
💡 Why This Matters
🌍 Real World
Finding floor and ceil values is useful in real estate, pricing, and scheduling where you need closest matches in sorted data.
💼 Career
Understanding floor and ceil concepts helps in algorithm design, data querying, and optimization tasks common in software development.
Progress0 / 4 steps
1
Create the sorted array of house numbers
Create a sorted array of integers called houses with these exact values: 2, 5, 8, 12, 16, 23, 38, 56, 72, 91
DSA Go
Hint
Use houses := []int{2, 5, 8, 12, 16, 23, 38, 56, 72, 91} to create the array.
2
Set the target number to find floor and ceil
Create an integer variable called target and set it to 20
DSA Go
Hint
Use target := 20 to create the variable.
3
Write the function to find floor and ceil
Write a function called findFloorAndCeil that takes houses []int and target int and returns two integers: floor and ceil. Use a simple loop to find the floor (largest number ≤ target) and ceil (smallest number ≥ target).
DSA Go
Hint
Loop through houses. Update floor if house ≤ target. Set ceil to first house ≥ target and break.
4
Print the floor and ceil values
Call findFloorAndCeil with houses and target. Print the floor and ceil values in the format: Floor: X, Ceil: Y
DSA Go
Hint
Use floor, ceil := findFloorAndCeil(houses, target) and fmt.Printf("Floor: %d, Ceil: %d\n", floor, ceil).
Practice
(1/5)
1. What does the floor of a number mean in a sorted array?
easy
A. The greatest element less than or equal to the number
B. The smallest element greater than the number
C. The average of all elements less than the number
D. The smallest element less than the number
Solution
Step 1: Understand the floor definition
The floor of a number in a sorted array is the greatest element that is less than or equal to the given number.
Step 2: Compare options with definition
The greatest element less than or equal to the number matches this definition exactly, while others describe different concepts.
Final Answer:
The greatest element less than or equal to the number -> Option A
Quick Check:
Floor = greatest ≤ number [OK]
Hint: Floor is always ≤ number, pick greatest such element [OK]
Common Mistakes:
Confusing floor with ceil
Thinking floor is strictly less than number
Mixing floor with average or median
2. Which Go code snippet correctly declares a function to find the floor in a sorted array?
easy
A. func floor(arr int[], x int) int { /* code */ }
B. func floor(arr []int, x int) int { /* code */ }
C. function floor(arr []int, x int) int { /* code */ }
D. func floor(arr []int, x int) void { /* code */ }
Solution
Step 1: Check Go function syntax
In Go, functions are declared with func, parameter types follow names, and return type is after parameters.
Step 2: Validate each option
func floor(arr []int, x int) int { /* code */ } uses correct Go syntax: func floor(arr []int, x int) int. func floor(arr int[], x int) int { /* code */ } uses incorrect array syntax, C uses wrong keyword, D has wrong return type.
Final Answer:
func floor(arr []int, x int) int { /* code */ } -> Option B
Quick Check:
Go func syntax = func floor(arr []int, x int) int { /* code */ } [OK]
Hint: Go arrays use []type, func keyword, return type after params [OK]
Common Mistakes:
Using 'function' keyword instead of 'func'
Incorrect array type syntax
Wrong return type declaration
3. What is the output of the following Go code snippet?
arr := []int{1, 3, 5, 7, 9}
x := 6
floor := -1
for _, val := range arr {
if val <= x {
floor = val
} else {
break
}
}
fmt.Println(floor)
medium
A. 5
B. 6
C. 7
D. -1
Solution
Step 1: Trace the loop over array elements
The loop checks each element: 1 ≤ 6 (floor=1), 3 ≤ 6 (floor=3), 5 ≤ 6 (floor=5), 7 ≤ 6? No, break loop.
Step 2: Determine final floor value
Last floor assigned is 5, so printed output is 5.
Final Answer:
5 -> Option A
Quick Check:
Floor of 6 in arr = 5 [OK]
Hint: Floor is last element ≤ x before break [OK]
Common Mistakes:
Assuming floor equals x if not present
Not breaking loop early
Confusing floor with ceil
4. Identify the bug in this Go code to find the ceil of x in a sorted array arr:
func ceil(arr []int, x int) int {
ceil := -1
for _, val := range arr {
if val >= x {
ceil = val
}
}
return ceil
}
medium
A. It uses wrong comparison operator
B. It initializes ceil with -1 incorrectly
C. It returns ceil before loop ends
D. It does not break after finding first valid ceil
Solution
Step 1: Analyze loop behavior for ceil
The loop updates ceil whenever val ≥ x, but does not stop after first valid ceil, so it ends with the last such value, which may not be the smallest ceil.
Step 2: Identify correct fix
To find the smallest ceil, the loop should break immediately after first val ≥ x is found.
Final Answer:
It does not break after finding first valid ceil -> Option D
Quick Check:
Ceil needs first ≥ x, break loop [OK]
Hint: Break loop on first val ≥ x for correct ceil [OK]
Common Mistakes:
Not breaking loop early
Confusing ceil with floor logic
Incorrect initialization of ceil
5. Given a sorted array arr := []int{2, 4, 6, 8, 10} and a number x = 5, write a Go function that returns both floor and ceil of x. What is the correct output of floor and ceil?
hard
A. Floor: -1, Ceil: -1
B. Floor: 6, Ceil: 4
C. Floor: 4, Ceil: 6
D. Floor: 5, Ceil: 5
Solution
Step 1: Find floor of 5 in arr
Floor is greatest element ≤ 5. Elements ≤ 5 are 2 and 4, greatest is 4.
Step 2: Find ceil of 5 in arr
Ceil is smallest element ≥ 5. Elements ≥ 5 are 6, 8, 10, smallest is 6.
Final Answer:
Floor: 4, Ceil: 6 -> Option C
Quick Check:
Floor ≤ x ≤ Ceil = 4 ≤ 5 ≤ 6 [OK]
Hint: Floor ≤ x ≤ Ceil in sorted array [OK]
Common Mistakes:
Swapping floor and ceil values
Assuming floor or ceil equals x if not present
Returning -1 when valid floor or ceil exists
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.