Tentang Kesempurnaan

May 23rd, 2008

Terlintas 2 semboyan pepatah di pikiran saya

Nobodies Perfect dan Practice makes perfect

Apa yang anda pikirkan tentang 2 kalimat diatas?

Klo menurut saya:

p= Practice
q= Perfect

if p ‘then’ q
p
______________
;q
hasilnya q (perfect),,

jika memang sudah dinyatakan :
“Nobody’s perfect” atau berdasarkan kalimat logika diatas dinyatakan dengan

~q

maka kedua kalimat diatas tidak sah dan tidak benar.

~q dan q merupakan sebuah kontradiksi.
jelas-jelas kalimat diatas tidak sah dalam aturan pengambilan kesimpulan logika preposisi…

semestinya, pepatah menggunakan sebuah definisi.

Memang tidak ada manusia yang sempurna, tapi manusia bisa mendekati sempurna

Agar pernyataan tersebut valid, maka:
1. Pepatah harus mengganti kalimat yang sudah bertahan lama, dari kata ‘Sempurna’ menjadi ‘Mendekati Sempurna’
2. Pepatah harus mendefinisikan ‘Kesempurnaan’ yang dimaksud dengan pemetaan sebuah fungsi.

Kemudian fungsi definisikan sebagai sebuah limit yang tidak akan pernah mencapai sebuah nilai p, dimana p adalah variable yang menentukan tingkat ‘practice’ manusia yang menghasilkan manusia yang ’sempurna’

Maka fungsi sempurna dipetakan dari seberapa tinggi manusia practice

didefinisikan sebagai:

lim s(x)
x->p

dimana s(x) adalah sebuah fungsi yang menyatakan tingkat kesempurnaan manusia (ingat asumsi bahwa p adalah sebuah nilai yang menghasilkan nilai s(p), dimana s(p) adalah tingkat kesempurnaan manusia)

Pepatah seharusnya menyertakan ini dalam pembuatan kalimat2 diatas sehingga tidak menimbulkan kontradiksi dalam pemikiran manusia.

NB: Sebelumnya Kata ‘perfect’ pada “Practice makes Perfect” diasumsikan sebagai kesempurnaan yang dimiliki manusia dalam suatu bidang,
Dalam hal ini, memang tidak ada kan manusia yang benar-benar sempurna, walau dalam 1 bidang pun..

~just a simple thought , ^_^

Labirin,,,,???!!!

November 2nd, 2007

lrk-maze.gif

 

Example source code for labirin in C programming language..

#include<stdio.h>
#include<windows.h>
int pengarah(char labirin[12][12],int sb[2],int arah);
void move(char labirin[12][12],int sb[2]);
void cetak(char labirin[12][12]);

int main()
{
system(”PAUSE”);
char labirin [12][12]=
{{”##.#########”},
{”#…#……#”},
{”..#.#.####.#”},
{”###.#….#.#”},
{”#….###.#.#”},
{”##…#.#.#.#”},
{”#….#…#.#”},
{”##.#####.#.#”},
{”#……..#.#”},
{”######.###.#”},
{”#……#…#”},
{”##########.#”}};
int sb[2]={0,2};//sb[0]=x,sb[1]=y
int j,i;

if(labirin[1][2]==’#’ && labirin[0][3]==’#')
//jika pintu masuk dihalangi dinding
{
labirin[0][2]=’O';
Sleep(500);//selang waktu 500 ms = 1/2 s
cetak(labirin);
Sleep(500);//selang waktu 500 ms = 1/2 s
printf(”\nLabirin buntu”);
return;
}
move(labirin,sb);//jalankan fungsi move

}

void cetak(char labirin[12][12])//fungsi untuk mencetak labirin
{
int i,j;
system(”cmd /c cls”);
for(i=0;i<12;i++)
{
for(j=0;j<12;j++)
{
printf(”%c “,labirin[j][i]);
}
printf(”\n”);
}
}

int pengarah(char labirin[12][12],int sb[2] ,int arah)
//fungsi untuk menentukan gerak yang akan dilakukan robot
//fungsi ini menggunakan bantuan sb bantuan untuk memudahkan pengecekan jalan
//fungsi ini menggunakan sistem rotasi dalam bidang cartesius
//posisi titik sb relatif,tergantung kemana robot sedang mengarah
{
int i,temp;//t sebagai temporary file
int a[]={0,1};//titik sb di sebelah kanan robot
int b[]={1,0};//titik sb di depan robot
int c[]={0,-1};//titik sb di sebelah kiri robot

if(arah==1)
{
//jika arah=1 atau robot belok ke kiri, maka lakukan rotasi -90 derajat
//-90 derajat didapat dari kondisi sb pada labirin
//tujuan rotasi adalah untuk menyesuaikan sb dengan arah robot
temp=a[0]; a[0]=a[1]; a[1]=-temp;
temp=b[0]; b[0]=b[1]; b[1]=-temp;
temp=c[0]; c[0]=c[1]; c[1]=-temp;
//rumus sesuai dengan rotasi dalam bidang kartesius x’=y dan y’=-x
}
else if(arah==2)
{
//jika arah=2 atau robot berbalik arah, maka lakukan rotasi -180 derajat
//-180 derajat didapat dari kondisi sb pada labirin
//tujuan rotasi adalah untuk menyesuaikan sb dengan arah robot
a[0]=-a[0]; a[1]=-a[1];
b[0]=-b[0]; b[1]=-b[1];
c[0]=-c[0]; c[1]=-c[1];
//rumus sesuai dengan rotasi dalam bidang kartesius x’=-x dan y’=-y
}
else if(arah==3)
{
//jika arah=3 atau robot belok ke kanan, maka lakukan rotasi -270 derajat
//-270 derajat didapat dari kondisi sb pada labirin
//tujuan rotasi adalah untuk menyesuaikan sb dengan arah robot
temp=a[0]; a[0]=-a[1]; a[1]=temp;
temp=b[0]; b[0]=-b[1]; b[1]=temp;
temp=c[0]; c[0]=-c[1]; c[1]=temp;
//rumus sesuai dengan rotasi dalam bidang kartesius x’=-y dan y’=x
}
if (labirin[sb[0]+a[0]][sb[1]+a[1]]==’#')
//cek apakah di sebelah kanan terdapat dinding atau tidak
{
if (labirin[sb[0]+b[0]][sb[1]+b[1]]==’.'||labirin[sb[0]+b[0]][sb[1]+b[1]]==’X')
{
//jika di kanan robot terdapat dinding dan di depan robot terdapat ‘.’ atau ‘X’ ,maka jalan terus ke depan
return 0;
//return 0 mengindikasikan gerak robot terus ke depan
}
else if(labirin[sb[0]+b[0]][sb[1]+b[1]]==’#')
{
if (labirin[sb[0]+c[0]][sb[1]+c[1]]==’.’ || labirin[sb[0]+c[0]][sb[1]+c[1]]==’X')
{
//jika di kanan robot terdapat dinding dan dikiri robot terdapat ‘.’ atau ‘X’,maka belok kiri
return 1;
//return 1 mengindikasikan gerak robot belok ke kiri
}
else
{
//jika di kanan,depan,dan kiri terdapat dinding, maka putar arah 180 derajat atau balik arah
return 2;
//return 2 mengindikasikan gerak robot berbalik arah
}
}
}
else
{
//jika di kanan robot tidak ditemukan dinding, maka belok kanan
return 3;
//return 3 mengindikasikan gerak robot ke kanan

}

}

void move(char labirin[12][12],int sb[2])
{
static int arah=0;
if (!(sb[0]==0&&sb[1]==2&&arah==0)&&sb[0]==0||sb[0]==11||sb[1]==11||sb[1]==0)
//jika sb akhir di x=0, y=0, x=11, y=11,maka lakukan perintah dibawah
//berfungsi sebagai base case
{
if(sb[0]==0 && sb[1]==2)
//jika robot kembalik ke posisi awal
{
printf(”\nLabirin Buntu”);
}

else
//jika jalan keluar selain di posisi awal
{
labirin[sb[0]][sb[1]]=’O';
cetak(labirin);
labirin[sb[0]][sb[1]]=’X';
//jalan yang telah dilalui di mark dengan ‘X’
Sleep(500);//selang waktu 500 ms = 1/2 s
cetak(labirin);
printf(”\nHore Keluar dari labirin!!”);
Sleep(5000);
}

}
else
{
labirin[sb[0]][sb[1]]=’O';
cetak(labirin);
Sleep(500);//selang waktu 500ms = 1/2 s
if(labirin[sb[0]][sb[1]]==’O’ || labirin[sb[0]][sb[1]]==’X')
labirin[sb[0]][sb[1]]=’X';
//jalan yang telah dilalui di mark dengan ‘X’
cetak(labirin);
//mencetak labirin dan keadaan robot
arah=(arah+pengarah(labirin,sb,arah))%4;
//tentukan nilai arah untuk menentukan gerak robot
//arah tidak boleh lebih dari 3 karena nilai yang dapat dilakukan:0,1,2,3
if(arah==0)sb[0]=sb[0]+1;
//jika lurus, maka gerak selanjutnya akan dilakukan pada sb x’=x+1 dan y tetap
else if(arah==1)sb[1]=sb[1]-1;
//jika belok kiri, maka gerak selanjutnya akan dilakukan pada sb y’=y-1, dan x tetap
else if(arah==2)sb[0]=sb[0]-1;
//jika berbalik arah, maka gerak selanjutnya akan dilakukan pada sb x’=x-1 dan y tetap
else if(arah==3)sb[1]=sb[1]+1;
//jika belok ke kanan, makagerak selanjutnya akan dilakukan pada sb y’=y+1 dan x tetap
move(labirin,sb);//fungsi rekursif
}
}