Avoiding Single Empty Seats in Cinema Seat Selection Using Regex
This article explains how to prevent isolated empty seats when users select cinema seats by modeling seat layouts, defining forbidden patterns, converting them into regular expressions, and implementing concise JavaScript validation code that reduces complex nested if‑statements to a few clear lines.
The article addresses a common cinema ticketing problem: ensuring that a user's seat selection does not leave a single empty seat between sold seats, which would block couples from sitting together.
After reviewing the original, overly complex nested‑if logic, the author simplifies the requirement to "no remaining isolated seat" and models the theater layout with four symbols: green (available seat, S), A (empty space), L (sold seat), V (no seat), and E (edge).
By analyzing seat patterns, three forbidden configurations are identified:
"S+AS+" – a selected seat creates a solitary empty seat between two groups of available seats.
"BAS+A" – an empty seat followed by a group of available seats, then another empty seat, with a sold/edge seat on the right.
"AS+AB" – similar to the previous case but mirrored on the left.
These patterns are expressed as regular expressions, allowing a concise validation step using JavaScript's test method.
Example code:
let centerOneSpace = /S+AS+/;
let leftOneSpace = /BAS+A/;
let rightOneSpace = /AS+AB/;
The validation simply tests each row of seats against the three regexes; if any match, the selection is illegal.
Applying this approach reduces the original 259 lines of nested if‑statements to just 29 clear lines, dramatically improving readability and maintainability.
Overall, the article demonstrates how pattern‑matching techniques can streamline complex business rules in backend seat‑selection systems.
UC Tech Team
We provide high-quality technical articles on client, server, algorithms, testing, data, front-end, and more, including both original and translated content.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.