Skip to content

Instantly share code, notes, and snippets.

@JeffIrwin
Created September 17, 2018 23:22
Show Gist options
  • Save JeffIrwin/3d9ba91fe0c5001d189c759729c5e49e to your computer and use it in GitHub Desktop.
Save JeffIrwin/3d9ba91fe0c5001d189c759729c5e49e to your computer and use it in GitHub Desktop.
Given an integer, find three palindromes that sum to it.
import sys
if len(sys.argv) != 2:
print("Usage:")
print("python3 triplePalindrome.py 30041777")
sys.exit(-1)
nStr = sys.argv[1]
n = int(nStr)
nDigits = len(nStr)
nDigitsHalf = (nDigits - 1) // 2 + 1
nHalf = 10 ** nDigitsHalf
x = [None] * 2
y = [None] * 2
xStr = [None] * 2
yStr = [None] * 2
for xHalf in range(0, nHalf):
xHalfStr = str(xHalf)
xStr[0] = xHalfStr[::-1] + xHalfStr
xStr[1] = xHalfStr[::-1] + xHalfStr[1:]
x[0] = int(xStr[0])
x[1] = int(xStr[1])
for yHalf in range(0, xHalf):
yHalfStr = str(yHalf)
yStr[0] = yHalfStr[::-1] + yHalfStr
yStr[1] = yHalfStr[::-1] + yHalfStr[1:]
y[0] = int(yStr[0])
y[1] = int(yStr[1])
for ix in range(0, 2):
for iy in range(0, 2):
z = n - x[ix] - y[iy]
zStr = str(z)
if zStr == zStr[::-1]:
print(xStr[ix] + ' + ' + yStr[iy] + ' + ' + zStr + ' = ' + nStr)
exit(0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment