Diferència entre revisions de la pàgina «Solucio Yahoo rellotge»
De wikiserver
Línia 222: | Línia 222: | ||
var that=this; | var that=this; | ||
− | setInterval(function () { that.hola(); }, time*1000); | + | setInterval(function () { that.hola(); }, time*1000); //hola es una funció d'exemple |
}; | }; | ||
Línia 240: | Línia 240: | ||
− | '''BENDER''' | + | '''Solució BENDER''' |
<source lang="java"> | <source lang="java"> |
Revisió del 14:03, 18 nov 2014
SOLUCIÓ YAHOO
function Yahoo(){
var numeros = "";
this.seguent = function(numeros){
switch(numeros){
case "cero":
return "un";
break;
case "un":
return "dos";
break;
case "dos":
return "tres";
break;
case "tres":
return "quatre";
break;
case "quatre":
return "molts";
break;
case "molts":
return "molts";
break;
case "desconegut":
return "desconegut";
break;
default:
return "desconegut";
}//cerrar switch
}; //cerrar this.seguent
this.suma = function(){
var numero = "";
var x = "";
if(arguments.length==0){
return "desconegut";
}
else if(arguments.length==1){
return arguments[0];
}
else{
numero = arguments[0];
x = arguments[1];
switch(numero){
case "cero":
return this.suma(x);
break;
case "un":
return this.seguent(x);
break;
case "dos":
return this.seguent(this.seguent(x));
break;
case "tres":
return this.seguent(this.seguent(this.seguent(x)));
break;
case "quatre":
return this.seguent(this.seguent(this.seguent(this.seguent(x))));
break;
case "molts":
return "molts";
break;
case "desconegut":
return "desconegut";
break;
default:
return "desconegut";
}//cerrar switch
} //cerrar else
}; //cerrar this.suma
/*Otra forma de hacerlo es sustituir la función de sumar sobrecargada por esta otra*/
function afegirMetode(objecte, nom, funcio){
var old = objecte[nom];
objecte[nom] = function(){
if(funcio.length == arguments.length)
return funcio.apply(this, arguments);
else if (typeof old == 'function')
return old.apply(this, arguments);
};
}
afegirMetode(this, "suma", function(){
return "desconegut";
});
afegirMetode(this, "suma", function(x){
return arguments[0];
});
afegirMetode(this, "suma", function(x){
return arguments[0];
});
afegirMetode(this, "suma", function(numero,x){
switch(numero){
case "cero":
return this.suma(x);
break;
case "un":
return this.seguent(x);
break;
case "dos":
return this.seguent(this.seguent(x));
break;
case "tres":
return this.seguent(this.seguent(this.seguent(x)));
break;
case "quatre":
return this.seguent(this.seguent(this.seguent(this.seguent(x))));
break;
case "molts":
return "molts";
break;
case "desconegut":
return "desconegut";
break;
default:
return "desconegut";
}
});
*/
} //cerrar yahoo
var yahoo1 = new Yahoo();
alert(yahoo1.seguent("desconegut"));
alert(yahoo1.seguent("cero"));
alert(yahoo1.seguent("un"));
alert(yahoo1.seguent("dos"));
alert(yahoo1.seguent("tres"));
alert(yahoo1.seguent("quatre"));
alert(yahoo1.seguent("molts"));
alert(yahoo1.seguent("seis"));
alert(yahoo1.suma());
alert(yahoo1.suma("un"));
alert(yahoo1.suma("cero","dos"));
alert(yahoo1.suma("quatre","dos"));
alert(yahoo1.suma("un","dos"));
alert(yahoo1.suma("desconegut","tres"));
alert(yahoo1.suma("cero","un"));
alert(yahoo1.suma("quatre","cero"));
alert(yahoo1.suma("quatre","un"));
alert(yahoo1.suma("tres","un"));
alert(yahoo1.suma("tres","cero"));
alert(yahoo1.suma("tres","dos"));
alert(yahoo1.suma("un","desconegut"));
SOLUCIO RELLOTGE
function Rellotge(){
var rellotge;
var rellotgeSec;
var tempsFun = 0;
this.ContructorRellotge = function(){
rellotge = new Date();
;
this.GetTime = function(){
rellotgeSec = new Date();
var timeMili = rellotgeSec.getTime() - rellotge.getTime();
var seg = timeMili / 1000;
return tempsFun + seg;
this.StopTime = function(){
tempsFun = this.GetTime();
rellotge = null;
};
this.StartTime = function(){
rellotge = new Date();
};
this.setFunctionOnTime =function(time,funcion){
var that=this;
setInterval(function () { that.hola(); }, time*1000); //hola es una funció d'exemple
};
this.hola=function(){
alert("hola mundo");
};
}
var rellotge = new Rellotge();
rellotge.ConstructorRellotge();
alert(rellotge.GetTime());
Solució BENDER
function afegirMetode(objecte, nom, funcio){
var old = objecte[nom];
objecte[nom] = function(){
if(funcio.length == arguments.length)
return funcio.apply(this, arguments);
else if (typeof old == 'function')
return old.apply(this, arguments);
};
}
var Bender = {};
afegirMetode(Bender, 'divideix', function(cadena)
{
//si ens passen la cadena buida retornarem un missatge de error
//si nomes passem una lletra retornem la mateixa lletra perque no es pot dividir
if(cadena.length==0)
{
return "no pots pasar una cadena buida";
}
else if(cadena.length==1)
{
return "H";
}
var numero=cadena.length/2;
var nova=[];
nova[0]=cadena.substring(0,numero);
nova[1]=cadena.substring(numero); //aixo es fins el final de la cadena
return nova;
}
);
afegirMetode(Bender, 'divideix', function(cadena,cadena2)
{
//si ens passen la cadena buida retornarem un missatge de error
//si nomes passem una lletra retornem la mateixa lletra perque no es pot dividir
if(cadena.length==0 || cadena2.length==0)
{
return "no pots pasar una cadena buida";
}
else if(cadena.length==1 || cadena.length==1)
{
return "no pots dividir la cadena per la metiat nomes has pasat un parametre";
}
var numero=cadena.length/2;
var numero2=cadena2.length/2;
if(numero!=numero2)
{
return "han de tenir el mateix tamany si no es poden dividir";
}
var nova=[];
nova[0]=cadena2.substring(numero);
nova[1]=cadena.substring(0,numero); //aixo es fins el final de la cadena
var nova2=[];
nova2[0]=cadena2.substring(0,numero);
nova2[1]=cadena.substring(numero); //aixo es fins el final de la cadena
var cadena_final=[];
cadena_final[0]=nova[0]+nova[1];
cadena_final[1]=nova2[0]+nova2[1];
return cadena_final;
}
);
afegirMetode(Bender, 'divideix', function(cadena,cadena2,num)
{
// les primers posicions ocupen una posicio i les ultimes els hi casquetem totes les posicions
if(cadena.length==0 || cadena2.length==0)
{
return "no pots pasar una cadena buida";
}
else if(cadena.length==1 || cadena.length==1)
{
return "no pots dividir la cadena per la metiat nomes has pasat un parametre";
}
var numero=cadena.length/2;
var numero2=cadena2.length/2;
if(numero!=numero2)
{
return "han de tenir el mateix tamany si no es poden dividir";
}
//ara tinc que tallar els trossos
var i=0;
var nova=[];
var nova2=[];
while(i<num)
{
if(i+1==num) // aixi la ultima posicio els fiquem tots aixi es mes senzill
{
nova[i]=cadena.substring(i);
nova2[i]=cadena2.substring(i);
}
else
{
nova[i]=cadena[i]
nova2[i]=cadena2[i];
}
i=i+1;
}
var trasnformacio="";
var i=0;
while(i<num)
{
trasnformacio=trasnformacio+ nova[i]+nova2[i]
i=i+2;
}
var trasnformacio2="";
var i=1;
while(i<num)
{
trasnformacio2=trasnformacio2+ nova[i]+nova2[i]
i=i+2;
}
return trasnformacio + "//"+ trasnformacio2;
}
);
document.write("--------------------------------<br>");
document.write("Bender.divideix(HOLA)===="+Bender.divideix("HOLA")+"<br>");
document.write("Bender.divideix(HOLA,ADEU)===="+Bender.divideix("HOLA","ADEU")+"<br>");
document.write("Bender.divideix(HOLA,ADEU,4)===="+Bender.divideix("HOLA","ADEU",4)+"<br>");
document.write("Bender.divideix(HOLA,ADEU,2)===="+Bender.divideix("HOLA","ADEU",2)+"<br>");