Max Alekseyev on Thu, 18 Oct 2012 15:38:04 +0200

 Re: reverse of digits()

• To: Mathieu Carbou <mathieu.carbou@gmail.com>
• Subject: Re: reverse of digits()
• From: Max Alekseyev <maxale@gmail.com>
• Date: Thu, 18 Oct 2012 09:37:56 -0400
• Cc: pari-users@pari.math.u-bordeaux.fr
• Delivery-date: Thu, 18 Oct 2012 15:38:04 +0200
• References: <507F54D4.1040306@gmail.com>

```JFI, In base 10, some digits-related functions can be implemented as
one-liners, e.g.:

\\ getting vector of digits of n:
eval(Vec(Str(n)))

\\ getting number from its vector of digits v:
eval(concat(apply(x->Str(x),v)))

\\ getting number composed of digits of n in reverse order:
eval(concat(Vecrev(Str(n))))

Regards,
Max

On Wed, Oct 17, 2012 at 9:01 PM, Mathieu Carbou
<mathieu.carbou@gmail.com> wrote:
> Hello,
>
> I've seen the new digits() and sumdigits() functions. I was wondering if
> there was also the reverse function of digits (i.e. vectonum([1,2,3,4,5],
> 10) == 12345) plus these functions which could be useful ;-)
>
> Thank you !
>
> /*
>     Digit decomposition of n in base b by ascending order of b exponents.
> I.e. digits(12345) == [1,2,3,4,5]
> */
> vectonum(v, b=10) =
> {
>     my(n=0);
>     for(i=1,#v, n+=v[i]*b^(#v-i));
>     return(n);
> }
>
> /*
>     Number of digits of n in base b
> */
> ndigits(n, b=10) =
> {
>     my(c=0);
>     if(n==0, return(1));
>     while(n, n=n\b; c++);
>     return(c);
> }
>
> /*
>     Representation of n in factoradic base b.
>     The number n is taken modulo b!
> */
> {
>     my(v=vector(b), qr=[0,n%(b!)]);
>     for(i=1, b, qr=divrem(qr[2], (b-i)!); v[i]=qr[1]);
>     return(v);
> }
>
>
> --
>
> Mathieu Carbou
> Cell: 514-660-4287

```