Вызов
Дайте список целых чисел, покажите, как будет выполняться гравитационная сортировка.
Гравитационная сортировка
В гравитационном виде представьте числа в виде звездочек. Затем все падает, и новые строки будут явно отсортированы. Давайте посмотрим на пример:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
Обратите внимание, что это в значительной степени просто параллельная пузырьковая сортировка.
Точные характеристики
На каждой итерации, начиная с верхней строки, возьмите каждую звездочку из строки, у которой под ней нет звездочки, и переместите ее вниз на строку. Продолжайте делать это, пока список не отсортирован.
вход
На входе будет список строго положительных чисел.
Выход
Для вывода вы должны вывести каждый шаг. Вы можете выбрать любые два непечатаемых печатных символа ASCII, один из которых будет «звездочкой», а другой - разделителем «тире». Ряды звездочек должны быть разделены стандартной новой строкой (например, \n
или \r\f
). Ряд черточек должен быть не меньше ширины самого широкого ряда (иначе ваши звездочки могут упасть слишком далеко вниз!). Ряд черточек в самом низу необязателен. Завершающий перевод строки в конце разрешен. Пробелы на каждой строке разрешены.
Тестовые случаи
входные данные будут представлены в виде списка, а выходные данные будут перечислены ниже. Контрольные примеры разделяются двойной новой строкой.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
Пожалуйста, не стесняйтесь исправлять мои тесты, если они ошибочны, я сделал их вручную :)
Примечание. Не выводите отсортированный список в конце. :)
счет
Все ваши программы будут написаны друг на друге. Вы не хотели бы, чтобы части вашей программы рухнули, поэтому убедитесь, что у вас самый короткий код!