Anda seorang petani dan kawanan domba Anda telah lolos! Oh tidak!
Kumpulkan domba-domba itu dengan membangun pagar untuk menampung mereka. Sebagai petani dengan anggaran terbatas, Anda ingin menggunakan pagar seminimal mungkin. Untungnya bagi Anda, mereka bukan domba paling pintar di dunia dan tidak repot-repot bergerak setelah melarikan diri.
Tugas
Diberikan daftar koordinat, hasilkan paling sedikit segmen pagar yang diperlukan untuk menampung domba.
Aturan
- Domba terkandung jika mereka tidak bisa berkeliaran (tidak ada lubang di pagar).
- Anda tidak harus memuat semua domba dalam satu blok pagar - mungkin ada beberapa area berpagar yang terpisah satu sama lain.
- Segmen pagar berorientasi pada arah mata angin.
- Setiap tuple koordinat mewakili satu domba.
- Masukan harus berupa bilangan bulat positif,
x>0
&y>0
, tetapi dapat diformat dengan tepat untuk bahasa Anda.- yaitu:
{{1,1},{2,1},{3,7}, .. }
atau[1,2],[2,1],[3,7], ..
- yaitu:
- Ruang kosong di dalam area berpagar tidak apa-apa.
- Anda tidak dapat menganggap koordinat adalah input dalam urutan tertentu.
Sebagai contoh, seekor domba tunggal membutuhkan 4
segmen pagar untuk sepenuhnya terkandung.
Uji kasus
[1,1]
4
[1,1],[1,2],[2,2]
8
[2,1],[3,1],[2,3],[1,1],[1,3],[3,2],[1,2],[3,3]
12
[1,1],[1,2],[2,2],[3,7],[4,9],[4,10],[4,11],[5,10]
22
[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]
36
[1,1],[2,2],[3,3],[4,4],[6,6],[7,7],[8,8],[9,9]
32
[2,1],[8,3],[8,4]
10
Catatan
- Anda dapat menganggap koordinat input valid.
- Algoritme Anda secara teoritis harus berfungsi untuk koordinat integer yang cukup besar (hingga nilai maksimum yang didukung bahasa Anda).
- Jawaban program atau fungsi lengkap tidak masalah.
Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
{1,2,3,4},{5,6,7,8} -> {1,5},{2,6},{3,7},{4,8}
x,y
input harus bersama. Namun pemikiran yang bagus, saya belum memikirkan itu sendiri.Jawaban:
JavaScript (ES6),
251244275 bytesBagaimana?
Kami menggunakan fungsi rekursif P () untuk membuat daftar semua kemungkinan partisi dari daftar input. Fungsi ini saat ini kurang optimal, karena ia mengembalikan beberapa partisi yang digandakan - yang tidak mengubah hasil akhir.
Untuk setiap partisi, kami menghitung jumlah pagar yang diperlukan untuk mengelilingi semua domba di setiap kelompok dengan persegi panjang. Jumlah pagar ini memberikan skor partisi. Kami akhirnya mengembalikan skor terendah.
Uji kasus
Tampilkan cuplikan kode
sumber
[ [1,1],[2,2] ] , [ [1,2] ]
?k ,
62 58 5755 byteCobalah online!
sumber