introduzione
Alcuni di voi potrebbero aver sentito parlare del Grand Hotel di Hilbert . Il manager ha perso la sua lista di dove alloggiano gli ospiti, ma ha ancora l'ordine in cui hanno effettuato il check-in. Ogni ospite non può stare in una stanza con un numero di stanza inferiore al loro valore e se un ospite viene aggiunto a un livello inferiore stanza, tutti gli ospiti nelle stanze superiori senza spazio vuoto tra loro e il nuovo ospite vengono spostati in una stanza. Puoi aiutarlo a trovare dove alloggiano gli ospiti?
Requisiti
Scrivi un programma che riceve un elenco ordinato di numeri naturali come input e li posiziona nel loro indice. Se esiste già un valore in quell'indice, viene spostato alla voce successiva nell'elenco. Questo processo si ripete fino a quando non viene trovato il primo spazio vuoto (0 o non definito). Tutti gli spazi non definiti tra l'indice più alto corrente e qualsiasi nuovo input verranno riempiti aggiungendo 0. Dato che si tratta del Grand Hotel di Hilbert, non esistono camere più alte dell'attuale indice più alto occupato.
Ingresso e uscita
L'ingresso sarà un elenco ordinato di numeri naturali (è possibile leggere attraverso qualsiasi forma accettata di input)
Ogni numero nell'input è considerato un ospite che arriva in hotel ed è in ordine di arrivo
L'output sarà la disposizione finale degli ospiti (numeri)
Esempi
Input: 1 3 1
Output: 1 1 3
Step by step:
1
Crea spazio all'indice 1 e posiziona 1 in esso
1 0 3
Crea room fino all'indice 3 e posiziona 3 in room 3
1 1 3
Sposta il contenuto della room 1 in alto una stanza e posizionare 1 nella stanza 1Input: 1 4 3 1 2 1
Output : 1 1 2 1 3 4
Step by step:
1
Crea room all'indice 1 e posiziona 1 in esso
1 0 0 4
Crea room fino all'indice 4 e posiziona 4 in room 4
1 0 3 4
Posiziona 3 nella stanza 3
1 1 3 4
Sposta il contenuto della stanza 1 su una stanza e posiziona 1 nella stanza 1
1 2 1 3 4
Sposta il contenuto delle stanze da 2 a 4 in alto di una stanza e metti 2 in stanza 2
1 1 2 1 3 4
Spostare il contenuto delle stanze da 1 a 5 in alto di una stanza e posizionare 1 nella stanza 1Ingresso: 10
Uscita: 0 0 0 0 0 0 0 0 0 0 10
Passo dopo passo:
0 0 0 0 0 0 0 0 0 10
Crea room fino alla room 10 e posiziona 10 nella room 10Gli appunti:
lavorare con 0 indicizzato va bene e in questo caso è possibile inserire uno 0 nella parte anteriore dell'output
Sono vietate le scappatoie standard , vince il codice più corto in byte