Den fredag 10 april 2015 kl. 11:53:14 UTC+2 skrev Evertjan.:
> jonas.thornvall@gmail.com wrote on 10 apr 2015 in comp.lang.javascript:
>
> > //If A<B returns true otherwise false
>
> returns?? not in the Javascript way.
>
> > function arrCompare(A,B){
> > if(A.length>B.length)answer="false";
> > if(A.length==B.length){ if ( A[A.length] > B[B.length] )answer="false";}
> >}
>
> You probably mean: A[A.length-1] > B[B.length-1]
>
> However this wil not work for:
>
> var A = [1,5,3];
> var B = [1,2,3];
>
> ================================
>
> I would prefer a 3-way return,
> speed-optimized for [large] inequality:
>
> // If A>B return 1, A=B return 0, A<B return -1
>
> function arrTriCompare(A,B) {
> var len = A.length, temp = len - B.length, i;
> if (temp)
> return Math.sign(temp);
> for (i = len-1; i >= 0; i--)
> if (temp = A[i] - B[i])
> return Math.sign(temp);
> return 0;
> };
>
>
>
>
>
> --
> Evertjan.
> The Netherlands.
> (Please change the x'es to dots in my emailaddress)
So far i got
// If A < B returns true otherwise false
function arrCompare(A, B, smaller)
{
if(A.length > B.length)
{
smaller = "false";
}
else if(A.length == B.length)
{
for(i = 0; i < A.length; i ++ )
{
if(A[i] < B[i])
{
smaller = "true"
}
else
{
smaller = "false"
}
}
}
return smaller;
}
// CONVERT A DECIMAL NUMBER INTO ANYBASE
function newbase(decNumber, base)
{
var out = [];
digits = 1;
var digmult = [];
digmult[0] = 1;
numbArr = decNumber.split("");
baseArr = base.split("");
smaller = "true"
while(smaller == "true")
{
digmultOld = digmult;
digmult = naiveMult(base, base, digmult);
smaller = arrCompare(digmult, numbArr, smaller);
if (smaller == "true")
{
digits ++ ;
}
else
{
smaller = "false";
digmult = digmultOld
}
}
digsave = digmult;
This is to do...
while(digits >= 0)
{
digit = 0;
for (digit = 0; digit <= base; digit ++ )
{
if((digit + 1) * digmult > decNumber) //CALL BIGNUMB MULT & COMPARE
break;
}
out[digits] = digit;
digmult = digmult * digit;
decNumber = decNumber - digmult; //CALL BIGNUMB SUBTRACTION
digsave = digsave / base; //No division,save values when multiply
digmult = digsave;
digits -- ;
}
if(out[0] == 0) out.splice(0, 1);
return out;
}