Program Ramal Jodoh

Also published in a newsletter of the Department of Information Systems, Bina Nusantara University, December 2004.

[Jika ingin diramal, kunjungilah Ramal Jodoh.]

Begitu diminta untuk menulis artikel pemrograman untuk terbitan ini, saya langsung mencari tahu topik apa yang kira-kira paling diminati oleh mahasiswa, yaitu dengan mengamati popular searches pada Friendster. Hasilnya ternyata bukan “e-business” ataupun “corporate information systems”, melainkan “ramal jodoh”. Maka pada tulisan ini akan diberikan suatu program ramal jodoh.

Ramal jodoh bisa berdasarkan antara lain nama dan shio. Untuk ramalan nama, jika hasil ramalan tidak sesuai dengan yang diinginkan, bisa jadi nanti yang disalahkan adalah orang tua yang telah memberi nama. Sedangkan untuk ramalan shio, yang disalahkan cukup matahari dan rembulan. Jadi di sini dipilih yang berdasarkan shio, menuruti gambar-gambar di bawah ini (http://www.chineseastrology.com/wu/charts.html):


Shio-shio yang sangat berjodohShio-shio yang sangat tidak berjodohShio-shio yang sangat berjodoh (hampir mendatar) dan sangat tidak berjodoh (hampir tegak)

Pada gambar di sebelah kiri, garis-garis menghubungkan shio-shio yang sangat berjodoh; pada gambar di tengah, menghubungkan yang sangat tidak berjodoh; pada gambar di sebelah kanan, yang hampir mendatar menghubungkan yang sangat berjodoh, sedangkan yang hampir tegak menghubungkan yang sangat tidak berjodoh. Sebetulnya saya berharap bahwa Kambing dan Naga sangat berjodoh, sebab saya penggemar Shrek. Apa boleh buat. Namun setidaknya mereka bukannya sangat tidak berjodoh.

Untuk menentukan shio seseorang, selain tanggal lahir, perlu juga diketahui tanggal jatuhnya Tahun Baru Imlek pada tahun lahir. Misalnya seseorang lahir pada tahun 1980. Jika ia lahir pada atau setelah Tahun Baru Imlek tanggal 16 Februari, ia bershio Monyet, sedangkan jika tidak, ia bershio Kambing. Daftar Tahun Baru Imlek bisa didapatkan antara lain di http://www.chineseastrologyonline.com/NewYears.htm

Kode program ditulis dalam Java dan tercantum di bagian akhir artikel ini. Dalam kode tersebut, perhitungan ramal jodoh dinyatakan sebagai static methods dalam suatu class—ini adalah trik yang berguna jika kita ingin mengelompokkan fungsi-fungsi pembantu dalam kode berorientasi objek yang kita buat. Meskipun tabel Tahun Baru Imlek dalam class hanya meliputi 1970-1990, sehingga berlakunya perhitungan juga terbatas pada tahun-tahun tersebut, dengan mudah tabel ini dapat diperluas. Class ini kemudian dicoba dengan menggunakan user interface berbasis teks, demi ringkasnya kode. Berikut contoh dialog program:


Tanggal lahir kamu (dd/mm/yy): 15/2/84
Tanggal lahir dia  (dd/mm/yy): 15/2/80
Tikus dan Kambing
Berakhir di pengadilan

Saya merasa perlu mengatakan bahwa saya sendiri tidak percaya pada ramalan shio. Menurut ramalan shio, orang-orang yang bershio seperti saya memang tidak percaya pada hal-hal seperti itu.


/*
 * Shio.java
 * Copyright (c) 2004 Lucky E. Santoso. All Rights Reserved.
 */

import java.util.*;
import java.text.*;
 
public class Shio {
  /*
   * Tabel Tahun Baru Imlek dapat dengan mudah diperluas dengan
   * memodifikasi dataImlek dan TAHUN_MIN
   */
  private static String[] dataImlek = {
    "2/6", "1/27", "2/15", "2/3", "1/23", "2/11", "1/31", "2/18",
    "2/7", "1/28", "2/16", "2/5", "1/25", "2/13", "2/2", "2/20",
    "2/9", "1/29", "2/17", "2/6", "1/27"
  };
  private static final int TAHUN_MIN = 1970;
  private static final int TAHUN_MAX = TAHUN_MIN + dataImlek.length;
  private static Calendar[] imlek = new Calendar[dataImlek.length];
  private static String[] namaShio = {
    "Tikus", "Kerbau", "Macan", "Kelinci", "Naga", "Ular",
    "Kuda", "Kambing", "Monyet", "Ayam", "Anjing", "Babi"
  };
  public static final int SANGAT_TIDAK_BERJODOH = 0;
  public static final int TIDAK_ADA_KOMENTAR = 1;
  public static final int SANGAT_BERJODOH = 2;
 
  static {    /* static initialization */
    SimpleDateFormat format = new SimpleDateFormat("MM/dd");
    for (int i = 0; i < imlek.length; i++) try {
      imlek[i] = new GregorianCalendar();
      imlek[i].setTime(format.parse(dataImlek[i]));
      imlek[i].set(Calendar.YEAR, TAHUN_MIN + i);
    } catch (Exception e) {}
  }

  private Shio() {}    /* mencegah pembentukan object */

  public static int getShio(Date tanggalLahir) {
    Calendar lahir = new GregorianCalendar();
    lahir.setTime(tanggalLahir);
    int tahunLahir = lahir.get(Calendar.YEAR);
    if (tahunLahir < TAHUN_MIN || tahunLahir >= TAHUN_MAX) return -1;
    if (lahir.before(imlek[tahunLahir - TAHUN_MIN])) tahunLahir--;
    return (tahunLahir + 8) % 12;
  }

  public static String getNamaShio(int shio) {
    if (shio < 0 || shio >= 12) return null;
    return namaShio[shio];
  }

  public static int ramalJodoh(int shio1, int shio2) {
    if (shio1 < 0 || shio1 >= 12) return -1;
    if (shio2 < 0 || shio2 >= 12) return -1;
    if (Math.abs(shio1 - shio2) == 4) return SANGAT_BERJODOH;
    if (Math.abs(shio1 - shio2) == 8) return SANGAT_BERJODOH;
    if (Math.abs(shio1 - shio2) == 6) return SANGAT_TIDAK_BERJODOH;
    if ((shio1 + shio2) % 12 == 1) return SANGAT_BERJODOH;
    if ((shio1 + shio2) % 12 == 7) return SANGAT_TIDAK_BERJODOH;
    return TIDAK_ADA_KOMENTAR;
  }
}

/*
 * DemoShio.java
 * Copyright (c) 2004 Lucky E. Santoso. All Rights Reserved.
 */

import java.text.*;
import java.io.*;
 
public class DemoShio {
  public static void main(String[] args) throws Exception {
    InputStreamReader reader = new InputStreamReader(System.in);
    BufferedReader in = new BufferedReader(reader);
    System.out.print("Tanggal lahir kamu (dd/mm/yy): ");
    String tanggalLahirKamu = in.readLine();
    System.out.print("Tanggal lahir dia  (dd/mm/yy): ");
    String tanggalLahirDia = in.readLine();
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
    int shioKamu = Shio.getShio(format.parse(tanggalLahirKamu));
    int shioDia = Shio.getShio(format.parse(tanggalLahirDia));
    System.out.println(Shio.getNamaShio(shioKamu) + " dan "
      + Shio.getNamaShio(shioDia));
    int hasilRamalan = Shio.ramalJodoh(shioKamu, shioDia);
    if (hasilRamalan == Shio.SANGAT_BERJODOH) {
      System.out.println("Berakhir seperti dongeng anak-anak");
    } else if (hasilRamalan == Shio.SANGAT_TIDAK_BERJODOH) {
      System.out.println("Berakhir di pengadilan");
    }
  }
}

39 Comments to “Program Ramal Jodoh”

  1. hendry ramanas Says:

    saya ingin bertanya, saya menyukai seorang gadis bernama Lamsari Simatupang dia kelahiran tanggal 13 November 198. sungguh saya sangat menyukai, manyayangi dan mencintainya. Tepat 2 minggu bulan puasa agama islam tahun 2006 saya mencoba untuk mengatakan cinta kepadanya.tapi ditolak dengan halus dan saya memaksanya dan akhirnya fatal akibat. tapi setelah itu dia sering mencari saya melalui teman2 saya tapi sewaktu saya ingin temui dia malah buang muka dan ketika saya dimelihatnya di malah memperhatikan saya.Jadi bantu saya apa saya berjodoh dengan dia MOHON DIBANTU

  2. SUHERMAN Says:

    TOLONG RAMAL PERUNTUNGAN SAYA BISNIS SAYA DAN LAINNYA

  3. Lucky E. Santoso Says:

    Bung Hendry dan rekan-rekan lain, saya sudah buat alat ramal jodoh (berbasis-AJAX) berdasarkan artikel ini. Silakan kunjungi.

    Bung Suherman, jika ada waktu, saya ingin juga membuat alat ramal untuk bisnis dan yang lainnya.

  4. hermanto Says:

    hi mau nanya co shio kelinci, taurus dgn ce ular, cancer cocok dak,
    dan bagaimana karir dan segala hal shio kelinci taurus tahun 2007

  5. Lucky E. Santoso Says:

    Bung Hermanto dan rekan-rekan lain, silakan kunjungi dan pakai alat ramal jodoh yang sudah saya buat berdasarkan artikel ini. Maaf, untuk sementara ini baru layanan itu yang bisa saya berikan.

  6. carolina Says:

    saya lahir di tahun kambing 1967, bagaimana peruntungan saya
    ditahun 2007 ini. terima kasih

  7. Lucky E. Santoso Says:

    Zus Carolina dan rekan-rekan lain, banyak loh situs yang khusus membahas soal itu, misalnya situs ini.

  8. hery Says:

    boleh di kasi tahu apa maksud dari fungsi static pada java

  9. Lucky E. Santoso Says:

    Sepemahaman saya, fungsi static (static method) yang dinyatakan dalam suatu class adalah method yang dimiliki oleh class tersebut, bukan oleh objek-objek dari class tersebut. Satu implikasinya adalah bahwa tanpa pembentukan objek pun kita tetap dapat mengakses method tersebut (mis. Shio.getShio()). Static methods ini ibarat global functions pada pemrograman jaman dahulu kala: sebetulnya tidak terlalu sesuai dengan semangat berorientasi objek.

  10. Trisna Yudha s Says:

    hai mau nanya nie klo shio ayam ma shio tikus cocok berjodoh ga ?bagaimana di tahun 2007 ini ?

  11. deanne Says:

    sy suka ma co tp kita udah pisah kurang lebih setahun, masih ada kemungkinan untuk kembali lagi ga? oh ya aq ce taurus sementara dia capricorn, tolong diramal ya! thx

  12. Lucky E. Santoso Says:

    Bung Trisna, Zus Deanne, dan rekan-rekan lain, banyak loh halaman Web yang membahas ramalan menurut zodiak Barat, misalnya http://astrology.about.com/od/sunsignlove/a/compatiblesigns.htm
    Untuk ramalan menurut shio, salah satunya adalah http://www.lesantoso.com/tools/ramal-jodoh/ .

  13. albertus fendi ona Says:

    bos saya mau tau yg cocok dengan shio kelinji itu shio apa
    saya lahir 13 maret 1975 ths bos

  14. Lucky E. Santoso Says:

    Bung Albertus, kelinci/rabbit bisa dipertukarkan dengan kucing/cat (Bisa dicek misalnya di sini). Kebetulan dalam sumber yang dipakai di artikel ini, istilah kucing yang dipakai. Semoga membantu.
    Bisa juga eksperimen dengan menggunakan http://www.lesantoso.com/tools/ramal-jodoh/ .

  15. ida Says:

    saya lahir tgl 15 juli 1978 skrg ini sy sdg ada mslh dg pacar sy,apa kira2 thn ini kami akan menikah? tolong ramalin yah….

  16. herti handayani Says:

    sy baru 5 bln pisah ma pacar, awalnya sy pikir dia the last man. eh ditengah jalan malah bubar, kta dia nga cocok karna karakter qta yg beda bgt. sy bintangnya libra 16101975 sedangkan dia scorpio 27101975. ada kemungkinan balik lagi apa nga yach. please aku diramalin, jodoh ma rejeki sy di taon 2007 gimana?. thx ya

  17. ana Says:

    nama saya liliana shio macan lahir 1 agustus 1986
    bagaimana mengenai ramalan kehidupan, asmara, kuliah, keuangan di tahun babi ini
    terima kasih

  18. eka enggriani Says:

    kalo mau tau ramalan shio dimana, tp berbahasa indonesia

  19. Lucky E. Santoso Says:

    Zus Ida, Zus Herti, Zus Ana, Zus Eka, dan rekan-rekan lain, banyak loh halaman Web yang membahas ramalan kompatibilitas menurut zodiak Barat, misalnya situs ini (berbahasa Inggris).
    Untuk ramalan menurut shio, atau sekedar cari tahu Anda bershio apa, salah satunya adalah http://www.lesantoso.com/tools/ramal-jodoh/ (berbahasa Indonesia).
    Halaman Web yang membahas ramalan peruntungan di tahun ini antara lain adalah situs ini (berbahasa Inggris).

  20. ema Says:

    ramal jodoh dan pekerjaan

  21. yuly Says:

    saya lahir tanggal 18 february 1979 yg ingin tanyakan adalah ttg jodoh dan peruntungan saya, terutama dalam bidang keuangan.
    emang sih skr ini lg ada deket sama cowok,tp aku msh blm yakin dengan dia. berhubung baru aja kenalan jadi aku juga gak tau orangnya gimana…
    please…kasi tau ya Boss….thanks ya…

  22. Lucky E. Santoso Says:

    Untuk ramalan kompatibilitas silakan coba:
    http://www.lesantoso.com/tools/ramal-jodoh/

  23. RIANA Says:

    SAYA LAHIR 12 APRIL 1971 APAKAH DITAHUN INI SAYA BISA MENDAPATKAN JODOH SAYA

  24. fenni yunita Says:

    saya lahir tanggal 30 juni 1982,sekarang saya sudah memasuki umur 25tahun,dan bagi seorang wanita sudah sangat matang bila menginjak kejenjang pernikahan,dan itu ada dalam diri saya,saya sangat berharap ditahun ini atau paling lambat tahun depan saya segerah menikah.saat ini saya sedang dekat dengan seorang laki2 yang lahir tanggal 04 juli 1983,apakah dia cocok untuk dijadikan pendamping hidup saya?yang saya ingin tanyakan apakah jodah saya ditahun ini atau ditahun depan sudah ada?terus laki2 yang seperti apa yang cocok untuk mendampingi hidup saya?bagai mana pula karier dan keuangan saya?terimakasih atas jawaban nya.

  25. Lucky E. Santoso Says:

    Zus Riana dan Zus Fenni, untuk ramalan kompatibilitas silakan coba:
    http://www.lesantoso.com/tools/ramal-jodoh/
    Untuk ramalan peruntungan di tahun ini bisa dicek antara lain situs ini.

  26. Ario baskoro Says:

    saya lahir 24 April 1981, kekasih saya Widiyanti Rahayu lahir 19 Januari 1983. Bagaimanakah perjodohan kami???

  27. Ario baskoro Says:

    Saya lahir 24 April 1981 bagaimanakah peruntungan saya di tahun ini??? Terima kasih

  28. mercy Says:

    mau tanya saya lahir di tahun kerbau air. tahun ini kalau saya buka usaha bagus tidak?

  29. jannatul makwa Says:

    nama saya jannatul makwa umur saya 20 tahun. saya lahir 18 april 1986 saya punya cowok namanya rizal novarianto. dia lahir 19 november 1986. yang saya ingin tanyakan apakah saya berjodoh dan bisa sampai nikah dengan dia. soalnya dia itu orangnya genit dan gampang di goda cewek. dia juga susah untuk menjadi orang yang setia.

  30. Lucky E. Santoso Says:

    Bung Ario, Zus Mercy, Zus Jannatul, dan rekan-rekan lain, untuk ramalan jodoh silakan coba:
    http://www.lesantoso.com/tools/ramal-jodoh/
    Untuk ramalan peruntungan di tahun ini bisa dicek antara lain di situs ini.

  31. uchye Says:

    4 tahun terakhir ini sy dekat dengan seorang pria. usia kita beda 5 tahun. sy cewek aries kelahiran 11 april 1984 sementara pacar saya cowok sagitarius kelhiran 05 desember 1979. apakah hubungan kita langgeng sampai ke perkawinan? apakah hubungan sy dengan dia untuk selama-lamanya sampai kakek nenek?trus gimana dengan rejeki? trima kasih sebelumnya

  32. vita Says:

    saya lahir 2 april 1988 dan pacar saya 17 juli 1987.bagaimana dengan perjodohan kami?thx…

  33. vita Says:

    minta tlg ramalin donk,aq 25 ajn 1986 n calonku 25 nov 1975.q tunggu yaaa

  34. mellyana taha Says:

    saya lahir 27 decem 1986 dan pasangan saya 13 september 1978, apakah tahun ini kami bisa married ? apa saya serasi saya dia ? tolong di jawab yach ?

  35. Ary Kusumawati Says:

    Mohon untuk diramal tanggal yang cocok untuk pernikahan
    Ary Kusumawati lahir tanggal 12 Februari 1981
    Imam Muhtadin lahir tanggal 23 Juni 1980

  36. Lucky E. Santoso Says:

    Untuk ramalan jodoh silakan coba:
    http://www.lesantoso.com/tools/ramal-jodoh/

    Jika ada waktu, saya ingin juga membuat alat ramal untuk tanggal pernikahan dan occassions yang lain.

  37. Surya Says:

    Maaf Pak, Saya Anak RPL sebuah Sekolah Menengah Kejuruan Negeri,,, Untuk Belajar saya ingin Membuat Program Shio dengan Visual C++, Tapi untuk mencari source Kode Programnya Susah? Jadi Mohon Bantuannya untuk Mengirimkan Source Kode Shio yang diprogram Visual C++ ke Email Saya. Sebelumny Terima Kasih Banyak

  38. Lucky E. Santoso Says:

    Hi Surya, banyak kemiripan antara Java dengan C++ (karena Java dibuat berdasarkan C++), jadi saya percaya bahwa source code Java yang ada pada artikel ini bisa membantu you dalam membuat program itu.

  39. Lucky E. Santoso Says:

    Cukup banyak pengunjung memberikan komentar untuk artikel “Program Ramal Jodoh” ini. Terima kasih, tapi sayang sekali kebanyakan komentar itu tidak relevan. Cape deh. Karena itu terpaksa fasilitas komentar untuk artikel ini saya tutup.