euler/ipython/EulerProblem032.ipynb

92 lines
2.6 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Euler Problem 32\n",
"\n",
"We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through 5 pandigital.\n",
"\n",
"The product 7254 is unusual, as the identity, 39 × 186 = 7254, containing multiplicand, multiplier, and product is 1 through 9 pandigital.\n",
"\n",
"Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.\n",
"\n",
"HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum."
]
},
2018-02-12 00:40:11 +01:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We start by thinking about how many digits are used for multiplicand/multiplier/product. Obviously, the product must have more then three digits. Can it have more then 4 digits? Obviously it can because then there are only four digits for multiplicand and multiplier which is always smaller than ten thousand. So our product must be in the form $12 \\cdot 345 = 5789$. This makes the rest very easy in Python."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
2018-02-12 00:40:11 +01:00
"data": {
"text/plain": [
"45228"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2018-02-12 00:40:11 +01:00
"from itertools import permutations\n",
"\n",
"def is_solution(s):\n",
" a, b, c = int(s[0:2]), int(s[2:5]), int(s[5:])\n",
" if a * b == c:\n",
" return c\n",
" a, b, c = int(s[0:1]), int(s[1:5]), int(s[5:]) \n",
" if a * b == c:\n",
" return c\n",
" return 0\n",
"\n",
"assert(is_solution(\"391867254\") == 7254)\n",
"assert(is_solution(\"391867245\") == 0)\n",
"\n",
"\n",
"s = sum(set([is_solution(\"\".join(p)) for p in permutations(\"123456789\")]))\n",
"assert(s == 45228)\n",
"s"
]
}
],
"metadata": {
"completion_date": "Wed, 30 Aug 2017, 14:25",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
},
"tags": [
"pandigital",
"products"
]
},
"nbformat": 4,
"nbformat_minor": 0
}