from functools import reduce
1. CUSTOM DISCOUNT CALCULATOR (Scenario: Retail Discounts)
def make_discount_calculator(discount_rate):
def calculate_discount(price):
return price * discount_rate
return calculate_discount
2. CONVERT TO A PURE FUNCTION (Scenario: Applying Wholesale Markup)
def apply_markup(costs):
if not costs:
return []
return [costs[0] * 1.25] + apply_markup(costs[1:])
3. ID NUMBER GENERATOR (Scenario: Database ID Assignment)
def make_id_tracker(current_id):
def get_next_id():
return current_id, make_id_tracker(current_id + 1)
return get_next_id
4. REWRITE WITH YIELD (Scenario: Database ID Assignment Generator)
def make_id_tracker_2(current_id):
while True:
yield current_id
current_id += 1
5. GAME SCORES REPORT (Scenario: Multiplayer Match Results)
def process_scores(scores):
qualifying_scores = filter(lambda x: x >= 50, scores)
buffed_scores = map(lambda x: x + 10, qualifying_scores)
total_team_score = reduce(lambda x, y: x + y, buffed_scores, 0)
return total_team_score
6. INVENTORY TRACKER SIMULATION (Scenario: Warehouse Stock)
def make_inventory(stock_level):
def inventory(action, quantity):
if action == "restock":
return make_inventory(stock_level + quantity)
elif action == "sell":
return make_inventory(stock_level - quantity)
elif action == "audit":
return stock_level, make_inventory(stock_level)
else:
raise ValueError("Unknown action")
return inventory
7. EVENT PROCESSING WITHOUT LOOPS (Scenario: Applying Buffs to Player Stats)
def map_recursively(operation, elements):
if not elements:
return []
return [operation(elements[0])] + map_recursively(operation, elements[1:])
8. IMAGE PROCESSING PIPELINE (Scenario: Batch Image Resizing)
def compose_funcs(f, g):
return lambda x: f(g(x))
def make_image_processor():
downscale = lambda pixels: pixels * 0.5
apply_brightness = lambda pixels: pixels + 15
compress = lambda pixels: round(pixels, 0)
return compose_funcs(compress, compose_funcs(apply_brightness, downscale))
9. TEXT FORMATTING PIPELINE (Scenario: Chat Filter)
def strip_vowels(word):
if not word:
return ""
char = word[0]
rest = strip_vowels(word[1:])
if char.lower() in "aeiou":
return rest
return char + rest
def chain_processors(routines):
return lambda data: reduce(lambda current_val, routine: routine(current_val), routines, data)
10. FLATTENING DEPARTMENT DATA (Scenario: Corporate Org Chart)
def unnest_structure(hierarchy):
if not hierarchy:
return []
if isinstance(hierarchy[0], list):
return unnest_structure(hierarchy[0]) + unnest_structure(hierarchy[1:])
return [hierarchy[0]] + unnest_structure(hierarchy[1:])
def main():
print("--- 1. CUSTOM DISCOUNT CALCULATOR ---")
student_discount = make_discount_calculator(0.20)
print(f"20% discount on $200: ${student_discount(200)}")
print("\n--- 2. CONVERT TO A PURE FUNCTION ---")
costs = [100, 200, 50]
print(f"Original costs: {costs}")
print(f"With markup: {apply_markup(costs)}")
print("\n--- 3. ID NUMBER GENERATOR ---")
tracker = make_id_tracker(1000)
id1, tracker = tracker()
id2, tracker = tracker()
print(f"Generated IDs: {id1}, {id2}")
print("\n--- 4. REWRITE WITH YIELD ---")
tracker_gen = make_id_tracker_2(1000)
print(f"Generated IDs (yield): {next(tracker_gen)}, {next(tracker_gen)}")
print("\n--- 5. GAME SCORES REPORT ---")
scores = [40, 80, 55, 30, 90]
print(f"Processed Total Score: {process_scores(scores)}")
print("\n--- 6. INVENTORY TRACKER SIMULATION ---")
inv = make_inventory(500)
inv = inv("restock", 200)
inv = inv("sell", 50)
current_stock, inv = inv("audit", 0)
print(f"Current Inventory Stock: {current_stock}")
print("\n--- 7. EVENT PROCESSING WITHOUT LOOPS ---")
double_buff = lambda x: x * 2
stats = [10, 20, 30]
print(f"Buffed Stats: {map_recursively(double_buff, stats)}")
print("\n--- 8. IMAGE PROCESSING PIPELINE ---")
pipeline = make_image_processor()
print(f"Processed Pixel Value (from 100): {pipeline(100)}")
print("\n--- 9. TEXT FORMATTING PIPELINE ---")
strip_whitespace = lambda s: s.strip()
lowercase = lambda s: s.lower()
text_pipeline = chain_processors([strip_whitespace, lowercase, strip_vowels])
print(f"Processed Text: {text_pipeline(' HELLO World ')}")
print("\n--- 10. FLATTENING DEPARTMENT DATA ---")
org_chart = ["Executive", ["Engineering", ["Frontend", "Backend"]], "HR"]
print(f"Flattened Org Chart: {unnest_structure(org_chart)}")
if name == "main":
main()
Top comments (0)