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.

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
A* algorithm for puzzle

A* Algorithm in Python to solve 8 puzzle problem

My team got this as A* algorithm assignment in Artificial Intelligence class few years ago taught by Mrs. Afiahayati, Ph.D. We should create an implementation of A* algorithm (read: “A” Star) to solve 8 puzzle problem. This puzzle problem is the small version of 15 sliding puzzle game.

A* Algorithm

In my opinion A* Algorithm (read more about it here) is looks like combination of Breadth First Search (BFS) and Depth First Search (DFS) algorithm (or maybe Dijkstra’s too(?)). It’s using Heuristic scoring to estimate the step from vertex to goal so make the system may running faster, and like Dijkstra’s, it’s a complete search which always finding a best solution. Read this to get better explanation.

My team agreed to use Manhattan distance to estimate distance between the current state and the goal state (h) and count the number of step as exact cost (g).

Implementation

I wrote the code using Python. And after several hours coding I found python have a “magical” function that make easy to write 🙂 My first implementation was not using any class at all and it made the code hard to read. After I saw this implementation, I realize that code is much prettier than mine, so I rewrite my code using Node class with similar class concept from that code.

See the complete source code on Github