Ваша задача состоит в том, чтобы собрать целые числа от 1
до N
(в качестве входных данных) в прямоугольник ширины W
и высоты H
(также в качестве входных данных). Отдельные числа могут быть повернуты на любое кратное 90 градусов, но они должны появляться в виде непрерывных блоков в прямоугольнике. То есть вы не можете разбить одно из чисел на несколько цифр и разместить цифры в прямоугольнике по отдельности, а также нельзя согнуть три цифры числа за угол. Вы можете считать каждый номер кирпичом, из которого вы строите стену.
Вот пример. Предположим, что ваш вход (N, W, H) = (12, 5, 3)
. Одним из возможных решений является:
18627
21901
53114
Для ясности, вот две копии этой сетки, одна со скрытыми однозначными числами и одна со скрытыми двузначными числами:
1#### #8627
2##01 #19##
##11# 53##4
Это хорошо, если прямоугольник не может быть снова разобран уникальным способом. Например, в приведенном выше примере, также 12
может быть размещен так:
##### 18627
21#01 ##9##
##11# 53##4
правила
Вы можете предположить, что N
это положительно и W*H
соответствует количеству цифр в целых числах от 1
до N
включительно, и что существует разбиение прямоугольника на заданные числа. В настоящее время у меня нет доказательств того, возможно ли это всегда, но я бы заинтересовался, если вы это сделаете.
Выходными данными может быть либо строка, разделенная переводом строки, либо список строк (по одному на каждую строку) или список списков из однозначных целых чисел (по одному для каждой ячейки).
Результаты вашего представления должны быть решающими, и вы сможете справиться со всеми контрольными случаями менее чем за минуту на подходящем настольном компьютере.
Вы можете написать программу или функцию и использовать любой из наших стандартных методов получения ввода и предоставления вывода.
Вы можете использовать любой язык программирования , но учтите, что эти лазейки по умолчанию запрещены.
Это код-гольф , поэтому самый короткий действительный ответ - измеренный в байтах - выигрывает.
Тестовые случаи
За исключением первого, ни один из них не является уникальным. Каждый тестовый пример N W H
сопровождается возможным выводом. Убедитесь, что ваш ответ работает, когда прямоугольник слишком узок, чтобы писать большие цифры по горизонтали.
1 1 1
1
6 6 1
536142
6 2 3
16
25
34
10 1 11
1
0
8
9
2
6
7
3
1
5
4
11 13 1
1234567891011
27 9 5
213112117
192422581
144136119
082512671
205263272
183 21 21
183116214112099785736
182516114011998775635
181116013911897765534
180415913811796755433
179115813711695745332
178315713611594735231
177115613511493725130
176215513411392715029
175115413311291704928
174115313211190694827
173115213111089684726
172015113010988674625
171915012910887664524
170814912810786654423
169714812710685644322
168614712610584634221
167514612510483624120
166414512410382614019
165314412310281603918
164214312210180593817
163114212110079583716
200 41 12
81711132917193661114105533118936111184136
50592924448815915414562967609909953662491
89529721161671582389717813151113658811817
41418184511110119010183423720433017331118
35171183614003547461181197275184300111711
41874381132041861871718311415915921116264
11914245014112711011594492626831219331845
17125112629222085166344707736090956375181
94507611291431121128817413566319161275711
11011540021119913511011169939551729880780
92725141607727665632702567369893534277304
78118311405621148296417218591118562161856
(10, 1, 1)
это невозможно (при условии, что все числа от 1 до N
ДОЛЖНЫ использоваться в конструкции). Если это ограничение удерживается, площадь прямоугольника в единицах должна составлять не менее количества цифр 1..N
, чтобы сделать это возможным. Если это ограничение ослаблено, это возможно во всех случаях (но тогда задача не очень веселая: P)
N
, но программа может рассчитать его по ширине и высоте), и программе необходимо проверить, является ли прямоугольник верным ответом на этот вызов. ...