Tried to solve 55 till 57.

This commit is contained in:
2018-12-24 17:15:19 -05:00
parent 4acfe89f92
commit 147a13a01f
6 changed files with 417 additions and 4 deletions

View File

@@ -36,6 +36,85 @@
"NOTE: Wording was modified slightly on 24 April 2007 to emphasise the theoretical nature of Lychrel numbers."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def get_digits(n):\n",
" d = []\n",
" while n:\n",
" d.append(n % 10)\n",
" n //= 10\n",
" return d\n",
"\n",
"def is_pilandrome(n):\n",
" ds = get_digits(n)\n",
" len_ds = len(ds)\n",
" if len_ds < 2:\n",
" return True\n",
" for i in range(0, len_ds // 2):\n",
" if ds[i] != ds[len_ds - i - 1]:\n",
" return False\n",
" return True\n",
"\n",
"assert(is_pilandrome(1337) == False)\n",
"assert(is_pilandrome(1331))\n",
"assert(is_pilandrome(131))\n",
"assert(is_pilandrome(132) == False)\n",
"\n",
"\n",
"def get_digit_inverse(n):\n",
" ds = get_digits(n)\n",
" base = 1\n",
" i = 0\n",
" for d in ds[::-1]:\n",
" i += (base * d)\n",
" base *= 10\n",
" return i\n",
"\n",
"assert(get_digit_inverse(47) == 74)\n",
"assert(get_digit_inverse(47) == 74)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"def is_not_lychrel(n, iterations=50):\n",
" for i in range(0, iterations):\n",
" n = n + get_digit_inverse(n)\n",
" if is_pilandrome(n):\n",
" return (i + 1)\n",
" return 0\n",
"\n",
"assert(is_not_lychrel(47) == 1)\n",
"assert(is_not_lychrel(349) == 3)\n",
"assert(is_not_lychrel(10677, 100) == 53)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"249\n"
]
}
],
"source": [
"lychrels = [n for n in range(1, 10000) if is_not_lychrel(n) == 0]\n",
"s = len(lychrels)\n",
"print(s)"
]
},
{
"cell_type": "code",
"execution_count": null,