Jumat, 07 Juni 2013

Widget Kombinasi Untuk Blog

Widget Kombinasi Untuk Blog

 



Berikut ini adalah contoh sederhana dari Script Kombinasi Yang dapat digunakan Sebagai Widget pada Blog. Waktu yang Lalu Kita sudah Memposting sodaranya, yaitu Widget Permutasi, Maka kali Ini giliran Kombinasi yang kita Posting dengan harapan, tentunya memberikan manfaat. Berbeda dengan permutasi, dalam kombinasi semua urutan nilai yang memiliki nilai yang sama tidak di hitung sebagai peluang, artinya terjadi batasan-batasan urutan yang di hasilkan, misal bahwa nilai {A,B,C} dan nilai {B,A,C} adalah sama, sehingga nilai {B,A,C} tidak di hitung sebagai peluang kemunculan, untuk rumus banyaknya kemungkinan atau peluang dalam kombinasi adalah :

n = n! /r! (n-r)


 
Berikut Langkah atau caranya Untuk diletakan dalam Blog :
  • 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>Kombinasi Angka</b>
<div class="widget-content">
<div align='center'><font size='1' color='#ffffff'face='verdana'><b>Gunakan Koma Untuk Memisahkan Angka</b>


<script type="text/javascript" src="http://ajariselalu.blogspot.com/kombinasi.php_files/combine.js"></script>

<script type="text/javascript">
var isArray = function(o) {
return (o instanceof Array) || (Object.prototype.toString.apply(o) === "[object Array]");
},
combineApp = {
combinations: function(args) {
var n, inputArr = [], copyArr = [], results = [],
subfunc = function(copies, prefix) {
var i, j, myCopy = [], exprLen, currentChar = "", result = "";
// if no prefix, set default to empty string
if (typeof prefix === "undefined") {
prefix = "";
}
// no copies, nothing to do... return
if (!isArray(copies) || typeof copies[0] === "undefined") {
return;
}
// remove first element from "copies" and store in "myCopy"
myCopy = copies.splice(0, 1)[0];
// store the number of characters to loop through
exprLen = myCopy.length;
for (i = 0; i < exprLen; i += 1) {
currentChar = myCopy[i];
result = prefix + currentChar;
// if resulting string length is the number of characters of original string, we have a result
if (result.length === n) {
results.push(result);
}
// if there are copies left,
// pass remaining copies (by value) and result (as new prefix) into subfunc (recursively)
if (typeof copies[0] !== "undefined") {
subfunc(copies.slice(0), result);
}
}
};
// for each character in original string
// create array (inputArr) which contains original string (converted to array of char)
if (typeof args.str === "string") {
inputArr = args.str.split("");
for (n = 0; n < inputArr.length; n += 1) {
copyArr.push(inputArr.slice(0));
}
}
if (isArray(args.arr)) {
for (n = 0; n < args.arr.length; n += 1) {
copyArr.push(args.arr[n].split(""));
}
}
// pass copyArr into sub-function for recursion
subfunc(copyArr);
return results;
},
displayMsg: function(msgText, msgID) {
var msg, nmsg;
if (typeof msgID === "string" && document && document.getElementById && document.getElementById(msgID)) {
msg = document.getElementById(msgID);
nmsg = msg.cloneNode(false);
msg.parentNode.insertBefore(nmsg, msg);
msg.parentNode.removeChild(msg);
nmsg.appendChild(document.createTextNode(msgText));
} else if (msgText.length > 0) {
alert(msgText);
}
},
calcCombinations: function(args) {
if (!args) {
//args = {};
return false;
}
args.src = (typeof args.src === "object") ? args.src : null;
args.dest = (typeof args.dest === "object") ? args.dest : null;
args.msgID = (typeof args.msgID === "string") ? args.msgID : null;
args.tokenChar = (typeof args.tokenChar === "string") ? ((args.tokenChar.length > 0) ? args.tokenChar : ",") : ",";
args.outputDelimiter = (typeof args.outputDelimiter === "string") ? args.outputDelimiter : "*";
args.maxCombinations = (typeof args.maxCombinations === "number") ? parseInt(args.maxCombinations, 10) : 600000;

if (args.src === null || args.dest === null) {
alert("calcCombinations() required arguments are missing.");
return false;
}
var str = args.src.value, arr = [], objParam = {}, i, numChars, num = 0, doIt = true;
args.dest.value = "";
if (str.indexOf(args.tokenChar) !== -1) {
arr = str.split(args.tokenChar);
num = 1;
for (i = 0; i < arr.length; i++) {
numChars = arr[i].length;
if (numChars === 0) {
arr[i] = " ";
} else {
num *= numChars;
}
}
str = "[" + arr.join("][") + "]";
objParam = {"arr": arr};
} else {
num = Math.pow(str.length, str.length);
objParam = {"str": str};
}
if (num <= args.maxCombinations && num > 5000) {
doIt = confirm("This will produce " + num + " combinations. Are you sure you want to continue?");
}
if (num > 0) {
if (num > args.maxCombinations) {
args.dest.value = "It would take too long for JavaScript to calculate and display all of those combinations of characters.";
}
combineApp.displayMsg(num + " kombinasi dari \"" + str + "\".", args.msgID);
// don't kill the user's CPU using JavaScript to calculate too many combinations
if (num <= args.maxCombinations && doIt) {
args.dest.value = combineApp.combinations(objParam).join(args.outputDelimiter);
}
}
return false;
}
};
</script>
<script type="text/javascript">
function getArgs(url) {
if (typeof url !== "string") {
url = location.search.substring(1);
}
var i, args = new Object(), query = url, pairs = query.split("&"), index;
for (i = 0; i < pairs.length; i++) {
index = pairs[i].indexOf("=");
if (index === -1) continue;
args[pairs[i].substring(0, index)] = unescape(pairs[i].substring(index + 1).split("+").join(" "));
}
return args;
}
function doStuff(str) {
var f;
if (document.forms[0] && document.forms[0].str && document.forms[0].txt) {
f = document.forms[0];
if (str.length > 0) {
f.str.value = str;
}
combineApp.calcCombinations({
src: f.str,
dest: f.txt,
msgID: "count",
tokenChar: ",",
outputDelimiter: "*",
maxCombinations: 600000
});
f.str.focus();
}
return false;
}
window.onload = function () {
var args = getArgs();
args.str = (typeof args.str !== "undefined") ? args.str.toString() : "";
doStuff(args.str);
};
</script>
<style type="text/css" media="all">
body {
font-family: Arial, Helvetica, sans-serif;
}
a:hover {
color: #FF0000;
text-decoration: none;
}
pre.js {
font-family: "Courier New", Courier, mono;
text-align: left;
font-size: 9pt;
border: outset;
background-color: #EEE;
margin: 0 auto;
padding: 4px;
width: 55em;
overflow: auto;
}
pre.js .comment {
color: #008000;
font-style: italic;
}
pre.js .keyword {
color: #00F;
font-weight: bold;
}
pre.js .var {
color: #900;
}
pre.js .str {
color: #366;
}
pre.js .func {
color: #099;
}
pre.js .op {
color: #009;
}
pre.js .literal {
color: #F00;
}
</style>

<font color="red">
</font><form action="" method="get" onsubmit="return combineApp.calcCombinations({src:this.str,dest:this.txt,msgID:'count'});" autocomplete="off">
<font color="green"> </font><div style="text-align: center;">
<font color="yellow"> <label for="str">Menampilkan kombinasi dari:</label>

<input name="str" id="str" value="123,456,789,012" size="27" title="Gunakan koma untuk memisahkan posisi karakter" type="text" />
<input value="Generate" type="submit" />
</font><div><font color="red"><em id="count">4 kombinasi dari "12".</em></font></div>
<font color="yellow"> <textarea name="txt" rows="16" cols="75" style="width: 75%; font-size: 10pt;"> </textarea>
<br />
</font></div>
</form>
<font color="blue"><b>Powered by <a style="margin-left: 0px;" href="http://www.ajariselalu.blogspot.com/">http://www.ajariselalu.blogspot.com</a></b>

</font>
</font></div></div></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