LINQPad In Action : Studi kasus Palindrome

PALINDROME ialah kata, frasa, atau kalimat yang jika dibaca dari depan atau belakang.
Misalnya:

  1. Lutfi –> bukan palindrom karena lutfi tidak sama jika dibaca dari belakang iftul
  2. onno –> merupakan palindrom karena dibaca dari depan atau belakang sama

Pertanyaannya, bagaimana cara mendeteksi apakah kata itu berupa palindrom atau bukan?

SOLUSI

[bahasa manusia] tinggal dibalik saja katanya, jika sama maka palindrom
[algoritma]

  • tentukan index min (0) dan max(panjang string dikurangi 1)
  • ulangi sampai minimum > maksimum
  •  – jika karakter dengan index min tidak sama dengan karakter index max maka bukan palindrom
  • – nilai min ditambah 1 dan max dikurangi 1
  • kata tersebut ada lah palindrom

Continue reading “LINQPad In Action : Studi kasus Palindrome”

Just curious about code – Static Block Java

Sekedar iseng dan penasaran dengan code java di soal UTS pemrograman II dulu. Percobaan iseng kali ini melibatkan fungsi java tanpa nama. Bagaimana ceritanya tanpa nama? ok perhatikan kelas sederhana  berikut :

class A{
	{
		System.out.println("Saya Ilkom Kelas A");
	}

}

Tanpa mencobanya, kira-kira anda menebak code diatas bisa jalan dikompile tanpa error atau tidak?

Continue reading “Just curious about code – Static Block Java”

Auto property set get di C++ class

Welcome to the C++ world Open-mouthed smile

Kali ini saya akan berbagi tips untuk membuat property otomatis di C++ seperti halnya pada sintax di code C#. Seperti apa tipsnya? Tapi setelah yg satu ini.  hehe…Maksudnya setelah kita contoh source code simple header  dari kelas berikut:

#ifndef SAMPLECLASS_H
#define SAMPLECLASS_H

//sample header class dengan property set get
class SampleClass
{
public:
	void setNo(const int &no);
	int no() const;
private:
	int no;
}

#endif

Contoh diatas cuma ada 1 private member, tapi jika kita akan membuat kelas dengan banyak private member pasti bener capek buat set get method, belum lagi logic method yang akan digunakan nantinya. Di dalam C# dikenalkan auto property dengan set get method yg inline seperti berikut:

public int No{ set; get; }

Lalu bagaimana caranya supaya bisa buat auto property di C++ seperti code di C#?

Continue reading “Auto property set get di C++ class”

Optimasi fungsi Math.Exp dan Math.Pow di C#

Karena tidak ada kerjaan semalam jadi iseng2 ja nyari artikel tentang optimasi di C#, maklumlah ane kan programmer C#. :D. Setelah mencari-cari ternyata nemu cara optimasi yang aneh tapi bener sip. Pertama kali yang saya bahas disini yaitu fungsi exponensial. Dalam C# sudah ada fungsi yang menangani perpangkatan exponensial, tp itu belum cukup optimal karena ada cara lain yang lebih cepat dalam menghitung e^val.

		public static double Exp(double val) {
    		long tmp = (long) (1512775 * val + (1072693248 - 60801));
    		return BitConverter.Int64BitsToDouble(tmp << 32);
		}

Continue reading “Optimasi fungsi Math.Exp dan Math.Pow di C#”

Penyelesaian Kasus Diagonal V dengan Array 2 Dimensi (C#)

Terinspirasi dari artikelnya jefrey hermanto tentang solusi kasus diagonal V, iseng2 ja bikin programnya cz cukup simple. Mungkin ada yang belum tau apa itu diagonal V,  tp apa gmna ya njelasinnya. Bingung ndiri, hehehe…Tapi kira-kira bentuknya seperti ini.

Input: 3
3 2 1 2 3
2 3 2 3 2
1 2 3 2 1
2 3 2 3 2
3 2 1 2 3

Nah kira-kira seperti itulah bentuknya, dan solusinya cukup mudah logikanya. Langsung aja saya ambil dari artikelnya jefrey hermanto…hehehe….

KANAN  5 4 3 2 1 2 3 4
BAWAH  4 3 2 1 2 3 4 5
KIRI   4 3 2 1 2 3 4 5
ATAS   5 4 3 2 1 2 3 4 

      ----------->
  5 4 3 2 1 2 3 4 5
  4               4
  3               3
  2               2
  1               1
  2               2
  3               3
  4               4
  5 4 3 2 1 2 3 4 5
     <------------

Continue reading “Penyelesaian Kasus Diagonal V dengan Array 2 Dimensi (C#)”

Sorting kata menggunakan Quick Sort

Setelah lama vakum ngeblog karena diterpa badai skripsi, akhirnya bisa kembali berbagi sedikit code yang mungkin berguna 🙂 .

Langsung saja, bagi yang sering ngoding atau ngutek-ngutek algoritma sorting pasti sudah paham yang namanya quicksort yang sangat cepat dalam proses sorting. Namun sebagian besar dari kita hanya mengetahui penggunaannya untuk sorting angka, bagaimana jika untuk sorting kata? Berikut langkah-langkahnya:

  1. Jika terdapat kata-kata misalnya “akar” dan “akan” mak untuk melakukan sorting kita perlu membandingkan satu persatu hurufnya mulai dari paling kiri. Tetapi terdapat 3 huruf yang sama dan hanya huruf yang terkhir yang bisa untuk membandingkan. Hasilnya jika disorting secara ascending maka diperoleh “akan” kemudian “akar.
  2. Jika terdapat code quicksort seperti dibawah ini:
static int partition(ref intp[] arr, int left, int right)
{
      int i = left, j = right;
      int tmp;
      int pivot = arr[(left + right) / 2];
      while (i <= j) {
            while (arr[i] < pivot)
                  i++;
            while (arr[j] > pivot)
                  j--;
            if (i <= j) {
                  tmp = arr[i];
                  arr[i] = arr[j];
                  arr[j] = tmp;
                  i++;
                  j--;
            }
      };
      return i;
} 

static void quickSort(ref int arr[], int left, int right) {
      int index = partition(ref arr, left, right);
      if (left < index - 1)
            quickSort(ref arr, left, index - 1);
      if (index < right)
            quickSort(ref arr, index, right);
} Continue reading "Sorting kata menggunakan Quick Sort" 

Instalasi JOGL di Windows

Instalasi JOGL pada Windows
Setting Java Environment
Sebelum memulainya jangan lupa ucapkan Bismillah biar lancar instalasinya ?. Setelah itu kita mempunyai 2 pilihan JOGL yang pertama JOGL lama dan JOGL JSR-231. Tapi tenang saja keduanya dibahas oleh penulis.
Pastikan terlebih dahulu JDK(java development kit) sudah terinstall terlebih dahulu dan classpath-nya sudah diatur. Jika belum tahu pengaturan classpath, baca Setting Classpath pada java.
1.    Instalasi JOGL(versi jadul dari JOGL)
Langkah pertama yang dilakukan adalah kunjungi https://jogl.dev.java.net/ dan unduh file JOGL(bukan JSR-231).
Pastikan file yang di unduh berisi :
    jogl.jar
dan library(windows):            Linux :

    jogl.dll                       libjogl.so
    jogl_cg.dll                  libjogl_cg.so

Letakkan file jar pada direktori:
adalah C:\Program Files\Java\jdk1.6.0_17\jre\lib\ext
and the libraries in :
adalah C:\Program Files\Java\jdk1.6.0_17\jre\bin

2. Instalasi JOGL JSR 231
Langkah pertama yang dilakukan adalah kunjungi https://jogl.dev.java.net/ dan unduh file JOGL JSR-231.
Archives download berisi File jar :

    jogl.jar
    gluegen-rt.jar

serta library (Windows):   or    for Linux :

    jogl.dll                           libjogl.so
    jogl_awt.dll                       libjogl_awt.so
    jogl_cg.dll                        libjogl_cg.so
    gluegen-rt.dll                     gluegen-rt.so

Letakkan file jar pada direktori:
adalah C:\Program Files\Java\jdk1.6.0_17\jre\lib\ext
dan letakkan pada direktori berikut :
adalah C:\Program Files\Java\jdk1.6.0_17\jre\bin

 
C:\Program Files\Java\jdk1.6.0_17 merupakan path dari instalasi java di komputer penulis.
dan langkah-langkahnya sama seperti diatas tetapi C:\Program Files\Java\jdk1.6.0_17 diganti C:\Program Files\Java\jre1.6.0_03

Hal itu dilakukan agar class yang telah di kompile bisa dijalankan oleh run time java.
Setelah proses diatas selesai sekarang siap ngoding openGL di Java.



Untuk melihat hasil dari setting diatas berhasil atau tidak kita perlu membuat program openGL sederhana seperti berikut:

//sayMost.java
import javax.media.opengl.*; //untuk JOGL versi lama pemanggilannya import net.java.games.jogl.*
import java.awt.*;
import java.awt.event.*;

public class sayMost{
public static void main(String[] args)
{
Frame frame = new Frame("Say MOST");
GLCanvas canvas = new GLCanvas();
frame.add(canvas);
frame.setSize(300, 300); //mengatur ukuran frame berukuran 300px x 300px

frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.show();
}
}

Maka tampilan dari program diatas adalah sebagai berikut:



Kompilasi program diatas hanya menggunakan command prompt dengan cara kompilasi


javac C:\sayMost.java

dan untuk menjalankannya dengan perintah berikut:.
          java C:\sayMost

Setting Classpath pada java

Pertama-tama install terlebih dahulu java development kit dan installernya dapat diunduh di http://java.sun.com.

Setelah instalasi jdk selesai, maka diperlukan untuk mendefinisikan system variabel. Pertanyaannya, untuk apa mendefinisikan system variabel? Dengan mendefinisikan system variable, maka perintah yang dalam direktori yang akan kita definisikan dapat diakses melalui command prompt.

Langkah pertama yaitu klik Start-> Contol Panel-> System / klik kanan My Computer maka akan muncul tampilan seperti dibawah ini:

pilih tab Advanced dan klik pada tombol Environment Variables.

Kemudian pilih Path pada System Variables dan klik tombol Edit, setelah itu isikan PATH atau alamat lengkap dari direktori bin dari JDK, tetapi tidak perlu mencantumkan RT RW. Contohnya alamat bin di komputer penulis adalah C:\Program Files\Java\jdk1.6.0_17\bin maka dalam variable value ditambahkan alamat tersebut dan contohnya seperti pada gambar dibawah ini:

Jika alamat lengkap telah dimasukkan maka klik ok dan klik ok sekali lagi, nah sekarang kita bisa mengakses perintah kompilasi javac dan perintah eksekusi classjava melalui cmd atau command prompt.Setelah proses ini selesai anda bisa menggunakan cmd untuk kompilasi dan menjalankan java class. Namun untuk kemudahan disarankan menggunakan SciTe sebagai editor.
Happy coding….

Fungsi Kombinasi Rekursif pada suatu kelompok karakter

/*************************************************************************
 *  Kompilasi:  javac Combinations.java
 *  Eksekusi:    java Combinations N
 *  
 *
 *  kedua fungsi  (comb1 dan  comb2) mencetak secara alfabetik
 *
 *  % java Combinations 3
 *  
 *  a
 *  ab
 *  abc
 *  ac
 *  b
 *  bc
 *  c
 *
 *  a
 *  ab
 *  abc
 *  ac
 *  b
 *  bc
 *  c
 *
 *
 *************************************************************************/

Continue reading “Fungsi Kombinasi Rekursif pada suatu kelompok karakter”

Getting Start with JavaFx

First time I heard the new technology about JavaFx I’m very surprised because the visualization of program which made with it is beautiful. Before that I learn flex to fulfill my task from my college. But I’m very disappointed because two technology which I mention before not provided for linux user like me.

Now I can feel happy, because JavaFx was supported in linux operating system. Ups… I forget to tell what is JavaFx. JavaFx is a software technology that lets you create and deliver Rich Internet applications (RIA) with media and content across a wide variety of platforms and devices.[AND09]
Why these technology can across any platform and device? Before I answer the question, we must know the javaFx platform.

Figure 1 JavaFx platform


From the picture we can imagine how javaFx can run in any device and OS. The concept is likely how java program can run with any platform, the key is JVM. On Java platforms, JavaFX is a compiled, statically typed, declarative scripting language. The language offers automatic data binding, triggers, animation, and an expression syntax where code blocks yield values. Sequences, function types, and inferred types make JavaFX a concise scripting language. Developers can use object oriented JavaFX features to simplify complexity and handle errors with Java-like exceptions. JavaFX also lets you easily access the complete Java API, which includes
an enormous number of third-party Java libraries.

Example screenshot application



Figure 2 created by Kazuki Hamasaki(the student winners of the the JavaFX Coding Challenge)

Figure 3 The winners of the WidgetFX Developers Contest.


References:
[AND09] Anderson, Gail and Paul Anderson. Essential JavaFxTM .Prentice Hall.2009

Contoh penggunaan TABEL HASH

Dalam artikel ini akan saya bahas sedikit tentang contoh tabel hash yang paling simpel( kan saya ga pinter2 amat). Disini menggunakan simple fungsi hash, penanganan kolisi dengan linear probing dan tabel hash dengan ukuran yang tetap.

TABEL HASH

public class HashEntry {
      private int key;
      private int value; 

      HashEntry(int key, int value) {
            this.key = key;
            this.value = value;
      }      

      public int getKey() {
            return key;
     }

      public int getValue() {
            return value;
      }
}

Continue reading “Contoh penggunaan TABEL HASH”