bit 演算版 lotos() 一部関数リテラル使ってみた ver.
Java6 上の jrunscript 用
function lotos(depth){ var lt={ "Ceil":0, "Mask":[0,0], "Num":0, "Coll":[], "Colm":0, "getNum" :function(){ return(Math.ceil(Math.random()*lt.Ceil)); }, "isAlreadyExist":function() { return 0!=(lt.Mask[Math.floor(lt.Num/32)] & 1<<(lt.Num%32)); }, "markMaskBit":function() { lt.Mask[Math.floor(lt.Num/32)] |= 1<<(lt.Num%32); lt.Coll[lt.Colm]=(function(){ s="00"+ lt.Num; return s.substr(s.length-2,2)})(); } } lt.Ceil=(function(x){for(i=c=0;i<x; c+= ++i);return c})(depth)*2+1; //lt.Ceil=(function(x){i=c=0;while(i<x) c+=++i;return c})(depth)*2+1; for(lt.Colm=0,lt.Num=lt.getNum(),lt.markMaskBit();lt.Colm<depth;++lt.Colm){ do{lt.Num=lt.getNum();} while(lt.isAlreadyExist()); lt.markMaskBit(); } return(lt.Coll.sort().toString()); } sx=read("5:minilot\n6:loto6\n"); if(sx<5 || sx>6){ print("bad arguments\n"); } else{ println(lotos(sx)); }