tes pemrograman

Solusi Soal Tes Pemrograman untuk Daftar Kerja

Pada artikel sebelumnya sempat saya tunjukkan dua soal dari tes pemrograman yang biasa dilakukan sebagai tahapan pada proses seleksi rekrutmen kerja. Dua soal tersebut saya peroleh dari tes pemrograman yang pernah saya ikuti. Soal tersebut tidak 100% sama, tapi cukup menggambarkan bagaimana tingkat kesulitan tes pemrograman di luar sana. Pada artikel ini saya akan membahas solusi pengerjaan soal-soal tersebut.

Soal #1

Dari semua tes pemrograman yang saya ikuti, soal ini menurut saya adalah soal paling mudah. Jika disimpulkan, pertanyaan penting dari soal ini adalah tiga poin:

  1. Bagimana cara membaca string yang terdiri dari beberapa kata (dipisahkan oleh spasi) dalam satu baris?
  2. Bagaimana cara mengecek huruf pertama tiap kata?
  3. Bagaimana cara mengecek sekaligus mengubah huruf kapital ke non-kapital dan sebaliknya?

Saat itu saya mengerjakan soal ini menggunakan C++, dan berikut adalah poin-poin jawaban saya dari pertanyaan di atas:

Continue reading
soal pemrograman

Contoh Soal Pemrograman untuk Tes Masuk Kerja

Beberapa waktu lalu saya sempat merasakan beberapa soal pemrograman dari beberapa perusahaan dalam rangka proses mendaftar kerja (coding test). Saat ini kebanyakan perusahaan di bidang IT mewajibkan pelamar untuk mengerjakan sebuah tes membuat program. Tes ini bisa sangat tricky bagi yang tidak pernah melakukannya. Jenis soal pemrograman pada tes ini biasanya mirip dengan soal-soal pada lomba programming, contohnya seperti yang ada pada Hackerrank. Kalian bisa mencoba mengerjakannya terlebih dahulu untuk mencari tahu format soalnya.

Sejujurnya saya pribadi merasa kaget melihat soal pemrograman yang diberikan karena ternyata tidak semudah yang saya bayangkan. Saya tidak tahu apakah tingkat kesulitan ini juga ditentukan dari posisi yang saya daftar atau semua pendaftar mendapat soal dengan tingkat kesulitan yang sama.

Pada artikel ini saya hanya akan menunjukkan dua contoh soal pemrograman dari beberapa tes pemrograman untuk mendaftar kerja yang saya peroleh. Soal yang saya tulis di sini sengaja tidak saya tuliskan 100% mirip dengan soal aslinya (mungkin hanya 75% an mirip) dan saya pun tidak akan menyebutkan perusahaan mana yang memberikan soal ini.

Saya akan memposting artikel lain untuk membahas solusinya agar kalian bisa coba kerjakan terlebih dahulu untuk menguji kemampuan kalian sendiri 🙂 Selamat mencoba!

Soal Pemrograman #1

Diberikan sebuah string yang dapat mengandung huruf (kapital ataupun non-kapital) dan karakter spasi di dalamnya, ubah format string tersebut menjadi format penulisan judul dan format penulisan biasa.

Format penulisan judul menjadikan huruf pertama setiap katanya menjadi kapital sedangkan huruf lainnya tidak, sedangkan format penulisan biasa hanya menjadikan huruf pertama string menjadi kapital dan huruf lainnya tidak.

Contoh Input:

Contoh Output:

Soal Pemrograman #2

Bayangkan sebuah denah rumah tampak atas. Anda diberikan koordinat kartesius pojok-pojok denah rumah tersebut, terurut mengitari rumah hingga kembali ke titik semula (searah jarum jam). Outputkan luas dari rumah tersebut. Diasumsikan sisi rumah selalu sejajar dengan Sumbu X atau Sumbu Y (tidak ada sisi rumah yang miring).

Ilustrasi di bawah merupakan ilustrasi dari Contoh Input yang diberikan di bawah. Perlu diperhatikan, koordinat yang diberikan tidak selalu bermulai pada koordinat (0, 0). Pada input, baris pertama akan diinputkan banyak titik sudut bangun tersebut.

soal pemrograman geometri

Contoh Input

Contoh Output

Bagaimana? ada ide untuk membuat programnya? Sekalian untuk belajar, kalian bisa coba untuk membuat programnya terlebih dahulu 🙂 sebelum lanjut membaca artikel selanjutnya yang akan membahas solusinya. Pada tes-tes yang saya ikuti, program solusi boleh dibuat dengan bahasa pemrograman apapun dan dipersilahkan untuk mengakses internet.

Sekilas tentang Jaringan Saraf Tiruan dan Deep Learning

Jaringan Saraf Tiruan (JST) adalah sebuah model pada bidang machine learning yang dibuat (dengan asumsi) menyerupai cara kerja otak manusia.

Secara ringkas pada jaringan saraf tiruan terdapat tiga nilai atau variabel utama:

  • Nilai Input $X$: nilai yang diinputkan pengguna
  • Nilai Target $T$: nilai yang diharapkan pengguna
  • Nilai Prediksi $Y$: nilai yang dihasilkan JST

Jaringan saraf tiruan akan menerima input $X$ dan akan menghasilkan suatu nilai prediksi $Y$ melalui proses matematis. Awalnya nilai $Y$ ini akan bernilai acak. Dengan proses pembelajaran, jaringan saraf tiruan akan terus memperbaiki diri agar dapat menghasilkan nilai prediksi $Y$ yang sedekat (semirip) mungkin dengan nilai target $T$.

Suatu “proses pembelajaran” di sini berarti pada awalnya model JST ketika menerima input $X$ akan menebak nilai $Y$ secara acak (tanpa knowledge), dan seiring berjalannya waktu, kita akan melatih model JST (dengan memberi contoh lain misalnya) sehingga dapat memperbaiki diri dan menebak nilai $Y$ dengan lebih baik (mendekati nilai target $T$).

Neuron

jaringan saraf tiruan neuron

Di atas adalah contoh sebuah neuron (elemen pada jaringan saraf tiruan) yang menerima input X dan menghasilkan nilai Y. Sebuah neuron adalah visualisasi dari perhitungan sederhana berikut:

$$ Y = \sigma ( X . W+ b) $$

Dengan $W$ adalah suatu nilai “bobot” (weight) yang awalnya bernilai random. Setiap kali melakukan proses pelatihan, nilai $W$ ini akan diubah sehingga JST dapat menghasilkan nilai $Y$ yang lebih baik (mendekati nilai $T$). Variabel $b$ biasa disebut dengan bias, konsepnya sama seperti $W$ dengan nilai awal yang bernilai random.

Continue reading
flowchart

Belajar dasar Algoritma dengan Flowchart

Jika diminta mengajar pemrograman dasar, langkah pertama yang saya ajarkan bukanlah mulai langsung membuat program di depan komputer, melainkan mulai dengan pembiasaan menyusun suatu algoritma. Menurut saya pribadi, pembiasaan menyusun algoritma ini penting untuk mengenalkan proses Computational Thinking ke calon-calon programmer. Dan proses penyusunan algoritma bisa dilakukan menggunakan flowchart tanpa harus mengerti program komputer.

Apa itu Algoritma?

Algoritma itu mirip resep masakan. Apa isi dari resep masakan? isinya menceritakan langkah per langkah suatu proses se-spesifik mungkin sehingga suatu bahan masakan menjadi masakan jadi. Perlu digaris bawahi bagian “se-spesifik mungkin”. Tidak mungkin di resep hanya tertulis “masukkan telur”, karena bisa memunculkan pertanyaan: telur ayam atau bebek? berapa buah? putihnya atau kuningnya?

algoritma nasi goreng

Dalam dunia pemrograman, dari analogi di atas bisa diartikan bahwa algoritma adalah sekumpulan perintah (resep) yang digunakan untuk memproses input (bahan masakan) menjadi output yang sesuai harapan (masakan). BTW, bicara tentang algoritma selalu mengingatkan saya dengan video seru ini 🙂

Continue reading
backpropagation step by step

Contoh Perhitungan Algoritma Backpropagation

Beberapa waktu lalu saya dapat kesempatan untuk mengasisteni kegiatan kemkominfo di UGM seputar AI. Salah satu topik yang dibicarakan adalah Backpropagation pada Jaringan Saraf Tiruan (JST). Di postingan ini saya akan mencontohkan perhitungan Backpropagation langkah per langkah, menggunakan arsitektur yang sederhana dan dilanjutkan implementasi menggunakan Python.

Sebelum memulai perhitungan, sebaiknya kita harus mengerti terlebih dahulu dasar-dasar untuk:

  • Menghitung turunan satu variabel suatu persamaan
  • Memahami cara perkalian antarmatriks

Jika masih dirasa banyak yang lupa, silakan refresh kembali materi tersebut.

Overview

model / arsitektur JST sederhana

Sebelum kita mulai, kita ingat kembali beberapa poin penting dalam JST pada ilustrasi di atas.

Continue reading