Su tarea es ensamblar los enteros de 1
a N
(dado como entrada) en un rectángulo de ancho W
y alto H
(también dado como entrada). Los números individuales pueden rotarse por cualquier múltiplo de 90 grados, pero deben aparecer como bloques contiguos en el rectángulo. Es decir, no puede dividir uno de los números en varios dígitos y colocar los dígitos en el rectángulo individualmente, ni puede doblar tres dígitos de un número en una esquina. Podrías considerar cada número como un ladrillo con el que estás construyendo un muro.
Aquí hay un ejemplo. Digamos que tu aportación es (N, W, H) = (12, 5, 3)
. Una posible solución es:
18627
21901
53114
Para mayor claridad, aquí hay dos copias de esta cuadrícula, una con los números de un dígito ocultos y otra con los números de dos dígitos ocultos:
1#### #8627
2##01 #19##
##11# 53##4
Está bien si el rectángulo no se puede volver a desmontar de una manera única. Por ejemplo, en el ejemplo anterior, el 12
también podría haberse colocado así:
##### 18627
21#01 ##9##
##11# 53##4
Reglas
Usted puede asumir que N
es positivo y que W*H
coincide con el número de dígitos de los números enteros de 1
al N
inclusive, y que existe un mosaico del rectángulo en los números dados. Actualmente no tengo una prueba de si esto siempre es posible, pero estaría interesado en uno si lo tiene.
La salida puede ser una sola cadena separada por salto de línea o una lista de cadenas (una para cada línea) o una lista de listas de enteros de un solo dígito (una para cada celda).
Los resultados de su envío deben ser determinantes y debe poder manejar todos los casos de prueba en menos de un minuto en una máquina de escritorio razonable.
Puede escribir un programa o una función y utilizar cualquiera de nuestros métodos estándar para recibir entradas y proporcionar salidas.
Puede usar cualquier lenguaje de programación , pero tenga en cuenta que estas lagunas están prohibidas de forma predeterminada.
Este es el código de golf , por lo que gana la respuesta válida más corta, medida en bytes .
Casos de prueba
Excepto por el primero, ninguno de estos es único. Cada caso de prueba es N W H
seguido por una posible salida. Asegúrate de que tu respuesta funcione cuando el rectángulo sea demasiado estrecho para escribir los números más grandes 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)
, no es posible (suponiendo que todos los números del 1 al N
DEBEN usarse en la construcción). Si se mantiene esa restricción, el área del rectángulo en unidades debe ser al menos el número de dígitos 1..N
para que sea posible. Si esa restricción es relajada, es posible en todos los casos (pero el desafío no es muy divertido: P)
N
, pero el programa podría calcularlo a partir del ancho y la altura), y el programa necesita verificar si el rectángulo es una respuesta válida a este desafío. ...