(Случайно вдохновлено https://codegolf.meta.stackexchange.com/a/17272/42963 )
Учитывая прямоугольную матрицу цифр (то есть 0 - 9
), выведите «части» матрицы, как если бы цифры соединялись вместе, образуя один фрагмент, в порядке возрастания цифр. Кусочки гарантированно соединяются только ортогонально - ни одна деталь не соединится по диагонали. Всего будет максимум 10 штук (то есть одна 3
штука не появится дважды в одной матрице).
Например, с учетом матрицы
0 1 1 1
0 0 1 2
3 3 2 2
Ниже приведены фрагменты и пример вывода:
0
0 0
1 1 1
1
2
2 2
3 3
Интервалы важны для сохранения формы частей, но части не обязательно нуждаются во внутреннем интервале. Сами части должны как-то быть выделены непротиворечивым образом (например, новая строка между частями, удостовериться, что каждый из них является другим персонажем и т. Д.). Кроме того, посторонние пробелы (например, завершающие символы новой строки или начальные столбцы) не допускаются. Например, следующее также будет действительным:
0
00
111
1
2
22
33
или
#
##
###
#
#
##
##
Но следующее не будет (обратите внимание на пробелы позади 0
s):
0
0 0
Повороты или отражения также не допускаются. Например, вывод
1
111
для приведенной выше матрицы также недействительна.
Куски матрицы могут иметь отверстия или быть только одним элементом:
0 0 0 1
0 2 0 1
0 0 0 3
Или часть может быть целой матрицей:
0 0 0
0 0 0
Вот большой, более сложный тестовый пример:
1 1 1 1 1 2 2
3 4 4 4 2 2 2
5 5 4 4 2 0 0
5 6 6 6 6 7 7
5 6 8 8 6 6 7
9 6 6 6 7 7 7
И пример вывода:
00
11111
22
222
2
3
444
44
55
5
5
6666
6 66
666
77
7
777
88
9
Правила и ввод / вывод
- Вход и выход могут быть заданы любым удобным способом .
- Вы можете распечатать его в STDOUT или вернуть как результат функции.
- Либо полная программа или функция приемлемы.
- Требуются начальные пробелы для сохранения формы (например, форма «Т»
1
в примере), непротиворечивые пробелы для выделения частей и допускается одиночный завершающий перевод строки в конце, но другие пробелы не допускаются. - Можно смело предположить , что части пронумерованы
0
вN
смежно, а это означает , что (например)3
не будет пропущены в шесть частях матрицы. - Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
0
в качестве значения заполнителя? Таким образом, каждый кусок будет выводиться с остальными значениями в матрице, установленными на0
-1
или каким-либо другим значением вместо ничего / пробелов не будет в порядке.
' '
в таком случае следует использовать пробел ( )?
-1
или с пробелом, представляющим пустой пробел, или, если возможно, с отсутствием элемента)?