Il tuo compito è quello di assemblare gli interi da 1
a N
(dato come input) in un rettangolo di larghezza W
e altezza H
(dato anche come input). I singoli numeri possono essere ruotati di qualsiasi multiplo di 90 gradi, ma devono apparire come blocchi contigui nel rettangolo. Cioè, non è possibile suddividere uno dei numeri in più cifre e posizionare le cifre nel rettangolo singolarmente, né è possibile piegare tre cifre di un numero attorno a un angolo. Puoi considerare ogni numero come un mattone dal quale stai costruendo un muro.
Ecco un esempio Di 'che il tuo contributo è (N, W, H) = (12, 5, 3)
. Una possibile soluzione è:
18627
21901
53114
Per chiarezza, ecco due copie di questa griglia, una con i numeri a una cifra nascosti e una con i numeri a due cifre nascosti:
1#### #8627
2##01 #19##
##11# 53##4
Va bene se il rettangolo non può essere smontato di nuovo in un modo unico. Ad esempio, nell'esempio sopra, 12
potrebbe anche essere stato posizionato in questo modo:
##### 18627
21#01 ##9##
##11# 53##4
Regole
Si può presumere che N
sia positivo e che W*H
corrisponda al numero di cifre negli interi da 1
a N
compreso, e che esista una piastrellatura del rettangolo nei numeri dati. Al momento non ho una prova se questo sia sempre possibile, ma sarei interessato a uno se lo fai.
L'output può essere una stringa separata da un'alimentazione di riga singola o un elenco di stringhe (una per ogni riga) o un elenco di liste di numeri interi a una cifra (una per ogni cella).
I risultati del tuo invio devono essere deterministici e dovresti essere in grado di gestire tutti i casi di test in meno di un minuto su una macchina desktop ragionevole.
È possibile scrivere un programma o una funzione e utilizzare uno qualsiasi dei nostri metodi standard per ricevere input e fornire output.
È possibile utilizzare qualsiasi linguaggio di programmazione , ma si noti che queste scappatoie sono vietate per impostazione predefinita.
Questo è code-golf , quindi la risposta valida più breve - misurata in byte - vince.
Casi test
Tranne il primo, nessuno di questi è unico. Ogni caso di test è N W H
seguito da un possibile output. Assicurati che la tua risposta funzioni quando il rettangolo è troppo stretto per scrivere i numeri più grandi in orizzontale.
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)
, non è possibile (supponendo che tutti i numeri da 1 a N
DEVONO essere utilizzati nella costruzione). Se tale vincolo viene mantenuto, l'area del rettangolo in unità deve essere almeno il numero di cifre 1..N
per renderlo possibile. Se quel vincolo è rilassato, è possibile in tutti i casi (ma la sfida non è molto divertente: P)
N
, alla fine , ma il programma potrebbe calcolarla da larghezza e altezza), e il programma deve verificare se il rettangolo è una risposta valida a questa sfida. ...