A simple program that finds the seating arrangement for passengers for a given custom airplane seat layout.
WTFPL License
A simple program that finds the seating arrangement for passengers for a given custom airplane seat layout.
๐ฃ Note that this project was purpose-built for a coding challenge (see problem statement).
Before you run this app, make sure you have Node.js installed. yarn
is recommended, but can be used interchangeably with npm
.
git clone https://github.com/paambaati/bumplan
cd bumplan
yarn install && yarn build
yarn start "<seat_layout>" "<passengers_count>"
yarn run coverage
The program first builds a "mapping" for the given layout (see buildSeatMapping()
). Essentially, the input 2D array is flattened and a lookup table is built, along with the seat types.
For example, for the layout โ
[[1, 2], [3, 2]]
The mapping built is โ
{
'0_0_0': 'W',
'1_0_0': 'A',
'1_1_0': 'M',
'1_2_0': 'W',
'0_0_1': 'W',
'1_0_1': 'A',
'1_1_1': 'M',
'1_2_1': 'W'
}
The mapping is then used to filter by seat types first and then iterated over to assign passenger number (see assignSeats()
). As a nice bonus, the method will also optionally take a priority list, so it will be easier to alter the seating rules in the future.
The seat assignment is then printed on the screen (see printSeatAssignments()
). It uses the super-lightweight colorette
to print in colors to quickly distinguish the seat types.