Sfida
Dato un elenco di numeri interi, mostra come sarebbe fatto l'ordinamento per gravità.
Ordinamento per gravità
In ordine di gravità, immagina i numeri come file di asterischi. Quindi, tutto cade e le nuove righe saranno ovviamente ordinate. Diamo un'occhiata a un esempio:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
Si noti che questo è praticamente solo un ordinamento a bolle parallelizzato.
Specifiche esatte
Ad ogni iterazione, partendo dalla riga superiore, prendi ogni asterisco dalla riga che non ha un asterisco sotto di esso e spostalo in basso di una riga. Continua fino a quando l'elenco non viene ordinato.
Ingresso
L'input sarà un elenco di numeri interi assolutamente positivi.
Produzione
Per l'output, è necessario emettere ogni passaggio. È possibile scegliere due caratteri ASCII stampabili non bianchi, uno come "asterischi" e uno come "trattini" separati. Le file di asterischi devono essere separate con una nuova riga standard di qualche tipo (es. \n
O \r\f
). La fila di trattini deve essere almeno la larghezza della fila più larga (altrimenti i tuoi asterischi cadranno troppo in basso!). Una riga di trattini in fondo è facoltativa. È consentita una nuova riga finale alla fine. Sono consentiti spazi finali su ciascuna riga.
Casi test
l'input verrà rappresentato come un elenco, quindi l'output verrà elencato immediatamente di seguito. I casi di test sono separati da una doppia riga.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
Sentiti libero di correggere i miei casi di test se sono sbagliati, li ho fatti a mano :)
Nota: non visualizzare l'elenco ordinato alla fine. :)
punteggio
Tutti i tuoi programmi saranno scritti uno sopra l'altro. Non vorrai che parti del tuo programma cadessero, quindi assicurati di avere il codice più corto!