Advertisement
simonradev

NotMineSolution

Feb 8th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function restHouse(availableRooms, guests) {
  2.     let rooms = new Map();
  3.     let guestsWithoutRooms = 0;
  4.     for (let currentRoom of availableRooms) {
  5.         let roomSpace = currentRoom.type === 'double-bedded' ? 2 : 3;
  6.         rooms.set(currentRoom.number, { type: currentRoom.type, emptyBeds: roomSpace });
  7.     }
  8.     for (let currentPair of guests) {
  9.         let roomFound = false;
  10.         if (currentPair.first.gender != currentPair.second.gender) {
  11.             for (let [key, value] of rooms) {
  12.                 if (value.type == 'double-bedded' && value.emptyBeds == 2) {
  13.                     value.guests = [];
  14.                     value.guests = [currentPair.first, currentPair.second];
  15.                     value.emptyBeds = 0;
  16.                     roomFound = true;
  17.                     break;
  18.                 }
  19.             }
  20.         } else {
  21.             for (let [key, value] of rooms) {
  22.                 if (value.type == 'triple' && value.emptyBeds > 1) {
  23.                     if (value.guests == undefined) {
  24.                         value.guests = [];
  25.                     } else if (value.guests[0].gender != currentPair.second.gender) {
  26.                         continue;
  27.                     }
  28.                     if (currentPair.first != undefined) {
  29.                         value.guests.push(currentPair.first);
  30.                         value.emptyBeds -= 1;
  31.                     }
  32.                     value.guests.push(currentPair.second);
  33.                     value.emptyBeds -= 1;
  34.                     roomFound = true;
  35.                     break;
  36.                 } else if (value.type == 'triple' && value.emptyBeds == 1) {
  37.                     if (value.guests[0].gender == currentPair.second.gender) {
  38.                         value.guests.push(currentPair.first == undefined ? currentPair.second : currentPair.first);
  39.                         value.emptyBeds -= 1;
  40.                         currentPair.first = undefined;
  41.                     }
  42.                 }
  43.             }
  44.         }
  45.         if (!roomFound) {
  46.             guestsWithoutRooms += currentPair.first == undefined ? 1 : 2;
  47.         }
  48.     }
  49.     for (let [room, value] of [...rooms].sort()) {
  50.         console.log(`Room number: ${room}`);
  51.         if (value.guests != undefined) {
  52.             for (let guest of value.guests.sort(function (a, b) {
  53.                 return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
  54.             })) {
  55.                 console.log(`--Guest Name: ${guest.name}`);
  56.                 console.log(`--Guest Age: ${guest.age}`);
  57.             }
  58.         }
  59.         console.log(`Empty beds in the room: ${value.emptyBeds}`);
  60.     }
  61.     console.log(`Guests moved to the tea house: ${guestsWithoutRooms}`);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement