Bayangkan sebuah kotak W oleh H kotak yang membungkus toroidally. Item ditempatkan ke kisi sebagai berikut.
Item pertama dapat ditempatkan pada kotak apa saja, tetapi item berikutnya tidak boleh berada dalam jarak Manhattan R dari item sebelumnya (juga dikenal sebagai lingkungan Von Neumann dari rentang R ). Dengan hati-hati memilih posisi memungkinkan pas sejumlah besar item ke grid sebelum tidak ada lagi posisi yang valid. Namun, pertimbangkan tujuan sebaliknya: Berapakah jumlah item terendah yang dapat ditempatkan dan tidak meninggalkan posisi yang valid lebih lanjut?
Berikut adalah zona pengecualian radius 5:
Berikut ini adalah zona pengecualian radius 5 lainnya, kali ini di dekat tepi sehingga perilaku pembungkus terlihat:
Memasukkan
Tiga bilangan bulat:
- W : lebar kotak (bilangan bulat positif)
- H : tinggi kotak (bilangan bulat positif)
- R : radius zona pengecualian (bilangan bulat non-negatif)
Keluaran
Bilangan bulat N , yang merupakan jumlah item terkecil yang dapat ditempatkan mencegah penempatan lebih lanjut yang valid.
Detail
- Jari-jari nol memberikan zona eksklusi 1 kuadrat (yang ditempatkan pada item).
- Jari-jari N tidak termasuk zona yang dapat dicapai dalam langkah-langkah ortogonal N (ingat tepi membungkus toroidally).
Kode Anda harus berfungsi untuk kasus sepele dari R = 0, tetapi tidak perlu bekerja untuk W = 0 atau H = 0.
Kode Anda juga harus berurusan dengan kasus di mana R > W atau R > H .
Batas waktu dan uji kasus
Kode Anda harus dapat menangani semua kasus uji, dan setiap kasus uji harus selesai dalam 5 menit. Ini harus mudah (contoh, solusi JavaScript membutuhkan beberapa detik untuk setiap kasus uji). Batas waktu terutama untuk mengecualikan pendekatan brute force yang ekstrim. Contoh pendekatannya masih cukup brute force.
Jika kode Anda selesai dalam waktu 5 menit pada satu mesin tetapi tidak pada yang lain yang akan cukup dekat.
Uji kasus dalam bentuk input: keluaran sebagaiW H R : N
5 4 4 : 1
5 4 3 : 2
5 4 2 : 2
5 4 1 : 5
7 5 5 : 1
7 5 4 : 2
7 5 3 : 2
7 5 2 : 4
8 8 8 : 1
8 8 7 : 2
8 8 6 : 2
8 8 5 : 2
8 8 4 : 2
8 8 3 : 4
7 6 4 : 2
7 6 2 : 4
11 7 4 : 3
11 9 4 : 4
13 13 6 : 3
11 11 5 : 3
15 14 7 : 2
16 16 8 : 2
Cuplikan untuk membantu memvisualisasikan dan bermain-main dengan ide
Contoh solusi (ungolfed)
Hanya contoh untuk output kecil (dihasilkan dari jari-jari tidak jauh lebih kecil dari lebar dan tinggi). Dapat menangani salah satu kasus uji tetapi akan kehabisan waktu dan menyerah untuk sebagian besar kasus yang lebih besar.