Tried to solve 55 till 57.
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user