Diambil dari Putaran Kode Kualifikasi Google Code Jam 2013 B :
Alice dan Bob memiliki halaman di depan rumah mereka, berbentuk seperti N meter persegi panjang M meter. Setiap tahun, mereka mencoba memotong halaman dengan pola yang menarik. Mereka biasa memotong dengan gunting, yang sangat memakan waktu; tetapi sekarang mereka memiliki mesin pemotong rumput otomatis baru dengan beberapa pengaturan, dan mereka ingin mencobanya.
Mesin pemotong rumput baru memiliki pengaturan ketinggian - Anda dapat mengaturnya untuk ketinggian apa pun antara 1 dan 100 milimeter, dan itu akan memotong semua rumput lebih tinggi dari pada saat ia bertemu dengan ketinggian h. Anda menjalankannya dengan memasuki halaman di bagian manapun dari tepi halaman; kemudian mesin pemotong rumput berjalan dalam garis lurus, tegak lurus ke tepi halaman yang dimasukinya, memotong rumput dalam petak seluas 1 m, sampai keluar dari halaman di sisi lain. Tinggi mesin pemotong rumput hanya dapat diatur jika tidak ada di halaman.
Alice dan Bob memiliki sejumlah pola rumput yang bisa mereka miliki di halaman mereka. Untuk masing-masing dari mereka, mereka ingin tahu apakah mungkin untuk memotong rumput ke dalam pola ini dengan mesin pemotong rumput baru mereka. Setiap pola dijelaskan dengan menentukan ketinggian rumput pada setiap 1m x 1m persegi halaman.
Rumput awalnya setinggi 100mm di seluruh halaman.
Tulis fungsi yang mengambil deret 2D dari bilangan bulat tinggi dan menentukan apakah halaman dapat dipotong sesuai.
Berikut adalah 100 kasus uji dari Google Code Jam. 35 kasus pertama harus lulus, sisanya tidak.
Kode terpendek menang.
Jawaban:
J, 15 karakter
Tidak mengharapkan solusi singkat ini.
Penjelasan singkat:
Jika fungsi Anda adalah 4 fungsi lain seperti dalam solusi:
(f1 f2 f3 f4)
dan input J menghitungnya sepertif1(input,f3(f2(input),f4(input)))
yaituinput f1 ((f2 input) f3 (f4 input))
.sumber
APL, 15 karakter
Penjelasan:
⌈⌿⍵
menghitung maksimum kolom rhs⌈/⍵
melakukan hal yang sama dengan baris∘.⌊
apakah produk luar dari dua sebelumnya sehubungan dengan fungsi minimum⍵≡
membandingkan hasilnya dengan rhsContoh:
sumber
Python,
112104sumber
map(min,z(*r))
alih-alih[min(a)for a in z(*r)]
untuk menyimpan 8 karakterSaya memiliki kode python yang sedikit lebih panjang tetapi melewati semua test case yang diberikan di Google Code Jam 2013.
sumber