Berikut ini adalah contoh sederhana dari script Permutasi. Dalam permutasi penyusunan objek dilakukan secara acak hingga peluang yang ada terpenuhi, yang harus di perhatikan dalam permutasi ini adalah bahwa urutan di perhitungkan, dengan demikan bahwa urutan {A,B,C} tidak sama dengan urutan {B,A,C} untuk pencarian peluang dalam permutasi dapat dirumuskan sebagai berikut :
n = n! /(n-r)
Adapun mengenai manfaatnya, Manfaat permutasi dalam ilmu komputer khususnya memang tak lepas dari banyaknya perhitungan matematika dalam sistem komputer, secara umum permutasi adalah suatu cara pemetaan dalam matematika yang mencari banyaknya peluang dan kemunculan dari suatu list atau urutan data.
Peranan permutasi dalam bidang teknologi di jaman sekarang ini sangat bisa di rasakan dan peranan kedua metode matematika ini pun sangat dibutuhkan dalam pengembangan teknologi khususnya ilmu komputer di masa mendatang.
Dalam ilmu komputer pemanfaatan permutasi ini di antaranya :
1. Membantu komputer melakukan perhitungan logika yang sistematis dengan cepat dan akurat
2. Penerapan pada ilmu enskripsi atau keamanan kode (kata sandi) dimana dalam beberapa algoritma enskripsi seperti Rijndael dan Serpent.
3. Penerjemahan dalam bahasa komputer, dimana dengan mengimplementasikan permutasi pada complier bahasa pemrograman bisa lebih efisien.
4. Dalam permainan acak kata atau scrabble adalah salah satu implementasi permutasi dalam algoritma permainan.
5. Teknik sistem dan hukum peluang dalam aplikasi
6. Sistem critical chance dan evade chance dalam permainan game khususnya game RPG
7. Penerapan permainan dadu yang menggunakan sistem peluang mata dadu.
8. Penerapan dalam algoritma pembuatan aplikasi ramalan atau zodiak
9. Penerapan dalam aplikasi pengurutan data yang lebih akurat dan tepat.
10. Dan masih banyak lagi..
Berikut cara memasukannya sebagai widget ke blog sodara :
- Masuk ke akun blog sodara, kemudian kelik layout atau dalam bahasa kita disebut Tata Letak.
- Selanjutnya Klik add Gadget, kemudian Klik HTML/ Java Script.
- Selanjutnya pada kolom isian HTML/ Java Script, Sodara Copy dan pastekan kode script berikut ini :
<div class="widget-content">
<div align='center'><font size='2' color='#ffff00'face='verdana'><b>PERMUTASI ANGKA</b>
<script src="http://ajariselalu.blogspot.com/permutasi.php_files/perm.js" type="text/javascript"></script>
<script type="text/javascript">
var d=0;
a = new Array();
// ========================================================
function ClearReset() {
window.document.interfaceform.maxwidth.value = "";
window.document.interfaceform.inputstring.value = "";
window.document.interfaceform.permlist.value = "";
window.document.interfaceform.feedback.value = "";
}
// ========================================================
function GeneratePermutations() {
var inputstring=window.document.interfaceform.inputstring.value;
inputstring=removeSpaces(inputstring);
if (inputstring=="") return;
var maxoutput=window.document.interfaceform.maxoutput.value;
maxoutput=removeSpaces(maxoutput);
var display_list=window.document.interfaceform.chkbx_display.checked;
var allow_adjacent_equals=window.document.interfaceform.chkbx_allow.checked;
var wrap_output=window.document.interfaceform.chkbx_wrap.checked;
var circular_only=window.document.interfaceform.chkbx_circular.checked;
var derange_only=window.document.interfaceform.chkbx_derange.checked;
var shuffle=window.document.interfaceform.chkbx_shuffle.checked;
var maxwidth=window.document.interfaceform.maxwidth.value;
maxwidth=removeSpaces(maxwidth);
var comma_separated=window.document.interfaceform.chkbx_comma.checked;
// Show status.
// This does not work, since Javascript has no way to flush the output during function execution.
// If you find a SIMPLE way, please let me know? Thanks - DVdm
//
window.document.interfaceform.permlist.value = "";
if (display_list) {
window.document.interfaceform.feedback.value = "Generating..."
} else {
window.document.interfaceform.feedback.value = "Counting..."
}
// Get time
//
var currentDate = new Date();
var seconds = currentDate.valueOf()
// Automatic comma separation check (maybe later)
//
if ( inputstring.indexOf(',') >-1 ) {
comma_separated=true;
window.document.interfaceform.chkbx_comma.checked=true;
} else {
comma_separated=false;
window.document.interfaceform.chkbx_comma.checked=false;
}
var delimiter = "";
if (wrap_output) {
if (comma_separated)
delimiter = " ";
else
delimiter = "*";
} else {
delimiter = "\n";
}
var delimwidth = delimiter.length;
var chars = new Array();
var charray = new Array();
var frequency = new Array();
var inputchar, ii, jj, cc, ccc, numchars, nn=0;
if (comma_separated) {
chars = inputstring.split(",");
numchars = chars.length;
} else {
numchars = inputstring.length;
for (ii=0; ii<numchars; ii++) chars[ii] = inputstring.charAt(ii);
}
for (ii=0; ii<numchars; ii++) {
inputchar = chars[ii];
cc = -1;
for (ccc=0; ccc<charray.length; ccc++) { if (inputchar == charray[ccc]) cc = ccc; }
if (cc<0) {
charray[charray.length] = inputchar;
frequency[frequency.length] = 1;
} else {
frequency[cc]++;
}
}
d = 0;
for (ii=0; ii<frequency.length; ii++) {
cc = frequency[ii];
for (jj=0; jj<cc; jj++) {
a[d] = nn;
d++;
}
nn++;
}
var perms = 0;
var output_text = delimiter;
var new_perm = "";
var circular = false;
var test_perm = "";
var okay = true;
var firstcomma = -1;
var busy = true
var ellipsis = "";
var atleast = "";
var insertat = 0;
var dmax=d;
if (maxwidth > 0) {
if (maxwidth <= d) {
dmax = maxwidth;
} else {
window.document.interfaceform.feedback.value = "Max width " + (maxwidth) + " exceeds " + (d) + ".\n";
return;
}
}
do {
if ( (allow_adjacent_equals) || (! Adjacent_equals()) ) {
okay = true;
new_perm = "";
if (comma_separated) {
for (ii=0; ii<dmax; ii++) {
new_perm = new_perm + charray[a[ii]];
if (ii<dmax-1) new_perm = new_perm+",";
}
if (maxwidth > 0) {
if ( output_text.indexOf(new_perm+delimiter) >-1 ) okay = false; // yes, this is dirty
}
if (circular_only) {
test_perm = new_perm;
test_perm_len = test_perm.length;
for (ii=0; ii<dmax-1; ii++) {
firstcomma = test_perm.indexOf(",");
test_perm = test_perm.substring(firstcomma+1,test_perm_len) + "," + test_perm.substring(0,firstcomma);
if ( output_text.indexOf(test_perm) >-1 ) {
okay = false;
break;
}
}
}
if (derange_only) {
for (ii=0; ii<dmax; ii++) {
if ( charray[a[ii]] == chars[ii]) {
okay = false;
break;
}
}
}
} else {
for (ii=0; ii<dmax; ii++) {
new_perm = new_perm + charray[a[ii]];
}
if (maxwidth > 0) {
if ( output_text.indexOf(new_perm+delimiter) >-1 ) okay = false; // yes yes, dirty
}
if (circular_only) {
test_perm = new_perm;
for (ii=0; ii<dmax-1; ii++) {
test_perm = test_perm.substring(1,dmax) + test_perm.substring(0,1);
if ( output_text.indexOf(test_perm) >-1 ) okay = false;
}
}
if (derange_only) {
for (ii=0; ii<dmax; ii++) {
if ( charray[a[ii]] == chars[ii]) {
okay = false;
break;
}
}
}
}
if (okay) {
perms++;
if (shuffle) {
insertat = (new_perm.length+delimwidth) * Math.round( ((output_text.length-1)*Math.random())/(new_perm.length+delimwidth) );
insertat = (output_text).indexOf(delimiter,insertat)+delimwidth;
if (insertat < delimwidth) insertat = delimwidth;
output_text = output_text.substring(0,insertat) + new_perm + delimiter + output_text.substring(insertat,output_text.length);
} else {
output_text = output_text + new_perm + delimiter; // even if display_list = false !!!
}
if ( display_list && !(maxoutput == "") && (perms >= maxoutput) ) {
busy = false;
ellipsis = "..."
atleast = "at least "
}
}
}
} while(nextperm() && busy);
currentDate = new Date();
seconds = Math.round( ( currentDate.valueOf() - seconds ) / 100 ) / 10; // round to 1/10 of a second
window.document.interfaceform.feedback.value = "Jumlah: " + atleast + perms + " - Waktu: " + seconds + " detik"
if (display_list) {
window.document.interfaceform.permlist.value = output_text.substring(delimiter.length) + ellipsis;
} else {
window.document.interfaceform.permlist.value = "";
}
}
// ========================================================
function removeSpaces(string) {
var tstring = "";
var i;
string = '' + string;
splitstring = string.split(" ");
for(i = 0; i < splitstring.length; i++)
tstring += splitstring[i];
return tstring;
}
// ========================================================
function Adjacent_equals() {
var ii;
for (ii=0; ii<d-1; ii++) {
if (a[ii] == a[ii+1]) return(true);
}
return(false);
}
// ========================================================
function nextperm() {
var i, j, k, swap, s, si;
for (k=d-2; k>=0; k--) {
if (a[k] < a[k+1]) {
s = a[k+1];
si = k+1;
for (i=k+2; i<d; i++) {
if ((a[i]>a[k])&&(a[i]<s)) {
s = a[i];
si = i;
}
}
swap = a[si];
a[si] = a[k];
a[k] = swap;
for (i=k+1; i<d-1; i++) {
for (j=i+1; j<d; j++) {
if (a[i]>a[j]) {
swap = a[i];
a[i] = a[j];
a[j] = swap;
}
}
}
return(true);
}
}
return(false);
}
</script>
<span style="color: blue;">
</span><form name="interfaceform">
<span style="color: yellow;"><input checked name="chkbx_display" value="ON" type="checkbox" />
Tampilkan hasil. <input name="maxoutput" size="10" type="hidden" /> <input checked name="chkbx_allow" value="ON" type="hidden" /> <input name="chkbx_circular" value="ON" type="hidden" /> <input name="chkbx_derange" value="ON" type="hidden" /> <input checked name="chkbx_wrap" value="ON" type="hidden" /> <input name="chkbx_shuffle" value="ON" type="hidden" /><br />
Angka Permutasi:
<input name="inputstring" size="24" value="0123456789" />
<input onclick="javascript:GeneratePermutations()" value="Generate" type="button" /> <input onclick="javascript:ClearReset()" value="Bersihkan" type="button" /><br />
Set 4,3,2 :
<input name="maxwidth" size="20" value="2" /><br />Bila ingin set 4 angka masukin angka 4, set 3 angka 3, set 2 angka 2.
<input disabled name="chkbx_comma" value="ON" type="hidden" /><br />
<input name="feedback" size="27" /><br />
<textarea cols="10" name="permlist" rows="10" style="font-size: 10pt; width: 70%;" wrap="virtual"></textarea>
</span></form>
<span style="color: red;"><b>Powered by <a href="http://www.ajariselalu.blogspot.com/">http://www.ajariselalu.blogspot.com</a></b>
</span>
</font></div></div>
- Terakhir sodara tinggal klik save dan LIhat hasilnya di halaman Blog sodara. Tes kalau berfungsi.
Semoga bermanfaat dan Wassalam.
Tidak ada komentar:
Posting Komentar