Bagi orang komputer, mungkin tidak ada peribahasa yang lebih tepat untuk menggambarkan fleksibilitas kemampuan programming dalam memecahkan persoalan. Kemarin malam, saat memberi les kepada satu-satunya murid les saya, ia mendemonstrasikan sebuah gaya berpikir baru yang betul-betul membuat saya terpana.

Semua orang yang pernah belajar programming mungkin pernah membuat program ini. Program untuk menampilkan segitiga siku2 yang terbuat dari karakter *. Misalnya input adalah angka 5, maka outputnya adalah


*
**
***
****
*****


Dalam tradisi belajar-mengajar programming, kita selalu diberi tahu kalau untuk mengerjakan soal di atas, dibutuhkan 2 buah For, yang pertama untuk membuat 5 baris ke bawah, yang kedua untuk menulis * ke samping.

Tapi pernahkah terpikir oleh anda bahwa soal tersebut sebenarnya bisa dipecahkan hanya dengan 1 for saja

Murid saya bisa. Beginilah cara dia mengerjakannya


a = to_integer(get_input())
b = '*'
c = ""
for i = 1 to a
  println b+c
  c=b+c
end


Source code-nya saya tulis dalam bentuk pseudocode, supaya dapat dimengerti dengan mudah

Bisa anda lihat, pendek dan efektif. Membuat saya terkagum-kagum padanya, hingga saya memutuskan untuk mengerjai dia sedikit.

Saya meminta dia untuk membalik output-nya, sehingga tampilannya jadi seperti di bawah ini


*****
****
***
**
*


Seperti dugaan saya, dia tidak bisa mengerjakannya. Bagi orang yang mengerti cara mengerjakan soal terdahulu dengan 2 for, mengubahnya menjadi seperti ini adalah kerjaan mudah. Namun tidak bagi orang yang tidak mengikuti cara pikir tersebut.

Karena itulah, saya sekalian menunjukkan padanya banyak jalan menuju Roma, tidak harus selalu mengikuti jalur berpikir 2 for yang melegenda itu.

Beginilah script yang saya buat


a = to_integer(get_input())
b = ""

for i = 1 to a
  b = b + '*'
end

repeat
  println b
  a = a-1
  b = left(b,a)
until a = 0


Tanggapannya ketika melihat code saya? Dia balik terkesan karena apa yang tadinya dia pikir begitu sulit ternyata dapat dikerjakan dengan mudah (anda yang bisa programming pasti setuju kalau apa yang saya lakukan ini jauh lebih mudah dibanding menggunakan 2 for).

Saya mendapat pelajaran yang sangat bermakna dari dia, dan saya balik memberikan pelajaran yang sama, yang ia berikan pada saya malam itu. Bagaimana dengan anda? Sudahkah anda menemukan jalan lain menuju Roma, yang pemandangan di sepanjang jalannya lebih indah untuk dinikmati? Kalau iya, berbagilah dengan yang lain

3 Comments:

  1. Ika said...
    wow.... keren
    tampaknya dia benar2 paham dengan berbagai operasi string
    sbg org komputer ga pernah nyangka jg ternyata bisa semudah itu. Tp guru lesnya hebat jg bs menyaingi pemikirannya dengan membuat yang sebaliknya :)
    Lanjutkan!!!
    Hendra said...
    Yah, emang.
    Mari kita lanjutkan!!! (kayak iklan pemilu)
    @author said...
    Salam.
    Teruskan menulis.
    Cayok2...

Post a Comment