Tugas Anda adalah untuk merakit bilangan bulat dari 1
ke N
(diberikan sebagai input) menjadi persegi panjang lebar W
dan tinggi H
(juga diberikan sebagai input). Angka-angka individual dapat dirotasi dengan kelipatan 90 derajat, tetapi angka-angka tersebut harus muncul sebagai blok yang bersebelahan dalam persegi panjang. Artinya, Anda tidak dapat memecah salah satu angka menjadi beberapa digit dan menempatkan digit dalam persegi panjang secara terpisah, Anda juga tidak bisa menekuk tiga digit angka di sudut. Anda dapat menganggap setiap angka sebagai batu bata dari mana Anda membangun dinding.
Berikut ini sebuah contoh. Katakan input Anda (N, W, H) = (12, 5, 3)
. Salah satu solusi yang mungkin adalah:
18627
21901
53114
Untuk kejelasan, berikut adalah dua salinan dari kisi ini, satu dengan angka satu digit disembunyikan dan satu dengan angka dua digit disembunyikan:
1#### #8627
2##01 #19##
##11# 53##4
Tidak apa-apa jika persegi panjang tidak dapat dibongkar lagi dengan cara yang unik. Misalnya, dalam contoh di atas, 12
bisa juga ditempatkan seperti ini:
##### 18627
21#01 ##9##
##11# 53##4
Aturan
Anda mungkin menganggap bahwa N
adalah positif dan W*H
sesuai dengan jumlah digit dalam bilangan bulat dari 1
ke N
inklusif, dan bahwa ubin persegi panjang ke nomor yang diberikan ada. Saat ini saya tidak memiliki bukti apakah ini selalu mungkin, tetapi saya akan tertarik pada satu jika Anda melakukannya.
Keluaran dapat berupa string yang dipisahkan dengan baris tunggal atau daftar string (satu untuk setiap baris) atau daftar daftar bilangan bulat satu digit (satu untuk setiap sel).
Hasil kiriman Anda harus determinstik dan Anda harus dapat menangani semua kasus uji dalam waktu kurang dari satu menit pada mesin desktop yang masuk akal.
Anda dapat menulis sebuah program atau fungsi dan menggunakan salah satu metode standar kami untuk menerima input dan memberikan output.
Anda dapat menggunakan bahasa pemrograman apa pun , tetapi perhatikan bahwa celah ini dilarang secara default.
Ini adalah kode-golf , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.
Uji Kasus
Kecuali yang pertama, tidak ada yang unik. Setiap test case N W H
diikuti oleh kemungkinan output. Pastikan jawaban Anda bekerja ketika persegi panjang terlalu sempit untuk menulis angka yang lebih besar secara horizontal.
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)
, itu tidak mungkin (dengan asumsi bahwa semua angka dari 1 hingga N
HARUS digunakan dalam konstruksi). Jika kendala itu dipegang, luas persegi panjang dalam unit harus setidaknya jumlah digit 1..N
untuk memungkinkannya. Jika kendala itu rileks, itu mungkin dalam semua kasus (tapi kemudian tantangannya tidak terlalu menyenangkan: P)
N
persegi panjang digit sebagai input (dan akhirnya , tetapi program dapat menghitungnya dari lebar dan tinggi), dan program perlu memeriksa apakah persegi panjang adalah jawaban tepat untuk tantangan ini. ...