Solved 61, 62, 63.

main
Felix Martin 2019-01-06 00:50:37 -05:00
parent 3020b89719
commit 550a1479f0
7 changed files with 570 additions and 12 deletions

View File

@ -20,6 +20,132 @@
"Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[3, 7], [7, 3], [3, 109], [109, 3], [3, 673], [673, 3], [7, 109], [109, 7], [7, 673], [673, 7], [109, 673], [673, 109]]\n"
]
}
],
"source": [
"from itertools import combinations\n",
"\n",
"def concatenate_all(numbers):\n",
" result = []\n",
" for a, b in combinations(numbers, 2):\n",
" result.append([a, b])\n",
" result.append([b, a])\n",
" return result\n",
"\n",
"print(concatenate_all([3, 7, 109, 673]))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def sieve_of_eratosthenes(limit):\n",
" primes = []\n",
" prospects = [n for n in range(2, limit)]\n",
" while prospects:\n",
" p = prospects[0]\n",
" prospects = [x for x in prospects if x % p != 0]\n",
" primes.append(p)\n",
" if p * p > limit:\n",
" break\n",
" primes += prospects\n",
" return primes\n",
"\n",
"primes = sieve_of_eratosthenes(100000)\n",
"primes_set = set(primes)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def is_prime(n):\n",
" if n % 2 == 0:\n",
" return False\n",
" while n % 2 == 0:\n",
" n //= 2\n",
" f = 3\n",
" while f * f <= n:\n",
" if n % f == 0:\n",
" return False\n",
" else:\n",
" f += 2 \n",
" return True\n",
"\n",
"def concatentation_is_prime(a, b):\n",
" ab = int(str(a) + str(b))\n",
" ba = int(str(b) + str(a))\n",
" if is_prime(ab) and is_prime(ba):\n",
" return True\n",
" else:\n",
" return False\n",
" \n",
"assert(concatentation_is_prime(673, 3))\n",
"assert(concatentation_is_prime(673, 1) == False)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[13, 5197, 5701, 6733, 8389]\n",
"26033\n"
]
}
],
"source": [
"potentials = []\n",
"new_potentials = []\n",
"done = False\n",
"for p in primes:\n",
" if done:\n",
" break\n",
" potentials += new_potentials\n",
" new_potentials = []\n",
" for potential in potentials:\n",
" all_concatenations_prime = True\n",
" for prime in potential:\n",
" if not concatentation_is_prime(p, prime):\n",
" all_concatenations_prime = False\n",
" break\n",
" if all_concatenations_prime:\n",
" new_potential = list(potential)\n",
" new_potential.append(p)\n",
" if len(new_potential) > 4:\n",
" print(new_potential)\n",
" s = sum(new_potential)\n",
" done = True\n",
" break\n",
" new_potentials.append(new_potential)\n",
" if p < 15:\n",
" potentials.append([p])\n",
"\n",
"print(s)\n",
"assert(s == 26033)"
]
},
{
"cell_type": "code",
"execution_count": null,
@ -31,7 +157,7 @@
}
],
"metadata": {
"completion_date": "",
"completion_date": "Sun, 6 Jan 2019, 05:00",
"kernelspec": {
"display_name": "Python 3",
"language": "python3.6",
@ -49,7 +175,10 @@
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"tags": []
"tags": [
"prime",
"pairs"
]
},
"nbformat": 4,
"nbformat_minor": 2

View File

@ -37,6 +37,93 @@
"Find the sum of the only ordered set of six cyclic 4-digit numbers for which each polygonal type: triangle, square, pentagonal, hexagonal, heptagonal, and octagonal, is represented by a different number in the set."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"def get_four_digit_numbers(function):\n",
" r = []\n",
" n = 1\n",
" f = function\n",
" while f(n) < 10000:\n",
" if f(n) > 999:\n",
" r.append(f(n))\n",
" n += 1\n",
" return r\n",
"\n",
"triangles = get_four_digit_numbers(lambda n: n * (n + 1) // 2)\n",
"squares = get_four_digit_numbers(lambda n: n**2)\n",
"pentas = get_four_digit_numbers(lambda n: n * (3 * n - 1) // 2)\n",
"hexas = get_four_digit_numbers(lambda n: n * (2 * n - 1))\n",
"heptas = get_four_digit_numbers(lambda n: n * (5*n - 3) // 2)\n",
"octas = get_four_digit_numbers(lambda n: n * (3*n - 2))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def is_cyclic(a, b):\n",
" return str(a)[-2:] == str(b)[:2]\n",
"\n",
"assert(is_cyclic(3328, 2877))\n",
"assert(is_cyclic(3329, 2877) == False)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[8256, 5625, 2512, 1281, 8128, 2882]\n",
"28684\n"
]
}
],
"source": [
"def search_solution(aggregator, polygonals):\n",
" if not polygonals:\n",
" if is_cyclic(aggregator[-1], aggregator[0]):\n",
" return aggregator\n",
" else:\n",
" return []\n",
"\n",
" if not aggregator:\n",
" for polygonal in polygonals:\n",
" for number in polygonal:\n",
" aggregator.append(number)\n",
" s = search_solution(aggregator, [p for p in polygonals if p != polygonal])\n",
" if s:\n",
" return s\n",
" aggregator.pop()\n",
"\n",
" for polygonal in polygonals:\n",
" for number in polygonal:\n",
" if is_cyclic(aggregator[-1], number) and not number in aggregator:\n",
" aggregator.append(number)\n",
" s = search_solution(aggregator, [p for p in polygonals if p != polygonal])\n",
" if s:\n",
" return s\n",
" aggregator.pop()\n",
" return []\n",
"\n",
"s = search_solution([], [triangles, squares, pentas, hexas, heptas, octas])\n",
"print(s)\n",
"s = sum(s)\n",
"print(s)\n",
"assert(s == 28684)"
]
},
{
"cell_type": "code",
"execution_count": null,
@ -48,7 +135,7 @@
}
],
"metadata": {
"completion_date": "",
"completion_date": "Sun, 6 Jan 2019, 05:32",
"kernelspec": {
"display_name": "Python 3",
"language": "python3.6",
@ -66,7 +153,10 @@
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"tags": []
"tags": [
"search",
"cyclic"
]
},
"nbformat": 4,
"nbformat_minor": 2

View File

@ -20,6 +20,51 @@
"Find the smallest cube for which exactly five permutations of its digits are cube."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cubes = [n * n * n for n in range(1, 5000)]\n",
"cubes_set = set(cubes)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[127035954683, 352045367981, 373559126408, 569310543872, 589323567104]\n",
"127035954683\n"
]
}
],
"source": [
"solutions = {}\n",
"\n",
"for n in range(1, 10000):\n",
" cube = n * n * n\n",
" try:\n",
" key = \"\".join(sorted(str(cube)))\n",
" solutions[key].append(cube)\n",
" if len(solutions[key]) > 4:\n",
" print(solutions[key])\n",
" s = solutions[key][0]\n",
" break\n",
" except KeyError:\n",
" solutions[key] = [cube]\n",
"\n",
"print(s)\n",
"assert(s == 127035954683)"
]
},
{
"cell_type": "code",
"execution_count": null,
@ -31,7 +76,7 @@
}
],
"metadata": {
"completion_date": "",
"completion_date": "Sun, 6 Jan 2019, 05:47",
"kernelspec": {
"display_name": "Python 3",
"language": "python3.6",
@ -49,7 +94,9 @@
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"tags": []
"tags": [
"cubes"
]
},
"nbformat": 4,
"nbformat_minor": 2

View File

@ -11786,6 +11786,144 @@ div#notebook {
</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="kn">from</span> <span class="nn">itertools</span> <span class="k">import</span> <span class="n">combinations</span>
<span class="k">def</span> <span class="nf">concatenate_all</span><span class="p">(</span><span class="n">numbers</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">combinations</span><span class="p">(</span><span class="n">numbers</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</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">result</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">])</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nb">print</span><span class="p">(</span><span class="n">concatenate_all</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">109</span><span class="p">,</span> <span class="mi">673</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>[[3, 7], [7, 3], [3, 109], [109, 3], [3, 673], [673, 3], [7, 109], [109, 7], [7, 673], [673, 7], [109, 673], [673, 109]]
</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">sieve_of_eratosthenes</span><span class="p">(</span><span class="n">limit</span><span class="p">):</span>
<span class="n">primes</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">prospects</span> <span class="o">=</span> <span class="p">[</span><span class="n">n</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="n">limit</span><span class="p">)]</span>
<span class="k">while</span> <span class="n">prospects</span><span class="p">:</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">prospects</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">prospects</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">prospects</span> <span class="k">if</span> <span class="n">x</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">]</span>
<span class="n">primes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
<span class="k">if</span> <span class="n">p</span> <span class="o">*</span> <span class="n">p</span> <span class="o">&gt;</span> <span class="n">limit</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">primes</span> <span class="o">+=</span> <span class="n">prospects</span>
<span class="k">return</span> <span class="n">primes</span>
<span class="n">primes</span> <span class="o">=</span> <span class="n">sieve_of_eratosthenes</span><span class="p">(</span><span class="mi">100000</span><span class="p">)</span>
<span class="n">primes_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">primes</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">is_prime</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="k">if</span> <span class="n">n</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">while</span> <span class="n">n</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">n</span> <span class="o">//=</span> <span class="mi">2</span>
<span class="n">f</span> <span class="o">=</span> <span class="mi">3</span>
<span class="k">while</span> <span class="n">f</span> <span class="o">*</span> <span class="n">f</span> <span class="o">&lt;=</span> <span class="n">n</span><span class="p">:</span>
<span class="k">if</span> <span class="n">n</span> <span class="o">%</span> <span class="n">f</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">f</span> <span class="o">+=</span> <span class="mi">2</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">concatentation_is_prime</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">ab</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</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="nb">str</span><span class="p">(</span><span class="n">b</span><span class="p">))</span>
<span class="n">ba</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">b</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">a</span><span class="p">))</span>
<span class="k">if</span> <span class="n">is_prime</span><span class="p">(</span><span class="n">ab</span><span class="p">)</span> <span class="ow">and</span> <span class="n">is_prime</span><span class="p">(</span><span class="n">ba</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">assert</span><span class="p">(</span><span class="n">concatentation_is_prime</span><span class="p">(</span><span class="mi">673</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">concatentation_is_prime</span><span class="p">(</span><span class="mi">673</span><span class="p">,</span> <span class="mi">1</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 [4]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">potentials</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">new_potentials</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">done</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">primes</span><span class="p">:</span>
<span class="k">if</span> <span class="n">done</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">potentials</span> <span class="o">+=</span> <span class="n">new_potentials</span>
<span class="n">new_potentials</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">potential</span> <span class="ow">in</span> <span class="n">potentials</span><span class="p">:</span>
<span class="n">all_concatenations_prime</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">for</span> <span class="n">prime</span> <span class="ow">in</span> <span class="n">potential</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">concatentation_is_prime</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">prime</span><span class="p">):</span>
<span class="n">all_concatenations_prime</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">break</span>
<span class="k">if</span> <span class="n">all_concatenations_prime</span><span class="p">:</span>
<span class="n">new_potential</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">potential</span><span class="p">)</span>
<span class="n">new_potential</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_potential</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">4</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">new_potential</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">new_potential</span><span class="p">)</span>
<span class="n">done</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">break</span>
<span class="n">new_potentials</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_potential</span><span class="p">)</span>
<span class="k">if</span> <span class="n">p</span> <span class="o">&lt;</span> <span class="mi">15</span><span class="p">:</span>
<span class="n">potentials</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">p</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">26033</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>[13, 5197, 5701, 6733, 8389]
26033
</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">

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">

View File

@ -11786,6 +11786,56 @@ div#notebook {
</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="n">cubes</span> <span class="o">=</span> <span class="p">[</span><span class="n">n</span> <span class="o">*</span> <span class="n">n</span> <span class="o">*</span> <span class="n">n</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">1</span><span class="p">,</span> <span class="mi">5000</span><span class="p">)]</span>
<span class="n">cubes_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">cubes</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="n">solutions</span> <span class="o">=</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">1</span><span class="p">,</span> <span class="mi">10000</span><span class="p">):</span>
<span class="n">cube</span> <span class="o">=</span> <span class="n">n</span> <span class="o">*</span> <span class="n">n</span> <span class="o">*</span> <span class="n">n</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">key</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">cube</span><span class="p">)))</span>
<span class="n">solutions</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cube</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">solutions</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">4</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">solutions</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">solutions</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="k">break</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="n">solutions</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">cube</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">127035954683</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>[127035954683, 352045367981, 373559126408, 569310543872, 589323567104]
127035954683
</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">

View File

@ -953,32 +953,42 @@
</tr>
<tr class="table-warning">
<tr>
<td><a href="EulerProblem060.html">Problem 060</a></td>
<td></td>
<td>Sun, 6 Jan 2019, 05:00</td>
<td>
<kbd>prime</kbd>
<kbd>pairs</kbd>
</td>
</tr>
<tr class="table-warning">
<tr>
<td><a href="EulerProblem061.html">Problem 061</a></td>
<td></td>
<td>Sun, 6 Jan 2019, 05:32</td>
<td>
<kbd>search</kbd>
<kbd>cyclic</kbd>
</td>
</tr>
<tr class="table-warning">
<tr>
<td><a href="EulerProblem062.html">Problem 062</a></td>
<td></td>
<td>Sun, 6 Jan 2019, 05:47</td>
<td>
<kbd>cubes</kbd>
</td>
</tr>