K iDddlmZddlmZmZddlmZddZd dZ d dZy) ) defaultdict)multisetis_palindromic)as_intNct|}t|}|dkr tdt|g}}||k\r&t||\}}|j |||k\r&|j ||j |dkr| n||j t |dz }|(||kDrtd|d|d||kr dg||z z|dd|S)a Return a list of the digits of ``n`` in base ``b``. The first element in the list is ``b`` (or ``-b`` if ``n`` is negative). Examples ======== >>> from sympy.ntheory.digits import digits >>> digits(35) [10, 3, 5] If the number is negative, the negative sign will be placed on the base (which is the first element in the returned list): >>> digits(-35) [-10, 3, 5] Bases other than 10 (and greater than 1) can be selected with ``b``: >>> digits(27, b=2) [2, 1, 1, 0, 1, 1] Use the ``digits`` keyword if a certain number of digits is desired: >>> digits(35, digits=4) [10, 0, 0, 3, 5] Parameters ========== n: integer The number whose digits are returned. b: integer The base in which digits are computed. digits: integer (or None for all digits) The number of digits to be returned (padded with zeros, if necessary). See Also ======== sympy.core.intfunc.num_digits, count_digits zb must be greater than 1rzFor z , at least z digits are needed.)r ValueErrorabsdivmodappendreverselen)nbdigitsxyrndigs Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/ntheory/digits.pyrrs\ q Aq A1u3441vr11f!Q>> from sympy.ntheory import count_digits >>> count_digits(1111339) {1: 4, 3: 2, 9: 1} The digits returned are always represented in base-10 but the number itself can be entered in any format that is understood by Python; the base of the number can also be given if it is different than 10: >>> n = 0xFA; n 250 >>> count_digits(_) {0: 1, 2: 1, 5: 1} >>> count_digits(n, 16) {10: 1, 15: 1} The default dictionary will return a 0 for any digit that did not appear in the number. For example, which digits appear 7 times in ``77!``: >>> from sympy import factorial >>> c77 = count_digits(factorial(77)) >>> [i for i in range(10) if c77[i] == 7] [1, 3, 7, 9] See Also ======== sympy.core.intfunc.num_digits, digits )rintrritemspop)rrrvs r count_digitsrKsON S(6!Q<0668 9BbBFF1I I!ffaRj Irc.tt||dS)areturn True if ``n`` is the same when read from left to right or right to left in the given base, ``b``. Examples ======== >>> from sympy.ntheory import is_palindromic >>> all(is_palindromic(i) for i in (-11, 1, 22, 121)) True The second argument allows you to test numbers in other bases. For example, 88 is palindromic in base-10 but not in base-8: >>> is_palindromic(88, 8) False On the other hand, a number can be palindromic in base-8 but not in base-10: >>> 0o121, is_palindromic(0o121) (81, False) Or it might be palindromic in both bases: >>> oct(121), is_palindromic(121, 8) and is_palindromic(121) ('0o171', True) r ) _palindromicr)rrs rrrws> q! a ((r) N)r!) collectionsrsympy.utilities.iterablesrrr sympy.utilities.miscrrrrrr&s #N'AH)X)r