Solved 61, 62, 63.

This commit is contained in:
2019-01-06 00:50:37 -05:00
parent 3020b89719
commit 550a1479f0
7 changed files with 570 additions and 12 deletions

View File

@@ -11796,6 +11796,100 @@ Find the sum of the only ordered set of six cyclic 4-digit numbers for which eac
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<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="k">def</span> <span class="nf">get_four_digit_numbers</span><span class="p">(</span><span class="n">function</span><span class="p">):</span>
<span class="n">r</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">n</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">f</span> <span class="o">=</span> <span class="n">function</span>
<span class="k">while</span> <span class="n">f</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">10000</span><span class="p">:</span>
<span class="k">if</span> <span class="n">f</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">999</span><span class="p">:</span>
<span class="n">r</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
<span class="n">n</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">return</span> <span class="n">r</span>
<span class="n">triangles</span> <span class="o">=</span> <span class="n">get_four_digit_numbers</span><span class="p">(</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">squares</span> <span class="o">=</span> <span class="n">get_four_digit_numbers</span><span class="p">(</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="n">pentas</span> <span class="o">=</span> <span class="n">get_four_digit_numbers</span><span class="p">(</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="p">(</span><span class="mi">3</span> <span class="o">*</span> <span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">hexas</span> <span class="o">=</span> <span class="n">get_four_digit_numbers</span><span class="p">(</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
<span class="n">heptas</span> <span class="o">=</span> <span class="n">get_four_digit_numbers</span><span class="p">(</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="p">(</span><span class="mi">5</span><span class="o">*</span><span class="n">n</span> <span class="o">-</span> <span class="mi">3</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">octas</span> <span class="o">=</span> <span class="n">get_four_digit_numbers</span><span class="p">(</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="p">(</span><span class="mi">3</span><span class="o">*</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [2]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">is_cyclic</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="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">a</span><span class="p">)[</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">b</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_cyclic</span><span class="p">(</span><span class="mi">3328</span><span class="p">,</span> <span class="mi">2877</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">is_cyclic</span><span class="p">(</span><span class="mi">3329</span><span class="p">,</span> <span class="mi">2877</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 code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [3]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">search_solution</span><span class="p">(</span><span class="n">aggregator</span><span class="p">,</span> <span class="n">polygonals</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">polygonals</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_cyclic</span><span class="p">(</span><span class="n">aggregator</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">aggregator</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
<span class="k">return</span> <span class="n">aggregator</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">aggregator</span><span class="p">:</span>
<span class="k">for</span> <span class="n">polygonal</span> <span class="ow">in</span> <span class="n">polygonals</span><span class="p">:</span>
<span class="k">for</span> <span class="n">number</span> <span class="ow">in</span> <span class="n">polygonal</span><span class="p">:</span>
<span class="n">aggregator</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">search_solution</span><span class="p">(</span><span class="n">aggregator</span><span class="p">,</span> <span class="p">[</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">polygonals</span> <span class="k">if</span> <span class="n">p</span> <span class="o">!=</span> <span class="n">polygonal</span><span class="p">])</span>
<span class="k">if</span> <span class="n">s</span><span class="p">:</span>
<span class="k">return</span> <span class="n">s</span>
<span class="n">aggregator</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
<span class="k">for</span> <span class="n">polygonal</span> <span class="ow">in</span> <span class="n">polygonals</span><span class="p">:</span>
<span class="k">for</span> <span class="n">number</span> <span class="ow">in</span> <span class="n">polygonal</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_cyclic</span><span class="p">(</span><span class="n">aggregator</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">number</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">number</span> <span class="ow">in</span> <span class="n">aggregator</span><span class="p">:</span>
<span class="n">aggregator</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">search_solution</span><span class="p">(</span><span class="n">aggregator</span><span class="p">,</span> <span class="p">[</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">polygonals</span> <span class="k">if</span> <span class="n">p</span> <span class="o">!=</span> <span class="n">polygonal</span><span class="p">])</span>
<span class="k">if</span> <span class="n">s</span><span class="p">:</span>
<span class="k">return</span> <span class="n">s</span>
<span class="n">aggregator</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">search_solution</span><span class="p">([],</span> <span class="p">[</span><span class="n">triangles</span><span class="p">,</span> <span class="n">squares</span><span class="p">,</span> <span class="n">pentas</span><span class="p">,</span> <span class="n">hexas</span><span class="p">,</span> <span class="n">heptas</span><span class="p">,</span> <span class="n">octas</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="n">s</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="n">s</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">s</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">28684</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>[8256, 5625, 2512, 1281, 8128, 2882]
28684
</pre>
</div>
</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">