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 manual. S

Protokol Pendukung VoIP

Protokol -protokol yang menjadi penunjang untuk  jaringan VoIP adalah : Protokol TCP/IPTCP/IP (Transfer Control Protocol/Internet Protocol) merupakan sebuah protokol yang digunakan pada jaringan Internet. Protokol ini terdiri dari dua bagian besar, yaitu TCP dan IP. Application layer Fungsi utama lapisan ini adalah pemindahan file. Perpindahan file dari sebuah sistem ke sistem lainnya yang berbeda memerlukan suatu sistem pengendalian untuk menangatasi adanya ketidak cocokan sistem file yang berbeda beda. Protokol ini berhubungan dengan aplikasi. Salah satu contoh aplikasi yang telah dikenal misalnya HTTP (Hypertext Transfer Protocol) untuk web, FTP(File Transfer Protocol) untuk perpindahan file, dan TELNET untuk terminal maya jarak jauh. TCP (Transmission Control Protocol) Dalam mentransmisikan data pada layer Transpor ada dua protokol yang berperan yaitu TCP danUDP. TCP merupakan protokol yang connection-oriented yang artinya menjaga reliabilitas hubungan komunikadasi end-to-e

Pengalaman Pembuatan SKCK di Bogor

Baru tadi siang saya ngerasa pelayanan terbaik dari kepolisian tentang pembuatan SKCK (Surat Keterangan Catatan Kepolisian). Sampai sekarang ini saya sudah 4 kali mengurus SKCK (seingat saya sih :p), tapi yang terakhir ini yang paling super super ajib. Mungkin gara-gara saya cuma perpanjang SKCK lama kali yah, makanya bisa cepat. Yang penting saya ga lama-lama di kantor polisi tadi, takut ntar malah dimasukin ke sel gara-gara tampang saya yang lumayan sangar :)). Tadi cuma butuh waktu kurang dari 30 menit buat selesaiin semua urusan SKCK, padahal dulu bisa sampe ganti hari baru dapat SKCK ini, huff. Wokeh, mungkin sekedar informasi aja buat yang belum tau, yang udah tau yah sekedar mengingatkan kembali, ini dia syarat-syarat pengurusan SKCK Pembuatan SKCK baru Surat pengantar