Euler has design of a homepage and there is a link back to the overview for each solution.

This commit is contained in:
2018-06-14 20:11:26 -04:00
parent 894160d1a0
commit c34ebd6181
48 changed files with 1134 additions and 2394 deletions

View File

@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<head><meta charset="utf-8"/>
<title>EulerProblem038</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<style type="text/css">
/*!
*
@@ -11714,8 +11714,6 @@ ul.typeahead-list > li > a {
.ansi-bold { font-weight: bold; }
</style>
<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
@@ -11741,15 +11739,13 @@ div#notebook {
}
}
</style>
<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">
<link href="custom.css" rel="stylesheet"/>
<!-- Loading mathjax macro -->
<!-- Load mathjax -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
<!-- MathJax configuration -->
<script type="text/x-mathjax-config">
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
<!-- MathJax configuration -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
@@ -11766,23 +11762,21 @@ div#notebook {
}
});
</script>
<!-- End of mathjax configuration --></head>
<!-- End of mathjax configuration --></head>
<body>
<div tabindex="-1" id="notebook" class="border-box-sizing">
<div class="container" id="notebook-container">
<div class="border-box-sizing" id="notebook" tabindex="-1">
<div class="container" id="notebook-container">
<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">
<h1 id="Euler-Problem-38">Euler Problem 38<a class="anchor-link" href="#Euler-Problem-38">&#182;</a></h1><p>Take the number 192 and multiply it by each of 1, 2, and 3:</p>
<h1 id="Euler-Problem-38">Euler Problem 38<a class="anchor-link" href="#Euler-Problem-38"></a></h1><p><a href="/euler">Back to overview.</a></p><p>Take the number 192 and multiply it by each of 1, 2, and 3:</p>
<p>$192 \times 1 = 192$</p>
<p>$192 \times 2 = 384$</p>
<p>$192 \times 3 = 576$</p>
<p>By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call 192384576 the concatenated product of 192 and (1,2,3)</p>
<p>The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4, and 5, giving the pandigital, 918273645, which is the concatenated product of 9 and (1,2,3,4,5).</p>
<p>What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product of an integer with (1,2, ... , n) where n &gt; 1?</p>
</div>
</div>
</div>
@@ -11791,46 +11785,42 @@ div#notebook {
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Let's start by implementing a function which can calculate the concatenated product of a number based on a given $n$.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[1]:</div>
<div class="prompt input_prompt">In [1]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">get_concatenated_product_of</span><span class="p">(</span><span class="n">number</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
<span class="n">number</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span> <span class="o">*</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
<span class="k">return</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span> <span class="o">*</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">get_concatenated_product_of</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;918273645&quot;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">get_concatenated_product_of</span><span class="p">(</span><span class="mi">192</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;192384576&quot;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">get_concatenated_product_of</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"918273645"</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">get_concatenated_product_of</span><span class="p">(</span><span class="mi">192</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"192384576"</span><span class="p">)</span>
</pre></div>
</div>
</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>Next we need a function that can check if a number is pandigital for the numbers from 1 to 9. The idea is that we generate a validation array for the numbers 1 to 9. Each number maps to a field in the array and we initialize the array with zeros. We then iterate over the input number and increment the respective validation field by one. Afterwards we check if each field in the validation array is one in which case the number is n-pandigital. Otherwise, it is not.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="prompt input_prompt">In [2]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">is_pandigital</span><span class="p">(</span><span class="n">number</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">9</span><span class="p">):</span>
<span class="n">number_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
<span class="n">validation_array</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
<span class="k">if</span> <span class="s2">&quot;0&quot;</span> <span class="ow">in</span> <span class="n">number_str</span><span class="p">:</span>
<span class="k">if</span> <span class="s2">"0"</span> <span class="ow">in</span> <span class="n">number_str</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">digit</span> <span class="ow">in</span> <span class="n">number_str</span><span class="p">:</span>
<span class="n">validation_array</span><span class="p">[</span><span class="nb">ord</span><span class="p">(</span><span class="n">digit</span><span class="p">)</span> <span class="o">-</span> <span class="mi">49</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
@@ -11839,25 +11829,22 @@ div#notebook {
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">&quot;012345678&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">&quot;123&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">&quot;9&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">&quot;123568&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">&quot;987&quot;</span><span class="p">,</span> <span class="mi">9</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">&quot;918273645&quot;</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">"012345678"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">"123"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">"9"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">"123568"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">"987"</span><span class="p">,</span> <span class="mi">9</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_pandigital</span><span class="p">(</span><span class="s2">"918273645"</span><span class="p">))</span>
</pre></div>
</div>
</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>This example shows how important it is to add little tests even for simple programs like this. The first example is certainly not 1 to 9 pandigital, but because of negative array indexing in Python it qualifies as True. We solved this problem by adding a simple check for a "0" in the number_str.</p>
</div>
</div>
</div>
@@ -11866,19 +11853,18 @@ div#notebook {
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>The next step is to check whether a number has the potential to become a 1 to 9 pandigital. The algorithm is essentially the same except this time we return False only if a field in the validation array is greater than 1. This means at least one digit occurs multiple times. Otherwise, the array has still potential to become a pandigital number.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="prompt input_prompt">In [3]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">could_be_pandigital</span><span class="p">(</span><span class="n">number</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">9</span><span class="p">):</span>
<span class="n">number_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
<span class="n">validation_array</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
<span class="k">if</span> <span class="s2">&quot;0&quot;</span> <span class="ow">in</span> <span class="n">number_str</span><span class="p">:</span>
<span class="k">if</span> <span class="s2">"0"</span> <span class="ow">in</span> <span class="n">number_str</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">digit</span> <span class="ow">in</span> <span class="n">number_str</span><span class="p">:</span>
<span class="n">validation_array</span><span class="p">[</span><span class="nb">ord</span><span class="p">(</span><span class="n">digit</span><span class="p">)</span> <span class="o">-</span> <span class="mi">49</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
@@ -11887,35 +11873,32 @@ div#notebook {
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;012345678&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;123&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;9&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;123568&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;987&quot;</span><span class="p">,</span> <span class="mi">9</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;918273645&quot;</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;98233&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">&quot;1223&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"012345678"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"123"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"9"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"123568"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"987"</span><span class="p">,</span> <span class="mi">9</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"918273645"</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"98233"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">could_be_pandigital</span><span class="p">(</span><span class="s2">"1223"</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">)</span>
</pre></div>
</div>
</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>The next function we want is one which checks if a certain number can actually create a concatenated pandigital product of an integer with (1,2, ... , n) where n &gt; 1. For this function we can use all function which we have implemented to this point. We take a number and do a simple brute force starting with n = 2. We return False once the concatenated product cannot be a pandigital anymore. We use the two given examples as tests.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[4]:</div>
<div class="prompt input_prompt">In [4]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">can_build_concatenated_pandigital_product</span><span class="p">(</span><span class="n">number</span><span class="p">):</span>
<span class="n">number_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">9</span><span class="p">):</span>
@@ -11924,152 +11907,116 @@ div#notebook {
<span class="k">return</span> <span class="n">concatenated_product</span>
<span class="k">if</span> <span class="n">could_be_pandigital</span><span class="p">(</span><span class="n">concatenated_product</span><span class="p">)</span> <span class="o">==</span> <span class="kc">False</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;If we got here we have a bug.&quot;</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"If we got here we have a bug."</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">can_build_concatenated_pandigital_product</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;918273645&quot;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">can_build_concatenated_pandigital_product</span><span class="p">(</span><span class="mi">192</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;192384576&quot;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">can_build_concatenated_pandigital_product</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"918273645"</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">can_build_concatenated_pandigital_product</span><span class="p">(</span><span class="mi">192</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"192384576"</span><span class="p">)</span>
</pre></div>
</div>
</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>From here on it is just a matter of bruteforcing. We know that the base number of a higher concatenated pandigital product has to start with a 9. Also we know that the base number cannot have more than 5 digits because $10000 \times 1, 10000 \times 2 = 1000020000" has already more digits than a potential solution. This means we create a list of possible solutions first.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="prompt input_prompt">In [5]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">possible_solutions</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;9&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="s2">&quot;0&quot;</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"9"</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="s2">"0"</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="k">if</span> <span class="n">could_be_pandigital</span><span class="p">(</span><span class="n">i</span><span class="p">)]</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of possible solutions: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">possible_solutions</span><span class="p">)))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Number of possible solutions: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">possible_solutions</span><span class="p">)))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Number of possible solutions: 401
</pre>
</div>
</div>
</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>Since this number is actually small enough we filter all base numbers which can produce a concatenated pandigital product.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="prompt input_prompt">In [6]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">possible_solutions</span> <span class="o">=</span> <span class="p">[</span><span class="n">s</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">possible_solutions</span>
<span class="k">if</span> <span class="n">can_build_concatenated_pandigital_product</span><span class="p">(</span><span class="n">s</span><span class="p">)]</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of possible solutions: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">possible_solutions</span><span class="p">)))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Number of possible solutions: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">possible_solutions</span><span class="p">)))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Number of possible solutions: 4
</pre>
</div>
</div>
</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>Finally, calculate the actual product and print the highest one.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="prompt input_prompt">In [7]:</div>
<div class="inner_cell">
<div class="input_area">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">s</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">map</span><span class="p">(</span><span class="n">can_build_concatenated_pandigital_product</span><span class="p">,</span> <span class="n">possible_solutions</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">932718654</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>932718654
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>