Finished 32 in ipython.
This commit is contained in:
@@ -188,6 +188,16 @@ div#notebook {
|
||||
<p>Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.</p>
|
||||
<p>HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell border-box-sizing text_cell rendered">
|
||||
<div class="prompt input_prompt">
|
||||
</div>
|
||||
<div class="inner_cell">
|
||||
<div class="text_cell_render border-box-sizing rendered_html">
|
||||
<p>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.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -196,8 +206,24 @@ div#notebook {
|
||||
<div class="prompt input_prompt">In [1]:</div>
|
||||
<div class="inner_cell">
|
||||
<div class="input_area">
|
||||
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">s</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">itertools</span> <span class="k">import</span> <span class="n">permutations</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">is_solution</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
|
||||
<span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">5</span><span class="p">:])</span>
|
||||
<span class="k">if</span> <span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">==</span> <span class="n">c</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">c</span>
|
||||
<span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">5</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">5</span><span class="p">:])</span>
|
||||
<span class="k">if</span> <span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">==</span> <span class="n">c</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">c</span>
|
||||
<span class="k">return</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">assert</span><span class="p">(</span><span class="n">is_solution</span><span class="p">(</span><span class="s2">"391867254"</span><span class="p">)</span> <span class="o">==</span> <span class="mi">7254</span><span class="p">)</span>
|
||||
<span class="k">assert</span><span class="p">(</span><span class="n">is_solution</span><span class="p">(</span><span class="s2">"391867245"</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">is_solution</span><span class="p">(</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="p">))</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">permutations</span><span class="p">(</span><span class="s2">"123456789"</span><span class="p">)]))</span>
|
||||
<span class="k">assert</span><span class="p">(</span><span class="n">s</span> <span class="o">==</span> <span class="mi">45228</span><span class="p">)</span>
|
||||
<span class="n">s</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
@@ -208,32 +234,15 @@ div#notebook {
|
||||
<div class="output">
|
||||
|
||||
|
||||
<div class="output_area"><div class="prompt"></div>
|
||||
<div class="output_subarea output_text output_error">
|
||||
<pre>
|
||||
<span class="ansired">---------------------------------------------------------------------------</span>
|
||||
<span class="ansired">AssertionError</span> Traceback (most recent call last)
|
||||
<span class="ansigreen"><ipython-input-1-8e612cf3c592></span> in <span class="ansicyan"><module></span><span class="ansiblue">()</span>
|
||||
<span class="ansigreen"> 1</span> s <span class="ansiyellow">=</span> <span class="ansicyan">0</span><span class="ansiyellow"></span>
|
||||
<span class="ansigreen">----> 2</span><span class="ansiyellow"> </span><span class="ansigreen">assert</span><span class="ansiyellow">(</span>s <span class="ansiyellow">==</span> <span class="ansicyan">45228</span><span class="ansiyellow">)</span><span class="ansiyellow"></span>
|
||||
<div class="output_area"><div class="prompt output_prompt">Out[1]:</div>
|
||||
|
||||
<span class="ansired">AssertionError</span>: </pre>
|
||||
</div>
|
||||
|
||||
<div class="output_text output_subarea output_execute_result">
|
||||
<pre>45228</pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="cell border-box-sizing code_cell rendered">
|
||||
<div class="input">
|
||||
<div class="prompt input_prompt">In [ ]:</div>
|
||||
<div class="inner_cell">
|
||||
<div class="input_area">
|
||||
<div class=" highlight hl-ipython3"><pre><span></span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -15,6 +15,13 @@
|
||||
"HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum."
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
@@ -23,30 +30,36 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "AssertionError",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m<ipython-input-1-8e612cf3c592>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0ms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32massert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m45228\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
||||
"\u001b[1;31mAssertionError\u001b[0m: "
|
||||
]
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"45228"
|
||||
]
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"s = 0\n",
|
||||
"assert(s == 45228)"
|
||||
"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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
Reference in New Issue
Block a user