Penggunaan Bilangan Random Matlab dalam Aplikasi Permainan “Ular Tangga”

Bilangan random menggunakan fungsi rand pada Matlab. Fungsi yang membangkitkan sembarang bilangan dengan jangkauan nol hingga satu (pecahan) banyak diterapkan, salah satunya dalam optimisasi menggunakan algoritma genetika (GA).

Menghasilkan Output yang Tidak bisa Diprediksi

Kehidupan sehari-hari memang tidak bisa diprediksi, sehingga aplikasi permainan pun selayaknya mampu mensimulasikan kehidupan sehari-hari. Misalnya dalam game sepakbola, walaupun akurasi C. Ronaldo tinggi, tetapi karena adanya faktor ketidakpastian, maka belum tentu ketika pinalti selalu menghasilkan gol. Justru kalau gol terus, game tersebut tidak menyerupai aslinya. Sebagai contoh dalam postingan ini adalah permainan ular tangga sederhana.

Misal dua dadu dilempar beberapa kali dan harapannya tepat di titik finish (bernilai 10). Jika terlewat maka dihitung kekiri lebihannya. Mudah saja, kode berikut menggambarkan algoritmanya.

  • clc
  • sisa = 10;
  • step=0
  • history=[0 0 0 ];
  • while sisa ~= 0
    • random=2+floor(rand*10)
    • if sisa >= random
    • sisanew=sisa-random;
    • else
      • sisanew=abs(sisa-random);
    • end
    • sisa=sisanew
    • pause
    • clc
    • step=step+1
    • posisi=10-sisa
    • history=[history;[step random posisi]]
  • end
  • msgbox(‘FINISH’)

Fungsi di atas berisi pembangkitan bilangan random, melangkah dan mendeteksi apakah sudah mencapai FINISH. Offset “2” pada variabel random karena dua dadu minimal berharga “2”. Perulangan diterapkan dengan menggunakan instruksi while apakah sudah tepat di posisi 10. Berikut hasil runningnya:

Kolom tengah adalah bilangan random dan kolom ketiga menunjukan posisi terkini. Di akhir baris, yaitu lemparan ke-6, posisi tepat di angka 10 yang artinya FINISH.

Membuat Ular dan Tangga

Berikutnya ada dua lokasi ular, yaitu angka “4” yang akan memaksa balik ke nol, serta tangga pada angka “6” yang memaksa loncat ke “8”. Berikut tambahan kodenya:

  • clc
  • sisa = 10;
  • step=0
  • history=[0 0 0 ];
  • while sisa ~= 0
    • random=2+floor(rand*10)
    • if sisa >= random
    • sisanew=sisa-random;
    • else
      • sisanew=abs(sisa-random);
    • end
    • sisa=sisanew
    • pause
    • clc
    • step=step+1
    • posisi=10-sisa
    • if posisi==4
      • posisi=0;
      • sisa=10;
    • end
    • if posisi==6
      • posisi=8;
      • sisa=2;
    • end
    • history=[history;[step random posisi]]
  • end
  • msgbox(‘FINISH’)

Ada dua buah if-then untuk mengecek apakah tepat berada di titik ular atau tangga. Jika tepat maka diarahkan ke berturut-turut nol dan delapan. Hasil running di bawah tampak tidak ada angka 4 dan 6 karena akan diarahkan ke nol dan delapan. Sekian, semoga bermanfaat.

Iklan

Empat Tahunan Studi Doktoral

“I confer upon you a degree of doctor of philosophy”. Ketika rektor mengucapkan kalimat tersebut, selesailah sudah kuliah saya di kampus tua itu. Kampus yang dibentuk ketika perang dingin USA dan Rusia berlangsung di tahun 1959. Selama lima tahun kurang 3 bulan saya lalui di kampus yang terkenal sulit dan lama lulusnya, terutama di jurusan keras Computer Science and Information Management (CSIM).

Kisruh Saat Kedatangan

Awal perkuliahan di awal Agustus menyulitkan proses administrasi dengan pemberi beasiswa (DIKTI) yang mewajibkan penerima beasiswa (karyasiswa) menghadiri pembekalan pra keberangkatan di bulan September. Sepertinya DIKTI menyamakan dengan kampus dalam negeri yang perkuliahan dimulai pada bulan September. Terpaksa harus balik lagi ke Indonesia untuk mengikuti acara tersebut.

Masalah lain yang rumit adalah pembayaran biaya kuliah. Masalah ini muncul karena seperti biasa, DIKTI agak telah beberapa bulan dalam pencairan. Walaupun Guarantee Letter (GL) DIKTI sangat ampuh, repotnya ketika berangkat GL belum jadi. Setelah bolak-balik ke bagian pendaftaran (registry), akhirnya masalah daftar ulang beres.

Course Work Problem

Setelah masalah daftar ulang beres, ternyata muncul masalah baru yaitu nilai MID perkuliahan (course work). Beda dengan Jepang yang menganut S3 dengan riset (by research), AIT menganut course work + research. Jadi perkuliahan diwajibkan sebelum riset. Repotnya karena harus balik lagi ke tanah air, nilai mid semester berantakan, dan efeknya merembet ke nilai akhir. Padahal syarat boleh riset, IPK (GPA) minimal 3.50.

Problem Kandidasi

Kandidasi adalah sidang yang harus diikuti oleh mahasiswa doktoral yang ingin melanjutkan ke tahap berikutnya setelah tahap course work yaitu, tahapan riset. Program doktoral di AIT adalah “the highest degree in AIT that shows academic and research achievement”, seperti dikatakan oleh wakil rektor ketika acara wisuda. Maka mahasiswa doktoral dituntut bagus dalam perkuliahan (akademik) dan riset.

Problem Syarat Publikasi

Walaupun tergolong pintar, beberapa mahasiswa doktoral di kampus sulit menembus jurnal internasional. Selain waktu yang tidak jelas, kriteria lolos atau tidaknya sangat ketat dan subyektif. Dosen pembimbing hanya bisa mengarahkan saja dan tidak bisa berbuat apa-apa ketika siswa bimbingannya ditolak terus oleh pengelola jurnal. Akibatnya banyak yang pulang dulu beberapa tahun menunggu naskah yang akan dipublikasi diterima salah satu editor jurnal.

Jika sudah, maka syarat terakhir adalah pengecekan disertasi oleh profesor external sebelum sidang terbuka. Syarat ini tidak begitu rumit karena waktu pembuatan yang bisa diprediksi oleh mahasiswa. Berbeda dengan jurnal yang lama prosesnya tidak jelas, dari beberapa bulan hingga kalau sial bisa beberapa tahun.

Dan yang dinanti-nanti oleh pelajar, yaitu wisuda, akhirnya bisa dilalui jika publikasi selesai. Toga ber-strip tiga pun berhak dipakai. Akhirnya tinggalah kenangan dari seorang alumni. Sekian, semoga bisa menginspirasi.

Seminar Nasional “SINERGI” Univ. Islam 45 Bekasi

Kampus homebase saya sudah mengadakan seminar nasional tiga kali tetapi baru kali ini (yang ketiga) saya mengikutinya. Kebetulan memang masih di Thailand, berkutat dengan riset. Memang agak sulit melaksanakan seminar nasional saat ini karena tuntutan “terindeks Scopus” yang harus berupa seminar internasional. Namun prinsip “yang penting jalan, ada peserta atau tidak, ga masalah” memaksa dilaksanakannya agenda tahunan fakultas teknik tersebut.

Yang menarik dari seminar nasional adalah mudah dipahami (karena bahasa Indonesia) dan interaksi antara pembicara dan peserta sangat erat. Karena giliran teknik komputer yang diminta mencari nara sumber, langsung saja meminta dedengkot asosiasi informatika dan komputer (APTIKOM), Prof. Zainal A. Hasibuan untuk menjadi keynote speaker.

Prof Zainal yang dikenal dengan nama Prof Ucok mengetengahkan tema “sains dan teknologi berbasis renewable dan sumber daya sustainable: Peluang dan tantangan”. Sedikit dijelaskan revolusi industri 1 sampai 4.0, serta karakteristik teknologi saat ini yang bersifat “disruptive”. Seperti biasa, ketika saya mengetahui satu hal, ketika ikut seminar pasti saja ada hal baru yang tidak saya ketahui sebelumnya. Itulah manfaatnya seminar, bertukar fikiran dan ide-ide. Berikut hal-hal unik:

Tiap Thesis pasti ada Anti-Thesis

Prinsip ini pasti ada. Ketika ojek pangkalan terdisrupsi, muncul gojek yang kemungkinan besar diisi oleh para ojek-ojek pangkalan. Ketika pemerintah menggalakkan publikasi ilmiah yang terindeks Scopus pun ada saja yang tidak menyetujuinya dengan alasan tertentu. Pembicara menganjurkan silahkan anti Scopus tetapi harus menciptakan temuan yang terbukti dan diakui dunia internasional.

Big Data

Disinggung juga kasus Facebook yang ternyata memang diakui bahwa digunakan untuk menggiring opini untuk pemenangan calon tertentu (presiden/walikota/dll). Ada anekdot yang diutarakan. Dulu jaman orde baru, lebih canggih dari saat ini karena 3 bulan sebelum pemilu sudah tahu siapa presidennya (tentu saja selalu Suharto). Namun saat ini dibantah, karena setahun sebelum pemilu sudah dapat ditebak siapa presiden terpilihnya, dengan menganalisa big data yang berserakan di dunia maya.

Revolusi Industri 1,2,3 dan 4.0 ada di Indonesia

Walaupun saat ini sudah masuk revolusi industri 4.0 tetapi revolusi industri sebelumnya masih ada di negara kita. Saran beliau adalah ketika menerapkan teknologi, fokuslah ke kearifan lokal, termasuk kekayaan khas masing-masing wilayah. Misalnya memudahkan distribusi pada usaha kecil dan menengah. Dengan bantuan aplikasi online, diharapkan dapat memangkas biaya-biaya yang tidak diperlukan.

Jangan Panik dengan Penamaan Jurusan

Hebohnya ketika presiden RI menganjurkan pendirian jurusan kopi atau bisnis online, sebaiknya jangan disikapi terlalu serius. Sebenarnya bidang-bidang tersebut ada semua jurusannya di Indonesia. Pengalaman beliau ketika main ke Jepang, jurusan-jurusan spesifik yang saat ini sedang “in” di tanah air dapat disisipkan pada jurusan-jurusan yang telah ada. Mengapa? Karena ilmu-ilmu dasarnya tidak jauh berbeda dengan yang dikembangkan dari dulu hingga saat ini.

Kelemahan Bangsa

Prof Ucok menyampaikan data-data yang mengkhawatirkan, yaitu daya saing bangsa kita di bawah Singapura, Thailand, Malaysia dan Vietnam. Waduh .. Ternyata bangsa kita yang suka fokus ke wacana, debat sana sini, dan melupakan bekerja sama, salah satu khas bangsa kita yang terlupakan yaitu “Gotong Royong”.

Mungkin itu saja yang bisa di-share, pembicara berikutnya di luar bidang saya yaitu Material Teknik dan Konstruksi. Namun tetap saja pelajaran berharga dapat dipetik dari kedua pembicara (Dr. I Nyoman dan Hotma Prawoto). Pembicara terakhir yang menurut saya adalah seorang motivator banyak memberi insight dalam mengajar. Sedikit banyak pengalamannya mirip dengan saya yaitu sebelum mengajar menjadi praktisi dulu (bekerja di suatu perusahaan). Dosen-dosen yang langsung mengajar setelah lulus selayaknya bertanya kepada praktisi karena insinyur berbeda dengan saintis, atau bahkan sarjana teknik, banyak aspek-aspek yang tidak pasti ketika bekerja di lapangan. Habibie pun mengatakan “pengalaman tidak bisa dipelajari, tetapi dilalui”. Sekian, semoga bermanfaat.

Konversi Kode String ke ASCII di Matlab

Iseng-iseng buka tulisan yang lalu tentang enkripsi karena materi mulai masuk ke pemrosesan teks, ternyata banyak yang lupa. Salah satunya adalah konversi dari string ke kode ASCII. Kode ini sangat diperlukan ketikan mengkonversi dari satu ASCII ke yang lainnya dalam rangka enkripsi.

Menambah dengan Nol

Dulu pernah belajar kode ASCII pada mata kuliah bahasa rakitan ketika membahas masalah interupt. Ternyata hingga saat ini tidak berubah.

Bagaimana mengetahui kode ASCII selain dengan tabel di atas jika menggunakan Matlab? Caranya mudah yaitu tambahkan saja string dengan nol, beres sudah. Misal huruf ‘A’ maka:

  • >> teks=’A’
  • teks =
  • A
  • >> ascii=teks+0
  • ascii =
  • 65

Di sini 65 merupakan kode HTML, yang berbeda dengan HEXA (41). Jika sudah, kita dengan mudah mengenkripsi suatu kata, misalnya “Rahmadya” dengan algoritma “tambahkan kode ASCII tiap huruf dengan satu”.

Mengenkripsi Kata

Fungsi yang diperlukan adalah CHAR untuk menampilkan kode ASCII ke string. Masukan ke command window instruksi berikut ini.

  • >> teks=’Rahmadya’
  • teks =
  • Rahmadya
  • >> enkripsi=teks+1
  • enkripsi =
  • 83 98 105 110 98 101 122 98
  • >> char(enkripsi)
  • ans =
  • Sbinbezb

Perhatikan Sbinbezb itu adalah kode enkripsi yang dihasilkan. Untuk mendekripsi caranya mudah, yaitu dengan mengurangkan satu kode tersebut.

  • >> dekripsi=ans-1
  • dekripsi =
  • 82 97 104 109 97 100 121 97
  • >> char(dekripsi)
  • ans =
  • Rahmadya

Perhatikan kode aneh “Sbinbezb” setelah dienkripsi adalah “Rahmadya”. Semoga hal sepele ini bermanfaat.

Cara Berfikir Problem Solving, Ternyata tak Cukup

Waktu itu saya datang ke tukang servis tablet karena tidak bisa charging. Setelah hampir satu jam diutak-atik akhirnya selesai juga masalahnya. Tablet yang selama ini nganggur tidak terpakai (padahal tipe note yang ada pena stylus nya) akhirnya bisa digunakan lagi (buat main game oleh anak saya).

Menyelesaikan suatu problem terkadang mengasyikan, mirip dengan main video game. Namun apakah “menyelesaikan problem” merupakan teknik terbaik dalam manajemen? Ternyata beberapa literatur menyatakan tidak. Untuk menjawabnya perlu mengenal kuadran yang menggambarkan antara urgent dengan important.

Kuadran I: Penting dan Mendesak

Kuadran ini perlu ditangani sesegera mungkin, jika tidak maka akan mengalami beberapa masalah. Tentu saja perlu kebijaksanaan dalam menentukan apakah suatu hal itu penting dan mendesak. Jika tidak, maka masuk ke kuadran II. Di kuadran I ini “problem solving” bermain.

Kuadran II: Penting dan Tidak Mendesak

Jika di kuadran I, keahlian dalam menyelesaikan problem sangat dituntut, pada kuadran II ini yang dituntut adalah kemampuan seseorang menganalisa suatu hal penting sedari awal, sebelum hal penting tersebut menjadi urgent. Beberapa ahli manajemen (lihat 7 habit effective people post2 yg lalu) menganjurkan fokus ke kuadran II ini.

Dicontohkan seorang manajer penjualan yang cenderung fokus ke masalah urgent dan penting terus. Sehingga lupa melihat aspek-aspek lain sebelum terjadi kondisi urgent. Beberapa perusahaan besar hancur karena fokus ke persaingan dengan kompetitor (penting dan mendesak), padahal musuh besarnya adalah bisnis baru dengan model baru (online application). Beberapa perusahaan ada yang berhasil karena sudah mengantisipasinya sebelum berubah menjadi urgent, misalnya TELKOM di negara kita.

Seorang mahasiswa yang bertipe kuadran II tidak akan fokus hanya ke ujian, atau tugas akhir saja. Sebelum ujian atau bimbingan, mereka terkadang melihat aspek-aspek penting yang tidak urgen seperti berkomunikasi dengan dosen pembimbing, menyiapkan paper-paper rujukan, mencari literatur-literatur terkini dan hal-hal lainnya sebelum waktunya.

Kuadran III: Tidak Penting & Tidak Mendesak

Dalam keseharian kita kerap menjumpai kuadran ini. Perlu diingat prinsip pareto, 80% hasil berasal dari 20% kerja. Jadi kerja/proses yang sebesar 80% (dari 20%) lainnya adalah hal yang sia-sia yang biasanya di kuadran ini.

Kuadran IV: Tidak Penting tapi Mendesak

Pada kuadran ini sebagian hal mendesak tidak penting bagi kita. Tetapi mungkin penting bagi orang lain. Sebaiknya kita bisa berkata “NO” agar kita bisa berfokus ke kuadran I kita.

Kembali ke judul di atas, sebaiknya kita tidak terlalu fokus ke problem solving, walaupun kesannya OK ternyata ada hal lain yang lebih penting, yaitu menjaga agar tidak terjadi problem. Di sinilah pentingnya sifat Proaktif. Tentu saja perlu kemampuan menyeleksi dan mengkategorikan hal-hal yang kita jumpai, pentingkah, urgen-kah, dan sejenisnya. Juga perlu disiplin karena terkadang hal-hal yang penting karena tidak urgen tidak kita jalankan karena sifat “besok aja”, “nanti juga bisa”, dll. Teringat saya eks BOS saya dulu mengatakan “Do Something!!” ketika menjaga 40 cabang bank di wilayah utara Jakarta agar selalu online dan transaksi berjalan dengan baik. Sekian, semoga bermanfaat.

Makan2 setelah selesai instal server wilayah Jabotabek dulu

Hari Pendidikan Nasional (HARDIKNAS) di Jaman Now

Belakangan ramai diperbincangkan di grup WA tentang prinsip-prinsip dasar Ki Hajar Dewantara (nama aslinya RM Suwardi Suryaningrat). Walaupun terkadang melenceng ke esensi asalnya, yaitu membahas keluarnya beliau dari lingkungan keraton paku alaman, “Tut Wuri Handayani” tetap menjadi andalan KEMDIKBUD.

Arti dari “Tut Wuri Handayani” adalah dari belakang memberi dorongan. Uniknya adalah prinsip yang dicetuskan akhir abad 19 ternyata cocok dengan generasi milenial saat ini. Generasi yang gemar mengeksplorasi sendiri hal-hal yang diminati. Cocok dengan era disrupsi. Mungkin pembaca postingan ini ada yang masuk generasi – z, generasi yang dari kecil sudah mengenal dunia online, semoga bermanfaat. Ada hal-hal yang perlu diasah:

Nilai Dengar yang Tinggi

Banyak keluhan dari para pengguna lulusan generasi milenial yaitu tinggi tingkat perputaran pegawai, alias sering keluar masuk pekerjaan. Tidak cocok, mudah sekali mereka pindah. Biasanya ada gap antara generasi tua dengan yang muda di suatu institusi. Karena yang tua memiliki kuasa dan yang muda memiliki kreativitas tinggi tidak memiliki titik temu, akhirnya yang muda biasanya keluar mencari tempat lain yang bisa mengembangkan diri-nya.

Beberapa pemerhati karir menyarankan generasi milenial untuk meningkatkan nilai dengarnya. Maksudnya adalah meningkatkan hal-hal yang membuat ucapan/ide mereka selalu didengar oleh generasi tua yang biasanya atasan mereka. Karena tiap orang punya hasrat, kesukaan, dan selera sendiri, maka generasi milenial selayaknya mampu membaca hal tersebut dari generasi tua. Misal, mereka selalu bicara keuntungan/omset, pelanggan baru, dan sejenisnya, maka jika kita punya beberapa ide yang bisa menambah omset/pelanggan baru tentu akan melotot matanya dan serius mendengarkan, walaupun gaya bahasanya santai dan tidak serius. Tapi jika kita paksakan bicara teknologi, hi-tech, dan sejenisnya, walaupun berbusa-busa terkadang tidak didengarkan. Ada prinsip banyak mendengarkan terlebih dahulu dari pada langsung berbicara. Dan disarankan berbicara bukan karena kita harus berbicara, tetapi memang perlu berbicara.

Banyak Pemimpin Baik, Tetapi “Best Leader” selalu Loyal

Beberapa pionir seperti Zukenberg, Bill Gates, Steve Jobs, dan lain-lain memiliki karakter yang tidak jauh berbeda yaitu sangat loyal dengan perusahaannya. Entah itu perusahaan sendiri atau tidak .. tidak jadi masalah. Generasi milenial harus melihat hal tersebut. Pendiri-pendiri aplikasi online seperti GOJEK, ALIBABA dan lain-lain, memiliki hal serupa.

Terkadang ada kepuasan tersendiri ketika membangun suatu institusi dari kecil hingga besar dibanding pindah-pindah mencari institusi yang besar. Walaupun saat ini ada gap antar generasi di kebanyakan institusi tetapi jika memiliki “nilai dengar” yang tinggi, tidak jadi masalah. Toh beberapa pakar organisasi tidak mendefinisikan leadership hanya dengan jabatan tertentu. Seorang pegawai biasa pun bisa memiliki leadership yang baik asalkan memiliki tingkat inovasi yang tinggi. Oiya, leadership itu beda dengan managerial. Jika managerial melakukan sesuatu dengan benar, leadership melakukan sesuatu yang benar. Merakit piranti sesuai dengan SOP itu managerial tetapi menemukan piranti yang cocok dengan kondisi saat ini itu membutuhkan jiwa leadership.