Home > Celotehan, Recommended > Projecteuler[dot]net, Website Pengasah Otak

Projecteuler[dot]net, Website Pengasah Otak

Terkadang pada saat kita bosen internetan, saat Facebook gak muncul2 notifikasi, timeline twitter gak ada yang menarik, lagi males baca gambar troll, nah website yang satu ini bisa jadi pilihan. Walaupun terkadang tidak membuat kita semakin rileks, cuman lumayan untuk mengasah otak. Pada projecteuler[dot]net terdapat banyak problem yang dapat mengasah kreativitas dalam mengerjakan soal matematis. Pada website tersebut kita diberikan problem dari yang sederhana sampai yang rumit, yang kesemuanya menyangkut hitungan. Kita bebas menggunakan apa saja, kalkulator, program dengan bahasa apapun,  C, Java, PHP, Python, Perl, Cobol, J, Matlab dan bahasa lainnya, sampai hanya dengan pensil dan kertas atau juga bantuan spreadsheet dari excel. Mungkin sekalinya kita melihat problem yang diberikan disana mungkin langsung berkomentar, wow itung2annya ampun dah! Gak tanggung2, ada beberapa problem yang hitungannya bisa puluhan digit, dan juga nunggu jawaban dari program yang kita buat lama banget. Tapi tenang saja, kalo kita kreatif, tentunya masalah tersebut dapat kita atasi dengan mudah.

Ketika kita membuka website tersebut kita diberi gambaran tentang website ini yang sebenarnya, apabila kita membuka halaman problem kita mendapati banyak sekali soal. Bisa dibilang kesemuanya matematis, dan jika kita asal2an dalam membuat programnya tanpa melakukan optimasi, output keluaran program bisa lama sekali. Saya sendiri pernah pada problem tertentu menunggu lebih dari 2 jam untuk mendapatkan jawaban, tapi itu karena saya tidak melakukan optimasi terlebih dahulu. Kalo pinter2 nyari, ada problem2 yang tidak perlu kita pake program untuk mendapatkan jawabannya misalkan problem 11 dan problem 18, dengan melihat secara teliti dan dihitung menggunakan kalkulator pun sudah bisa didapatkan jawabannya. Banyak problem jika kita tahu polanya akan sangat mudah diselesaikan, saya beri contoh problem untuk id di atas 50, yang terkesan lebih sulit dari 50 problem pertama. Contoh pertama problem 69, yang mencari nilai  n/φ(n) terbesar, kalo kita liat contoh yang diberikan untuk  n <= 10, jawabannya adalah 6, 6 sendiri adalah bilangan terbesar yang lebih kecil dari 10 yang tersusun oleh hasil perkalian bilangan prima. Kalo kita berpikir logis tentunya kita tahu bahwa kalo bilangan itu tersusun dari perkalian bilangan prima tentunya faktor primanya bakal dipake di banyak bilangan. Dari sini kita tarik kesimpulan untuk mendapatkan jawabannya kita mencari hasil perkalian bilangan prima yang hasilnya kurang dari 1 juta. Hasilnya ya berarti 2x3x5x7x11x13x17, dan itu bilangan terbesar yang merupakan hasil perkalian bilangan prima dari kecil ke besar yang hasilnya kurang dari sejuta.

Saya sebutkan lagi soal yang lebih mudah lagi dari problem 69, yaitu problem 71,  yang mencari pecahan yang lebih kecil dari 3/7 dari pecahan yang maksimal denumeratornya adalah 1000000. Wow, kalo pecahannya dibikin list-nya gak kebayang banyaknya, tapi kita tahu bahwa semakin besar denumeratornya, berbeda satu saja numeratornya, selisihnya makin sedikit. Udah deh, kalo kita berpikir logis kita cari pecahan yang nilainya 3/7 dalam bentuk denumerator terbesar, yaitu 428571/999999, dengan begitu dapet nilai numerator pecahan terbesar yang kurang dari 3/7. Ada juga soal yang terlihat serem misal problem 97 yang disuruh mencari hasil dari 28433 x 27830457+1, wow, apalagi di soal kita dikasih tau kalo jumlah digitnya ada  2.357.207 buah. Bisa gila nunggunya, mesti pake bigint kalo segitu banyak. Akan tetapi, sekali lagi, kalo kita baca baik2 soal, cuman diminta 10 digit terakhir doank, dan kalo kita berpikir logis, disini kita menghitung dari pangkat 2, dan untuk mendapatkan perkalian 2 bisa kita lakukan dengan menggunakan shift. Soal hanya meminta 10 digit terakhir, dengan begitu kita tinggal melakukan operator mod pada hasil pangkat 2 tadi dengan 10000000000, sehingga didapatkan 10 digit terakhir saja, dan buang digit di depannya karena tidak terpakai. Dengan begitu kita bisa menghitung dengan tanpa bigint, dan menghemat banyak waktu.

Buat penutup, bukan berarti saya sudah banyak problem yang solved, baru beberapa saja, karena saya mencari problem2 yang kira2 bisa saya kerjakan, misal saja problem2 yang saya sebutkan di atas. Menurut saya, website ini lumayan bermanfaat karena mengasah daya berpikir kita, dan tentunya melatih membuat algoritma yang efesien buat programmer walaupun disini lebih ke hitung2an. Silahkan mencoba, semoga mendapatkan kesenangan mengerjakan problem disana😀

Categories: Celotehan, Recommended
  1. Ardianto
    November 10, 2011 at 11:03 pm

    Udah deh, kalo kita berpikir logis kita cari pecahan yang nilainya 3/7 dalam bentuk denumerator terbesar, yaitu 428571/999999, dengan begitu dapet nilai numerator pecahan terbesar yang kurang dari 3/7.

    Aha,
    Ini “kebetulan” Jo, coba kalau soalnya:
    d\leq1000

    \frac{3}{7} = \frac{426}{994}
    Jawabannya bakal 425 dong?
    Sayangnya \frac{425}{994}\leq\frac{428}{999}\leq\frac{3}{7}

    Hayo?😛

    • November 11, 2011 at 5:16 am

      mungkin mesti dibikin denumerator yg paling gede, jadi cari 3/7 pas denumeratornya 999, trus dapet numerator 428.143, berhubung ini koma ya integer trbesar yg lebih kecilnya jadi 428, jadi deh 428/999😛
      #ngeles

  2. December 7, 2012 at 4:28 pm

    Problem 102 gampang tuh, 84 juga.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: