def apply(self, n, base, evaluation, nr_elements=None): 'IntegerDigits[n_, base_]' if not(isinstance(n, Integer)): return evaluation.message('IntegerDigits', 'int', Expression('IntegerDigits', n, base)) if not(isinstance(base, Integer) and base.get_int_value() > 1): return evaluation.message('IntegerDigits', 'ibase', base) if nr_elements == 0: # trivial case: we don't want any digits return Expression('List') digits = convert_int_to_digit_list( n.get_int_value(), base.get_int_value()) if nr_elements is not None: if len(digits) >= nr_elements: # Truncate, preserving the digits on the right digits = digits[-nr_elements:] else: # Pad with zeroes digits = [0] * (nr_elements - len(digits)) + digits return Expression('List', *digits)
def apply(self, n, base, evaluation, nr_elements=None): "IntegerDigits[n_, base_]" if not (isinstance(n, Integer)): return evaluation.message("IntegerDigits", "int", Expression("IntegerDigits", n, base)) if not (isinstance(base, Integer) and base.get_int_value() > 1): return evaluation.message("IntegerDigits", "ibase", base) if nr_elements == 0: # trivial case: we don't want any digits return Expression("List") digits = convert_int_to_digit_list(n.get_int_value(), base.get_int_value()) if nr_elements is not None: if len(digits) >= nr_elements: # Truncate, preserving the digits on the right digits = digits[-nr_elements:] else: # Pad with zeroes digits = [0] * (nr_elements - len(digits)) + digits return Expression("List", *digits)