Skip to main content

Akhirnya Ketemu Juga Segitiga Paskal ini

segitiga paskal - pascal

Alhamdulillah, akhirnya ketemu juga coding untuk membuat segitiga paskal dengan tampilan seperti di gambar atas ini. Rasa penasaran dalam hati terbayar sudah. Googling dari kemarin-kemarin mencari coding yang siap pakai, tapi kebanyakan semuanya menampilkan segitiga siku-siku rata kiri, tidak begitu menggambarkan segitiga sama kaki. Akhirnya saya berkutat selama dua hari ini dengan kemampuan coding saya yang terbatas. Tidak sia-sia ternyata saya sampai-sampai menjelang tidur masih memikirkan algoritma yang tepat dengan kemampuan otak saya.

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

Comments

Popular posts from this blog

Keanggotaan, Keuntungan, dan Konfigurasi Umum VLAN

Keanggotaan dalam suatu  VLAN dapat dikelompokkan berdasarkan port yang digunakan, MAC address, atau tipe protokol yang digunakan. Berdasarkan Port Keanggotaan pada suatu VLAN dapat di dasarkan pada port yang digunakan oleh VLAN tersebut. Sebagai contoh, pada bridge/switch dengan 4 port, port 1, 2,  dan 4 merupakan VLAN 1 sedang port 3 dimiliki oleh VLAN 2, lihat Tabel 2.1 berikut ini. Tabel 2.1 VLAN berdasarkan port Port 1 2 3 4 VLAN ID 2 2 1 2 Kelemahannya adalah pengguna tidak bisa untuk berpindah-pindah. Apabila harus berpindah maka administrator  jaringan harus mengkonfigurasikan ulang. Berdasarkan MAC Address Keanggotaan suatu VLAN didasarkan pada MAC address dari setiap  komputer yang dimiliki oleh pengguna. Switch akan mencatat semua MAC address yang dimiliki oleh setiap Virtual LAN. Kelebihannya apabila pengguna berpindah-pindah maka dia akan tetap terkonfigurasi sebagai anggota dari VLAN tersebut. Kekurangannya adalah setiap mesin harus dikonfigurasi secara m

2 HARI PERJALANAN MENGELILINGI DANAU TOBA, SUMATERA UTARA - PART 2

Oke, mari kita lanjut lagi cerita tentang 2 hari perjalanan mengeliingi Danau Toba, Sumatera Utara . Sudah capek main air di pinggir danau, makan siang pun datang menghampiri. Walaupun Cuma nasi bungkus pake lauk ikan mas gulai, rasanya begitu enak dinikmati. Mungkin karena sudah kelaparan dan kecapaean kali yah. Sembari menunggu yang lain selesai dengan makan siangnya masing-masing, yang sudah selesai makan bersiap-siap untuk melanjutkan perjalanan menuju tempat penginapan. Tidak terlalu jauh dari lokasi permainan air, sekitar 45 menit perjalanan sudah sampai di penginapan. Penginapannya lumayan besar dan mempunyai halaman pinggir danau Toba sendiri. Sebagian dari teman-teman masih menyambung permainan airnya yang sempat terhenti siang itu. Sore hari pun menjelma dengan munculnya warna jingga di pinggir danau. Teman-teman memanfaatkan waktu tersebut untuk merebahkan badan sebentar di kamar masing-masing. Yang anak mudanya sih masih aja punya tenaga untuk bermain bola. Namanya juga a

Jenis Router, Keutungan, dan Kerugian Router

Ada tiga  jenis router yang biasa digunakan dalam  jaringan komputer , yaitu: Router PC Router PC adalah komputer dengan sistem operasi yang memiliki fasilitas untuk membagi  dan men-sharing IP Address. Perangkat jaringan (PC) yang terhubung ke komputer tersebut akan dapat menikmati IP Address atau koneksi internet yang disebarkan oleh sistem operasi tersebut. Contoh sistem operasi yang dapat digunakan adalah semua sistem operasi berbasis client-server, seperti Windows NT, Windows NT 4.0, Windows 2000 server, Windows 2003 Server, MikroTik (Berbasis Linux), dan lain-lain. Router Aplikasi Router aplikasi adalah aplikasi yang dapat di-install pada sistem operasi sehingga sistem operasi tersebut akan memiliki kemampuan seperti router. Contoh aplikasi ini adalah Winroute, WinGate, SpyGate, dan WinProxy. Router Hardware Router hardware adalah hardware yang memiliki kemampuan seperti router sehingga dari hardware tersebut dapat memancarkan atau membagi IP Address dan men-sharing IP