Introducción
Algunos de ustedes habrán oído hablar del Hilbert's Grand Hotel . El gerente allí ha perdido su lista de dónde se hospedan los invitados, pero aún tiene el orden en el que se registraron. Cada huésped no puede permanecer en una habitación con un número de habitación inferior a su valor y si un invitado se agrega a una tarifa inferior habitación, todos los huéspedes en habitaciones superiores sin espacio vacío entre ellos y el nuevo huésped se desplazan una habitación. ¿Puedes ayudarlo a encontrar dónde se hospedan cada uno de los invitados?
Requisitos
Escriba un programa que reciba una lista ordenada de números naturales como entrada y los coloque en su índice. Si ya hay un valor en ese índice, se desplaza a la siguiente entrada de la lista. Este proceso se repite hasta que se encuentra el primer espacio vacío (0 o indefinido). Cualquier espacio indefinido entre el índice más alto actual y cualquier entrada nueva se llenará agregando 0s. Como se trata del Grand Hotel de Hilbert, no existen habitaciones más altas que el índice ocupado más alto actual.
Entrada y salida
La entrada será una lista ordenada de números naturales (se permite leer a través de cualquier forma de entrada aceptada)
Cada número en la entrada se considera un huésped que llega al hotel y está en orden de llegada
La salida será la disposición final de los invitados (números)
Ejemplos
Entrada: 1 3 1
Salida: 1 1 3
Paso a paso:
1
Cree una habitación en el índice 1 y coloque 1 en ella
1 0 3
Cree habitaciones hasta el índice 3 y coloque 3 en la habitación 3
1 1 3
Cambie el contenido de la habitación 1 hacia arriba una habitación y lugar 1 en la habitación 1Entrada: 1 4 3 1 2 1
Salida : 1 1 2 1 3 4
Paso a paso:
1
Crear habitación en el índice 1 y colocar 1 en ella
1 0 0 4
Crear habitaciones hasta el índice 4 y colocar 4 en la habitación 4
1 0 3 4
Coloque 3 en la habitación 3
1 1 3 4
Cambie el contenido de la habitación 1 hacia arriba una habitación y coloque 1 en la habitación 1
1 2 1 3 4
Cambie el contenido de las habitaciones 2 a 4 hasta una habitación y coloque 2 en la habitación 2
1 1 2 1 3 4
Cambie el contenido de las habitaciones 1 a 5 hacia arriba una habitación y coloque 1 en la habitación 1Entrada: 10
Salida: 0 0 0 0 0 0 0 0 0 0 10
Paso a paso:
0 0 0 0 0 0 0 0 0 10
Crea habitaciones hasta la habitación 10 y coloca 10 en la habitación 10Notas:
Trabajar con 0 indexado está bien y puede insertar un 0 al frente de la salida en ese caso
Las lagunas estándar están prohibidas, el código más corto en bytes gana