HEX
Server: nginx/1.18.0
System: Linux srv01 5.15.0-171-generic #181-Ubuntu SMP Fri Feb 6 22:44:50 UTC 2026 x86_64
User: RaviMohan (1026)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/AkaalCreatives/.codeium/university/base/commandGeneration.txt
// Sandbox code for Codeium Chat: Command Edit.

class Pet {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }
 }

interface Room {
    type: 'private' | 'shared';
    length: number;
    width: number;
    daysLeft: number;
    available: boolean;
}

class PetHotel {
    private rooms: Room[] = [];
    private rating: number = 0;

    constructor(public name: string) { }

    /**
     * Adds a room to the list of rooms.
     *
     * @param {'private' | 'shared'} type - The type of the room (private or shared).
     * @param {number} length - The length of the room.
     * @param {number} width - The width of the room.
     * @return {void} This function does not return anything.
     */
    addRoom(type: 'private' | 'shared', length: number, width: number): void {
        this.rooms.push({ type, length, width, daysLeft: 0, available: true });
    }

    /**
     * Retrieves the list of rooms.
     *
     * @return {Room[]} The list of rooms.
     */
    getRooms(): Room[] {
        return this.rooms;
    }

    /**
     * Retrieves the rating value.
     *
     * @return {number} The rating value.
     */
    getRating(): number {
        return this.rating;
    }

    /**
     * Registers a pet in a suitable room based on the requested type, availability, and minimum size.
     *
     * @param {Pet} pet - The pet to be registered.
     * @param {'private' | 'shared'} type - The type of room requested.
     * @param {number} days - The number of days the pet will stay in the room.
     * @param {number} minSize - The minimum size required for the room.
     * @return {Room | undefined} The room assigned to the pet, or undefined if no suitable room is available.
     */
    registerPet(pet: Pet, type: 'private' | 'shared', days: number, minSize: number): Room | undefined {
        // Find a suitable room for the pet based on the requested type, availability, and minimum size
        const room = this.rooms.find(r => r.type === type && r.available && r.length * r.width >= minSize);

        if (!room) {
            console.log(`No ${type} rooms available for ${pet.name} with minimum size of ${minSize}.`);
            return;
        }

        // Assign the room to the pet for the specified number of days
        room.daysLeft = days;
        room.available = false;

        return room;
    }

    /**
     * Display the hotel information.
     *
     * This function logs the hotel name, rating, and room details to the console.
     * It uses the `name` and `rating` properties of the hotel object, and the `rooms` array
     * to display the room type and dimensions.
     *
     * @return {void} This function does not return any value.
     */
    displayHotelInfo(): void {
        console.log(`Pet Hotel: ${this.name}`);
        console.log(`Rating: ${this.rating} stars`);
        console.log('Rooms:');
        this.rooms.forEach((room, index) => {
            console.log(`Room ${index + 1} - Type: ${room.type}, Dimensions: ${room.length}x${room.width}`);
        });
    }

    // Generate function here.
}