Peri-peri Santa membutuhkan bantuan dalam menentukan apakah kumpulan hadiah mereka saat ini akan cocok dengan giring santa. Tulis program sesingkat mungkin dalam bahasa pilihan Anda untuk membantu mereka.
Kendala
- Giring Santa berukuran lebar 6 kaki x 12 kaki dan dalamnya 4 kaki.
- Hadiah mungkin rapuh, sehingga tidak dapat ditumpuk satu sama lain.
- Anda dapat memutar dan membalik hadiah seperti yang Anda inginkan, tetapi Sinterklas cukup obsesif-kompulsif sehingga menjaga rotasi hingga kelipatan 90 derajat.
- Peraturan kesehatan dan keselamatan Kutub Utara menetapkan bahwa hadiah tidak boleh lebih dari 1 kaki di atas giring (oleh karena itu, tingginya mungkin tidak lebih dari 5 kaki).
Memasukkan
Input akan menyala STDIN
dan akan menjadi satu bilangan bulat yang mewakili jumlah hadiah dalam kumpulan diikuti oleh daftar dimensi hadiah - 1 hadiah per baris, 3 dimensi (dalam kaki) dipisahkan oleh spasi.
Contoh:
1
6 12 5
6
1 12 3
1 12 4
1 12 1
1 12 5
1 12 3
1 12 5
1
4 3 13
1
6 12 6
Keluaran
Keluaran seharusnya berupa kata 'YA' jika hadiah dapat dimasukkan ke dalam kereta luncur atau 'TIDAK' jika tidak bisa.
Output untuk contoh di atas:
YES
YES
NO
NO
Skrip uji
Seperti sebelumnya, saya telah menggunakan beberapa skrip uji yang ditulis oleh Joey dan Ventero untuk membuat beberapa tes untuk tugas ini: -
Pemakaian: ./test [your program and its arguments]
Hadiah
Setiap entri yang saya dapat verifikasi yang memenuhi spesifikasi, lulus tes dan jelas telah mencoba golf akan menerima upvote dari saya (jadi tolong berikan instruksi penggunaan dengan jawaban Anda). Solusi terpendek pada akhir 2011 akan diterima sebagai pemenang.
Jawaban:
Haskell, 312
318karakterUntuk beberapa alasan yang saya tidak sepenuhnya mengerti saat ini, itu tidak menyelesaikan tes Anda # 9 dan # 16 dalam waktu yang wajar. Tetapi Anda tidak mengatakan apa-apa tentang kinerja, bukan?
373
383karakterVersi ini berjalan lebih cepat untuk contoh-contoh: pertama-tama memeriksa apakah itu tidak mungkin hanya karena area terlalu kecil, dan kemudian dimulai dengan parsel terbesar daripada memasukkannya dalam urutan yang diberikan. Perhatikan bahwa deteksi area tidak sempurna: itu tidak mempertimbangkan rotasi, jadi mungkin pada beberapa input memberikan hasil yang salah. Tapi itu berhasil dengan skrip uji.
sumber
Python, 461 karakter
L
secara rekursif memeriksa apakah persegi panjang diP
dapat dimasukkan ke dalam giring, di manaz
bitmask sel yang sudah ditempati. TheS
tugas menentukan cara yang untuk masing-masing paket (dimensi terbesar <= 5 berjalan secara vertikal).Kode berpotensi eksponensial, tetapi cepat pada semua input tes.
sumber
GolfScript, 130 karakter
Butuh beberapa waktu untuk menjalankannya di GolfScript. Setiap upaya untuk bermain golf lebih lanjut memecahkan beberapa kasus uji.
Harap diingat bahwa versi ini mungkin menjadi sangat lambat jika Anda menjalankannya dengan terlalu banyak hadiah.
sumber
./test ruby golfscript.rb howard.gs
tetapi itu memberi saya kesalahan. Bagaimana saya harus memohonnya?;"1\n6 12 5"
) ke skrip yang diberikan.