Apakah ada aturan seperti setelah 20 menit Anda harus mulai coding tidak peduli apa?
Tidak, tetapi jika Anda menghabiskan 20 menit menganalisis masalah sebelum turun ke bisnis, Anda mungkin sudah dalam kesulitan. Seorang majikan yang mengajukan pertanyaan seperti yang Anda kutip sebagian besar tertarik pada bagaimana Anda mendekati masalah, tetapi jika mereka mengajukannya sebagai masalah pengkodean, mereka juga ingin melihat beberapa kode. Bicaralah dengan mereka melalui proses pemikiran Anda ...
Nah, pendekatan yang jelas di sini adalah kekerasan. Jika saya memiliki cara untuk mengenali segitiga siku-siku mengingat tiga simpul, saya bisa menjalankan semua kombinasi dari dua titik dan asal mencari segitiga siku-siku. Itu seharusnya tidak sulit - saya dapat menulis fungsi yang menggunakan Teorema Pythagoras untuk mengidentifikasi segitiga siku-siku. Untuk membuatnya lebih mudah, saya juga akan menulis fungsi yang menentukan jarak antara dua titik menggunakan rumus jarak ...
Menulis fungsi-fungsi itu harus memakan waktu sekitar tiga menit. Sekarang, hanya beberapa menit ke pertanyaan, Anda sudah menunjukkan bahwa Anda ingat geometri dasar dan Anda benar-benar tahu cara menulis kode. Ini juga memberi Anda sesuatu untuk dibicarakan:
Jadi, kami jelas dapat menempatkan isRightTriangle(p1, p2, p3)
fungsi di tengah-tengah empat for
loop dan beralih ke semua pilihan yang mungkin untuk masing-masing dari dua titik variabel. Mari kita lihat ... masalahnya meminta jumlah segitiga siku-siku termasuk asal pada kisi 50x50, jadi dengan menggunakan metode brute force membuat kita memeriksa 50 kemungkinan untuk setiap koordinat dari setiap titik. Itu 50 ^ 4 cek ... Saya yakin kita bisa melakukan yang lebih baik, tetapi kodenya jelas, jadi izinkan saya menuliskannya ...
Jadi sekarang Anda menulis fungsi yang menggunakan for
loop bersarang dan isRightTriangle()
fungsi yang baru saja Anda tulis. Anda telah memecahkan masalah, tetapi Anda juga membiarkan pewawancara melihat ke mana Anda pergi. Jika tujuan mereka hanya untuk melihat bahwa Anda dapat menulis kode, mereka mungkin meminta Anda untuk berhenti. Kemungkinan besar, mereka senang berbicara dengan seseorang yang tahu apa yang mereka lakukan dan mereka ingin melihat seberapa jauh Anda mengambil ini. Jadi kamu pergi ...
Terpikir oleh saya ketika saya menulis bahwa kita dapat memanfaatkan simetri. Kita dapat merefleksikan setiap segitiga siku-siku yang diberikan di sekitar garis 45 °, jadi jika kita memilih untuk memeriksa salah satu titik hanya di satu sisi garis itu, kita dapat menghitung segitiga mana saja yang kita temukan dua kali ... sekali untuk segitiga dan satu kali untuk refleksi. Itu memotong jumlah cek hingga setengahnya. Juga, melihat itu sekarang, kita mengambil akar kuadrat untuk menemukan jarak antara dua titik, tapi kemudian kita hanya persegi itu lagi di isRightTriangle()
...
Dan seterusnya. Sekali lagi, mereka biasanya tidak ingin melihat solusi yang sempurna, mereka ingin melihat bagaimana Anda mendapatkan solusi. Proses berpikir Anda tidak harus seperti di atas - hanya memiliki kepercayaan diri untuk berpikir keras akan sangat berarti. Jangan berkeringat jika Anda melakukan kesalahan - katakan saja "hmmm, saya pikir saya sudah keluar dari rel di sini - biarkan saya mundur selangkah ..."