←
Build the decisionSaved automatically
Medium · Grade 323. Smart Parking Controller

Coordinate entrance arrivals, bay allocations, and exit gates in real time.

Scenario

Cars enter, park, and exit asynchronously. Exit requests occupy spots until authorized.

Problem statement

Welcome to ParkFlow's Smart Facility Controller interview!

Your task is to control a live multi-tier parking garage. Vehicles arrive with electric, large, VIP, accessible, and reservation requirements.

Unlike static lists, physical movement takes time: exit requests occupy spots until authorized, and drivers have limited patience (carPatienceRemaining). Submit tests your facility controller against hidden traffic scenarios!

Start with an empty rule set. Build your decision flow: 1. Release exit requests when exit gates are open (`hasExitRequest && exitGateAvailable`). 2. Match hard requirements (reserved, accessible, large). 3. Match preferences (VIP, electric). 4. Fall back to standard parking.

What this teaches

Coordinate arrival and departure queues while balancing driver patience, lane capacity, and category safety.

Evaluation contract

  • Safety and state consistency: 30%
  • Completion, patience, and fairness: 30%
  • Queue, congestion, and exit throughput: 25%
  • Generalization across hidden layouts and events: 15%
Scroll down to build and test your solution.

Active controller

Apply & Run executes only the selected controller.

How a rule works

A rule has two parts:

WHEN <something is true> → DO <this action>

  • WHEN is a question about what is happening right now. For example: "Is it raining?" or "Is there a wall ahead?"
  • DO is what happens when the answer is yes.
  • The simulation runs one step at a time.
  • On each step, the rules are checked from top to bottom.
  • The first rule that is true wins. The rules below it are skipped for that step.
  • To change which rule wins, move it up or down the list.
  • If no rule is true, nothing happens on that step.
  • Some actions have more than one step, like "turn right, then move". You build these in the Functions tab.
  • Once a multi-step action starts, it finishes all its steps before the rules are checked again. It only stops early if the next step is not safe.
See an example

Two rules for deciding about an umbrella:

1  WHEN isRaining  → take an umbrella
2  WHEN always     → leave the umbrella at home
  • It is raining. Rule 1 is true, so you take an umbrella. Rule 2 is skipped.
  • It is sunny. Rule 1 is false, so rule 2 is checked next. Rule 2 is always true, so you leave the umbrella at home.
  • Order matters. If rule 2 were on top, it would be true every day, and you would never take an umbrella.

Rule folders

Categorise cards without changing their global execution order.

No rules yet. Nothing will happen until you add at least one rule.