チャレンジ
整数のリストが与えられたら、重力ソートがどのように行われるかを示します。
重力ソート
重力ソートでは、数字をアスタリスクの行として想像してください。その後、すべてが落ち、新しい行が明らかにソートされます。例を見てみましょう:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
これは、ほとんど並列化されたバブルソートであることに注意してください。
正確な仕様
各反復で、一番上の行から開始し、その下にアスタリスクのない行からすべてのアスタリスクを取得し、行の下に移動します。リストがソートされるまでそれを続けてください。
入力
入力は、厳密に正の整数のリストになります。
出力
出力については、各ステップを出力する必要があります。任意の2つの非空白印刷可能ASCII文字を選択できます。1つは「アスタリスク」で、もう1つは分離する「ダッシュ」です。アスタリスクの行は、ある種の標準改行(\n
または\r\f
)で区切る必要があります。ダッシュの行は、少なくとも最も広い行の幅である必要があります(そうしないと、アスタリスクが下がりすぎます!)。一番下のダッシュの列はオプションです。末尾の改行は許可されます。各行の末尾のスペースは許可されます。
テストケース
入力はリストとして表され、出力はすぐ下にリストされます。テストケースは二重改行で区切られています。
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
テストケースが間違っている場合は、気軽に修正してください。手作業で作成しました:)
注:ソートされたリストを最後に出力しないでください。:)
得点
すべてのプログラムは、互いの上に書き込まれます。プログラムの一部が落ちないようにするため、最短のコードを使用してください。