汽車の切符の販売
2566 ワード
if(jQuery){}else{
//document.write
}
/*
12306 。。 。
。 , , , - ,
- ... 。 。 +-1.
: , , 10 ,
:'1111111111';
, '0000000000';
, - ( - ), '0011111111';
, - ( 6 - 9 ), :'0011100011';
, ( - ) ,
( - ) , OK( ). , '0011100011',
, (0011111111);
,12306 , , ,
, , 20 。 。 。
。
*/
function Server(){
var self = this;
self.ticketsPool = [];
self._init= function(number){
if(typeof(number) != 'number')
throw ('type error');
for(i=0;i<number;i++){
self.ticketsPool.push(new Ticket());
}
};
// , 。
// : o - (001111111), (0000000011)( - ), false
// : o - (001111111), (1111100011)( - ), true
self.canBuy = function(o,t){
var _o = ''
for(j=0; j<o.length; j++){
_o += o[j]=='0'?1:0;
}
var r1 = (parseInt(t.tic,2) | parseInt(o,2)) & parseInt(_o,2);
var r2 = parseInt(_o,2);
return r1 == r2;
};
//
self.pop1Ticket = function(o){
for(i=0;i < self.ticketsPool.length;i++){
if(self.canBuy(o,self.ticketsPool[i])){
self.buy(self.ticketsPool[i],o);
return i;
}
};
return -1;
};
// , , '111111111'->'001111111';
self.buy = function(t,o){
t.tic = (parseInt(t.tic,2) & parseInt(o,2)).toString(2);
//alert(t.tic);
};
//
self.remainTics = function(o){
var count=0;
for(i=0;i < self.ticketsPool.length;i++){
count += self.canBuy(o,self.ticketsPool[i])?1:0;
};
return count;
}
// ,
self.refund = function(o){
for(i=0;i < self.ticketsPool.length;i++){
if(!self.canBuy(o,self.ticketsPool[i])){
var _o = ''
for(j=0; j<o.length; j++){
_o += o[j]=='0'?1:0;
}
self.ticketsPool[i].tic = (parseInt(self.ticketsPool[i].tic,2) | parseInt(_o,2)).toString(2);
return i;
}
};
return -1;
}
}
// :
function Ticket(){
var self = this;
//
self.tic = '1111111111';
}
// :
function Order(from, to){
var self = this;
var s = '';
for(i=0;i<10;i++){
s += (i>=from && i<to)?0:1;
}
return s;
}
//12306
Server = new Server();
// , 400
Server._init(400);