Posts

ALGORITME PEMROGRAMAN

Image
Jika kita mempunyai deretan angka yang akan diproses, dan jumlahnya lumayan banyak, maka kita akan berpikir bagaimana caranya yang paling cepat dan berapa banyak ruang memori yang dibutuhkan. Tolok ukur kinerja kecepatan dan ruang ini disebut orang dengan kompleksitas waktu dan kompleksitas ruang, dikaitkan dengan banyaknya data yang akan diproses. Kompleksitas waktu T(n) atau ruang S(n), untuk jumlah data n yang sangat banyak pada kasus terjelek dinotasikan dengan O(1), O(n),  O(n log n), O(n 2 ), O(2 n ) untuk kompleksitas konstan, linear, linear logaritmik, kuadratik, eksponensial. Bagaimana caranya proses dilakukan disebut algoritma. Brute Force Algorithm Algoritme ini 'menebak' jawaban lalu menguji betul tidaknya sesuai definisi. Algoritme jenis ini biasanya ditempuh bila kita tidak dapat membuat langkah prosedur yang cerdik untuk memecahkan suatu persoalan selain mengikuti definisinya. Contoh, mencari akar pangkat tiga dari suatu angka X dengan cara mengumpulkan semua ang...

CLOSURE, DECORATOR, GENERATOR

Introduction, playing with anagram Hitung keberadaan semua huruf dalam kata dan simpulkan apakah dua kata yang diberikan berupa anagram atau tidak. Contoh " setec astronomy " adalah anagram dari " too many secrets ". # anagram def is_anagram ( word1 , word2 ) : count1 , count2 = {} , {} space_key = ' ' for word , count in (( word1 , count1 ) , ( word2 , count2 )) : for char in word : count [ char ] = count.get ( char , 0 ) + 1 if space_key in count : count.pop ( space_key ) # ignore spaces if count1 == count2 : return True return False print ( is_anagram ( 'setec astronomy' , 'too many secrets' )) # True Skrip di atas menghitung setiap karakter / huruf dalam kedua kata yang diinputkan ke dalam suatu key/value map yang disebut dictionaries. Dictionaries ini kemudian dibandingkan dan jika isinya sama, maka disimpulkan bahwa kedua kata itu adalah anagram.  Kita akan mengembang...