Kenapa saya bersusah-susah untuk hal ini? Alasannya sih lumayan sepele, saya tidak bisa melakukannya saat ada tes kerja, sehingga membuat saya terus berpikir dan berpikir sampai sekarang. Bagaimana tidak penasaran, pewawancaranya meminta saya buat menampilkan segitiga paskal dengan tampilan seperti itu. Bingungnya bukan di algoritma menghasilkan angka-angkanya, tetapi bingung bagaimana cara untuk menampilkannya sesuai permintaan pewawancara. Bermodalkan spidol dan whiteboard saat itu, saya menyerah dalam waktu 5 menit saja.
Yah mungkin bukan rejeki saya diterima bekerja di tempat tersebut. Nah, karena saya orangnya penasaran kalau belum dapat jawaban, akhirnya terciptalah coding php dibawah ini untuk menampilkan segitiga paskal ini.
<?php
//generate initial array. maks nilai init 26 biar tampilannya bagus :p $init = 10; while ($init > 0){ $init_array[] = 0; $init--; if($init == 0) { $initarray = $init_array; $min_satu = array_pop($initarray); $initial_g = array_merge($init_array, $initarray); } } $lvl1 = $init_array; $lvl1[0] = 1; $ceil = count($lvl1) - 1; $index = 0; //generate all candidats for pascal triangle while($ceil >= 0){ for ($i=0; $i <= $ceil; $i++) { if($i != $ceil){ $a = $i+1; $lvl1[$a] = $lvl1[$i] + $lvl1[$a]; continue; } $segitiga[] = $lvl1; $ceil--; } } $batas = count($lvl1); $middle = ($batas*2-2)/2-2; //make template for print like triangle for($index1 = 0; $index1 < $batas; $index1++){ $kiri = $index1; $index2 = 0; $temp = $initial_g; $mid = $middle; for(;$kiri >=0;){ //echo $segitiga[$kiri--][$index2++] . "\t"; $mid+=2; $temp[$mid] = $segitiga[$kiri--][$index2++]; } $tampilan[] = $temp; $middle--; } //print the triangle echo "<pre>"; foreach($tampilan as $key => $value){ foreach($value as $keys => $values){ if($values == 0){ echo "\t"; continue; } echo $values."\t"; } } echo "<pre>"; ?>Pokoknya sekarang udah lega, tidak kepikiran lagi sama segitiga paskal ini. Saya yakin masih ada yang lebih simple dari ini, tapi untuk otak saya ini adalah yang paling bisa saya cerna. Waktunya tidur
Keren bg algoritmanya.
ReplyDeleteSaya adalah peneliti kegunaan segitiga pascal di kehidupan.
Saya suka matematika, banyak problem bisa diselesaikan dengan konsep segitiga pascal. Cuma ini baru dapat algoritma yang simple, low memory/cpu cons. (Fast), dari blog ini.
Saya lagi penasaran sama algoritma bilangan random (orang google masih merahasiakannya). Katanya sih dari noise2 saat cpu beroperasi.
Function random gakmungkin bisa sama dua kali, dari 100juta kejadian. Kira2 bisa gak bang buat algoritmanya?
Kalau bisa berguna tu untul AI. Anti caos dan tabrakan.