Skip to content

Instantly share code, notes, and snippets.

@Xsmael
Last active October 12, 2017 05:07
Show Gist options
  • Save Xsmael/7785c35e62a0fe907115c506e84291c2 to your computer and use it in GitHub Desktop.
Save Xsmael/7785c35e62a0fe907115c506e84291c2 to your computer and use it in GitHub Desktop.
<script>
var a = [[1.0,1.0,1.0], [0.5,0.5,0.5], [0.0,0.5,0.0]];
var b = [[1.0,0.5,1.0], [0.0,1.0,0.0], [0.5,0.0,0.0]];
var c = [[1.0,0.0,0.0], [0.5,1.0,0.5], [0.0,0.0,1.0]];
var items= [];
items[0]= a;
items[1]= b;
items[2]= c;
for(var i=0 ; i< 3; i++) {
for(var j=0 ; j < 3; j++) {
allocate(i,j);
}
println();
}
function allocate(i,j) {
for(var k=0 ; k< items.length ; k++) {
var item= items[k];
print(item[i][j]);
}
print('| ');
}
function print(t) {
document.write(t+' ');
}
function println(t) {
document.write(t||''+"<br>");
}
</script>
log('\n');
var a = [[1.0,1.0,1.0], [0.5,0.5,0.5], [0.0,0.5,0.0]];
var b = [[1.0,0.5,1.0], [0.0,1.0,0.0], [0.5,0.0,0.0]];
var c = [[1.0,0.0,0.0], [0.5,1.0,0.5], [0.0,0.0,1.0]];
var table=[[],[],[]];
a.satisfied= 0;
a.available= 0;
a.id='I';
b.satisfied= 0;
b.available= 0;
b.id='O';
c.satisfied= 0;
c.available= 0;
c.id='F';
var items= [];
items[0]= a;
items[1]= b;
items[2]= c;
items.sort(function (a,b) {
return b.available- a.available;
})
function availability(item) {
for(var i=0 ; i< 3; i++) {
for(var j=0 ; j < 3; j++) {
if(item[i][j]>0) item.available++;
}
}
}
for(var k=0 ; k< items.length ; k++) {
availability(items[k]);
}
// console.log(a);
// console.log(b);
// console.log(c);
function display() {
for(var k=0 ; k< items.length; k++) {
log(items[k].id+':\n');
for(var i=0 ; i< 3; i++) {
for(var j=0 ; j < 3; j++) {
log( Number(items[k][i][j]).toFixed(1)+'|');
}
log('\n');
}
log('avail: '+items[k].available);
log('satis: '+items[k].satisfied);
log('\n\n');
}
}
display();
for(var i=0 ; i< 3; i++) {
for(var j=0 ; j < 3; j++) {
allocate(i,j);
}
}
console.log(table);
display();
function allocate(i,j) {
var selectedItem= items[0];
var id=selectedItem.id;
for(var k=0 ; k< items.length ; k++) {
var item= items[k];
if (parseFloat( selectedItem[i][j] ) < parseFloat( items[k][i][j]) && selectedItem.satisfied < items[k].satisfied ) {
//console.log(selectedItem[i][j]+' # '+items[k][i][j]);
selectedItem= items[k];
id=selectedItem.id;
}
else if( selectedItem.satisfied > items[k].satisfied) {
selectedItem= items[k];
id=selectedItem.id;
}
log( '['+Number(item[i][j] ).toFixed(1)+']');
}
log('-> '+id);
table[i][j]= id;
selectedItem[i][j]=0;
selectedItem.available--;
selectedItem.satisfied++;
items.sort(function (a,b) {
if(a.satisfied > b.satisfied) {
return a.satisfied - b.satisfied;
}
return b.available- a.available;
});
log('\n');
}
function log(t) {
// console.log(t+' ');
process.stdout.write(t+' ');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment