Skip to content

Instantly share code, notes, and snippets.

@tovask
Last active December 18, 2016 10:51
Show Gist options
  • Save tovask/a0870019f38d57e12d74ab66ce3cfc5d to your computer and use it in GitHub Desktop.
Save tovask/a0870019f38d57e12d74ab66ce3cfc5d to your computer and use it in GitHub Desktop.
<!--
Szempontok:
- ne befolyásolja az eredményt, hogy hányan vannak
- ha valakinek csak kevés pontja van, az ne húzza le csoportét
#mostvizsgázomjele2ből
#z-trafó
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<style>
html {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
body {
padding: 10px;
margin: 0;
}
table,tr,th,td {
border: 1px solid black;
border-collapse: collapse;
}
td{
padding: 5px 10px 5px 10px;
}
</style>
<script>
var test_datas = [
[25,23,20,20,19,17],
[20,20,20,19,18,15],
[40,15,15,15,15,15],
[35,32],
[35,32,03],
[20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20],
[01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01],
];
/* Calculating methods */
var paramA = 1, paramB = 0;
function calc_sum(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i];
}
return sum;
}
function weight_by_participants_desc(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i] * (points.length-i+1);
}
return sum;
}
function weight_by_participants_asc(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i] * (i+1);
}
return sum;
}
function exponential_weight_bad(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i] * Math.exp(i);
}
return sum;
}
function exponential_weight_simple(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i] * Math.exp(-i);
}
return sum;
}
function participans_exponential_weight(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i] * Math.exp(-i*points.length);
}
return sum;
}
function exponential_weight_plus(points){
var sum = 0;
for(var i=0;i<points.length;i++){
sum += points[i] * Math.exp(-i/paramA+paramB);
}
return sum;
}
var test_methods = [
{ 'name' : 'Sima összeg', 'callable' : calc_sum },
{ 'name' : 'Résztvevők száma szerint (csökkenő)', 'callable' : weight_by_participants_desc },
{ 'name' : 'Résztvevők száma szerint (növekvő)', 'callable' : weight_by_participants_asc },
{ 'name' : 'Elszálló exponenciális', 'callable' : exponential_weight_bad },
{ 'name' : 'Lecsengő exponenciális', 'callable' : exponential_weight_simple },
{ 'name' : 'Exponenciális és résztvevők száma szerint', 'callable' : participans_exponential_weight },
{ 'name' : 'Paraméteres exponenciális', 'callable' : exponential_weight_plus },
];
/* Inputs and renderers */
function newdata(){
var data = document.getElementById("newdata").value.split(",");
var clear = [];
for(var i=0;i<data.length;i++){
if(!isNaN(data[i])){
clear.push( Number(data[i]) );
}
}
test_datas.push( clear.sort(function(a,b){return a-b;}).reverse() );
render();
}
function render(){
var prev_newdata = document.getElementById("newdata") ? document.getElementById("newdata").value : "";
/* Inputs validating */
if( document.getElementById("paramA") ){
document.getElementById("paramA").value = document.getElementById("paramA").value.replace(",",".");
}
if( document.getElementById("paramB") ){
document.getElementById("paramB").value = document.getElementById("paramB").value.replace(",",".");
}
if( document.getElementById("paramA") && !isNaN(document.getElementById("paramA").value) && Number(document.getElementById("paramA").value) != 0 ){
paramA = Number(document.getElementById("paramA").value);
}
if( document.getElementById("paramB") && !isNaN(document.getElementById("paramB").value) ){
paramB = Number(document.getElementById("paramB").value);
}
document.body.innerHTML = "";
document.body.appendChild(document.createElement("br"));
/* Render data preview */
var b = document.createElement("b");
b.appendChild(document.createTextNode("Teszt pontok:"));
document.body.appendChild(b);
document.body.appendChild(document.createElement("br"));
document.body.appendChild(document.createElement("br"));
for(var i=0;i<test_datas.length;i++){
document.body.appendChild(document.createTextNode((i+1)+": "+test_datas[i]));
document.body.appendChild(document.createElement("br"));
}
document.body.appendChild(document.createElement("br"));
/* Render inputs */
document.body.appendChild(document.createTextNode("Új teszt pontok (vesszővel elvállasztva): "));
var input = document.createElement("input");
input.setAttribute("type","text");
input.setAttribute("id","newdata");
input.setAttribute("value",prev_newdata);
document.body.appendChild(input);
document.body.appendChild(document.createTextNode(" "));
var button = document.createElement("input");
button.setAttribute("type","button");
button.setAttribute("value","Hozzáad");
button.onclick = newdata;
document.body.appendChild(button);
document.body.appendChild(document.createElement("br"));
document.body.appendChild(document.createElement("br"));
document.body.appendChild(document.createTextNode("Paraméterek e^( -i/A + B) , A: "));
input = document.createElement("input");
input.setAttribute("type","text");
input.setAttribute("id","paramA");
input.setAttribute("value",paramA);
document.body.appendChild(input);
document.body.appendChild(document.createTextNode(" B: "));
input = document.createElement("input");
input.setAttribute("type","text");
input.setAttribute("id","paramB");
input.setAttribute("value",paramB);
document.body.appendChild(input);
document.body.appendChild(document.createTextNode(" "));
button = document.createElement("input");
button.setAttribute("type","button");
button.setAttribute("value","Alkalmaz");
button.onclick = render;
document.body.appendChild(button);
document.body.appendChild(document.createElement("br"));
document.body.appendChild(document.createElement("br"));
/* Render scores*/
var table = document.createElement("table");
var tr = document.createElement("tr");
var th = document.createElement("th");
th.appendChild(document.createTextNode("Súlyozás \\ Pontok"));
tr.appendChild(th);
for(var i=0;i<test_datas.length;i++){
th = document.createElement("th");
th.appendChild(document.createTextNode(i+1));
tr.appendChild(th);
}
table.appendChild(tr);
var td;
for(var i=0;i<test_methods.length;i++){
tr = document.createElement("tr");
td = document.createElement("td");
td.appendChild(document.createTextNode(test_methods[i].name));
tr.appendChild(td);
for(var j=0;j<test_datas.length;j++){
td = document.createElement("td");
td.setAttribute("id",i+"_"+j);
td.appendChild(document.createTextNode(Math.round(test_methods[i].callable(test_datas[j])*10000)/10000));
tr.appendChild(td);
}
table.appendChild(tr);
}
document.body.appendChild(table);
}
window.onload = render;
</script>
</head>
<body>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment