Skip to Main Content
Blog

Print all Tetradic Numbers in Python

Print all Tetradic Numbers in Python

Enter lower bound: 1
Enter upper bound: 999
1, 8, 11, 88, 101, 111, 181, 808, 818, 888,
from math import copysign


def main():
	"""
	Prints all the Tetradic numbers within a given range.
	"""

	BASE = 10

	a = int(input("Enter lower bound: "))
	b = int(input("Enter upper bound: "))

	for i in range(a, b + 1):
		if is_tetradic(i, BASE):
			print(i, end=", ")
	print()


def is_tetradic(number: int, base: int):
	"""
	Checks if a number is a Tetradic number or not.
	"""

	reversed = 0

	n = abs(number)
	while n != 0:
		unit_digit = n % base
		if unit_digit != 0 and unit_digit != 1 and unit_digit != 8:
			return False
		reversed = reversed * base + unit_digit
		n //= base
	reversed = int(copysign(reversed, number))

	return reversed == number


if __name__ == "__main__":
	main()