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. \nO \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!