Thursday, December 3, 2009

Jumlah Kombinasi Kunci Gembok


Sore-sore aku datang ke kantor, berniat untuk menjelajah dunia maya daripada tidak ada kerjaan di kos.
Sampai di kantor, seperti biasanya aku memasukkan motor ke garasi. Ketika sedang memasukkan kombinasi pin pada gembok, tiba2 muncul pikiran isengku.

Andai saja seorang maling pengen membobol gembok tersebut, paling banyak berapa kali dia harus mencoba dengan berbagai kombinasi pin? Gembok ini memiliki nomor pin 4 angka, sehingga kombinasi (atau lebih tepatnya permutasi) yang mungkin adalah antara 0000-9999 (10.000 kombinasi).

Namun jika tidak boleh ada 2 atau lebih angka yang sama, berapakah jumlah kombinasinya?
Wah aku sudah lupa dengan rumus kombinasi di pelajaran matematika dulu. Maka aku buat aja kode matlab untuk mencari jumlah kombinasinya.


%--- Beginning of Code ---%

n = 0;

for a1 = 0:9
for a2 = 0:9
for a3 = 0:9
for a4 = 0:9
if ((a1 ~= a2)&(a1~=a3)&(a1~=a4)&(a2~=a3)&(a2~=a4)&(a3~=a4))
n = n+1 ;
a(n) = str2num([num2str(a1),num2str(a2),num2str(a3),num2str(a4)]);
end
end
end
end
end

disp(['n = ',num2str(n)]);

%--- End of Code ---%


Nah, ternyata jumlah kombinasi yang mungkin sebanyak 5040 kali.
Ada tipe gembok kombinasi yang lain, yaitu Push-Button Combination Lock. Gembok ini memiliki 10 buah tombol berangka yang bisa dipencet satu satu. Untuk gembok jenis ini berapakah kombinasi yang mungkin?

Ya mudah saja, karena tiap tombol hanya memiliki 2 kemungkinan, maka jumlah semua kemungkinan adalah 2^10 =1024 kombinasi.

Namun jika peraturannya harus dan hanya 5 tombol yang dipencet? Maka kode matlabnya seperti ini


%--- Beginning of Code ---%

n = 0;

for a1 = 0:1
for a2 = 0:1
for a3 = 0:1
for a4 = 0:1
for a5 = 0:1
for a6 = 0:1
for a7 = 0:1
for a8 = 0:1
for a9 = 0:1
for a10 = 0:1
if ((a1+a2+a3+a4+a5+a6+a7+a8+a9+a10)==5)
n = n+1 ;
a(n,:) = [num2str(a1),num2str(a2),num2str(a3),...
num2str(a4),num2str(a5),num2str(a6),num2str(a7),...
num2str(a8),num2str(a9),num2str(a10)];
end
end
end
end
end
end
end
end
end
end
end

disp(['n = ',num2str(n)]);

%--- End of Code ---%


Dan jumlah kombinasi yang mungkin sebanyak 252.

:)

No comments:

Post a Comment