Julia package for integer digit manipulation
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Build Status: Travis CI Build status: Appveyor Digits Pkg Test Digits Pkg Test Digits Pkg Test Coverage Status

A package for integer digit computations.

Based on julias digits() function.

Installation / Testing

You can install the package by typing:

using Digits

or clone the latest version directly from the repo:

using Digits

Function Overview


Returns the digits of n in reversed order, i.e. reversedigits(n) == undigit(reverse!(digits(n))). For a list of digits this is equivalent to reverse() and reverse!().

undigit(A [, base])

The inverse function to julias digits(). Accepting a vector of integers where more significant digits are at higher indexes, according to digits() and a base. Default is 10.


Creates a digit histogram for a given number. The result is a 1-dimensional 10-element array containing the count of each digit. The first element contains the count of 0, while the last represents the count of 9.


Checks whether a or b is part of the other, e.g. contains(1356,35) will result in true.

startswith(a,b) / endswith(a,b)

Checks wether a or b is the first/last part of the other, e.g. startswith(1356,1), startswith(32,3236), endswith(31,9831) will all return true.


Returns true if a and b are valid permutations of their digits.


Returns true if n is a palindromic number.


Cuts off i digits from n. If i is positive the first (most significant) digits are cropped. If i is negative the last digits are cut off.


Return the combination of a and b, similar to a string concatenation, e.g. combine(13,56) -> 1356.


Calculates the cross sum over n.


Returns the digits of n with index idx. idx can be an array or range, e.g. select(64247,[2:4]) -> 424

replace(n,idx,vals) / replace!(l,idx,vals)

Replaces the digits of n with index idx by the values in vals. vals has to be same size as idx. For arrays of digits there is also an inplace version of replace. Example: replace(6215,[2,4],[8,7]) -> 6817

replace(n,olddigit,newdigit) / replace!(l,olddigit,newdigit)

Replaces the all digits of n with value olddigit with newdigit. There is also an inplace operation for arrays of digits. Example: replace(1363,3,9) -> 1969

digitroot(n) / digitroot(l)

Computes the digital root of n. That is the iterative sum of the digits until the result is a single digit number. digitroot(13548) -> 3


  • Most functions accept an array of digits aswell as an integer as input.
  • For most of the array methods there exists an inplace operation.
  • This package should also work for negative integers, but this can become tricky. Take a closer look at the digit representation of negative integers. digits(-135) -> [-5, -3, -1].