Sua tarefa é montar os números inteiros de 1
até N
(dados como entrada) em um retângulo de largura W
e altura H
(também dados como entrada). Os números individuais podem ser girados por qualquer múltiplo de 90 graus, mas devem aparecer como blocos contíguos no retângulo. Ou seja, você não pode dividir um dos números em vários dígitos e colocar os dígitos no retângulo individualmente, nem dobrar três dígitos de um número em uma esquina. Você pode considerar cada número um tijolo a partir do qual você está construindo um muro.
Aqui está um exemplo. Diga que sua opinião é (N, W, H) = (12, 5, 3)
. Uma solução possível é:
18627
21901
53114
Para maior clareza, aqui estão duas cópias dessa grade, uma com os números de um dígito ocultos e outra com os números de dois dígitos ocultos:
1#### #8627
2##01 #19##
##11# 53##4
Tudo bem se o retângulo não puder ser desmontado novamente de uma maneira única. Por exemplo, no exemplo acima, o 12
também poderia ter sido colocado assim:
##### 18627
21#01 ##9##
##11# 53##4
Regras
Você pode assumir que N
é positivo e que W*H
corresponde ao número de dígitos nos números inteiros de 1
até N
inclusivo, e que existe um lado a lado do retângulo nos números fornecidos. No momento, não tenho uma prova de que isso sempre seja possível, mas estaria interessado em uma, se você tiver.
A saída pode ser uma única cadeia de caracteres separada por avanço de linha ou uma lista de cadeias (uma para cada linha) ou uma lista de listas de números inteiros de um dígito (uma para cada célula).
Os resultados do seu envio devem ser determinísticos e você deve poder lidar com todos os casos de teste em menos de um minuto em uma máquina de desktop razoável.
Você pode escrever um programa ou uma função e usar qualquer um dos nossos métodos padrão de recebimento de entrada e saída.
Você pode usar qualquer linguagem de programação , mas observe que essas brechas são proibidas por padrão.
Isso é código-golfe , então a resposta mais curta e válida - medida em bytes - vence.
Casos de teste
Exceto pelo primeiro, nenhum deles é único. Cada caso de teste é N W H
seguido por uma saída possível. Verifique se sua resposta funciona quando o retângulo é muito estreito para escrever os números maiores horizontalmente.
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)
, não é possível (assumindo que todos os números de 1 a N
DEVEM ser usados na construção). Se essa restrição for mantida, a área do retângulo em unidades deverá ter pelo menos o número de dígitos 1..N
para possibilitar isso. Se essa restrição é relaxada, é possível em todos os casos (mas, em seguida, o desafio não é muito divertido: P)
N
, mas o programa pode calculá-lo a partir da largura e da altura), e o programa precisa verificar se o retângulo é uma resposta valida para esse desafio. ...