Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(allRooms, guests) {
- const rooms = new Map();
- let guestsWithoutRooms = 0;
- allRooms.forEach((currentRoom) => {
- const { type } = currentRoom;
- const roomSpace = type === 'double-bedded' ? 2 : 3;
- rooms.set(currentRoom.number, { type, emptyBeds: roomSpace });
- });
- guests.forEach((currentPair) => {
- let roomFound = false;
- if (currentPair.first.gender !== currentPair.second.gender) {
- for (const [, value] of rooms) {
- if (value.type === 'double-bedded' && value.emptyBeds === 2) {
- value.guests = [];
- value.guests = [currentPair.first, currentPair.second];
- value.emptyBeds = 0;
- roomFound = true;
- break;
- }
- }
- } else {
- for (const [, value] of rooms) {
- if (value.type === 'triple' && value.emptyBeds > 1) {
- if (value.guests === undefined) {
- value.guests = [];
- } else if (value.guests[0].gender !== currentPair.second.gender) {
- continue;
- }
- if (currentPair.first) {
- value.guests.push(currentPair.first);
- value.emptyBeds -= 1;
- }
- value.guests.push(currentPair.second);
- value.emptyBeds -= 1;
- roomFound = true;
- break;
- } else if (value.type === 'triple' && value.emptyBeds === 1) {
- if (value.guests[0].gender === currentPair.second.gender) {
- value.guests.push(currentPair.first === undefined ? currentPair.second : currentPair.first);
- value.emptyBeds -= 1;
- currentPair.first = undefined;
- }
- }
- }
- }
- if (!roomFound) {
- guestsWithoutRooms += currentPair.first === undefined ? 1 : 2;
- }
- });
- [...rooms].sort().forEach((el) => {
- const [room, value] = el;
- console.log(`Room number: ${room}`);
- if (value.guests) {
- for (const guest of value.guests.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()))) {
- console.log(`--Guest Name: ${guest.name}`);
- console.log(`--Guest Age: ${guest.age}`);
- }
- }
- console.log(`Empty beds in the room: ${value.emptyBeds}`);
- });
- console.log(`Guests moved to the tea house: ${guestsWithoutRooms}`);
- }
Advertisement
Add Comment
Please, Sign In to add comment