From 90ad12a7fa04fa57d3878a1083caa56bc936f769 Mon Sep 17 00:00:00 2001 From: celebrating_farmers-internshipwebsite Date: Wed, 29 Oct 2025 18:31:27 +0530 Subject: [PATCH] =?UTF-8?q?Add=20exponentiate=5Freverse.py=20=E2=80=94=20c?= =?UTF-8?q?ompute=20n=20**=20reverse(n)=20(closes=20#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exponentiate_reverse.py | 63 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 exponentiate_reverse.py diff --git a/exponentiate_reverse.py b/exponentiate_reverse.py new file mode 100644 index 00000000..86ecd61b --- /dev/null +++ b/exponentiate_reverse.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""exponentiate_reverse.py + +Compute n ** reverse(n). Example: 54 -> 54**45 + +Usage: + python exponentiate_reverse.py 54 + +Notes: +- The reversed exponent is computed from the absolute value of the input's digits. +- Very large results may be extremely big; use small inputs for quick runs. +""" +from __future__ import annotations +import argparse +import sys + + +def reverse_int(n: int) -> int: + """Return the integer formed by reversing the decimal digits of n. + + Examples: + 54 -> 45 + 120 -> 21 (leading zeros dropped) + -13 -> 31 + """ + s = str(abs(n)) + rs = s[::-1].lstrip("0") or "0" + rev = int(rs) + return rev if n >= 0 else rev + + +def exponentiate_reverse(n: int) -> int: + """Return n ** reverse_int(n). + + Uses the absolute reversed digits as the exponent (so the exponent is non-negative). + """ + exp = reverse_int(n) + return pow(n, exp) + + +def parse_args(argv: list[str] | None = None) -> argparse.Namespace: + p = argparse.ArgumentParser( + prog="exponentiate_reverse", + description="Compute n raised to the power formed by reversing the digits of n", + ) + p.add_argument("n", type=int, help="integer base (e.g. 54)") + return p.parse_args(argv) + + +def main(argv: list[str] | None = None) -> int: + args = parse_args(argv) + n = args.n + try: + result = exponentiate_reverse(n) + except OverflowError: + print("Result too large to compute with Python's pow()", file=sys.stderr) + return 2 + print(result) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())