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>EulerProblem017</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,19 +11762,17 @@ 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-17">Euler Problem 17<a class="anchor-link" href="#Euler-Problem-17">&#182;</a></h1><p>If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.</p>
<h1 id="Euler-Problem-17">Euler Problem 17<a class="anchor-link" href="#Euler-Problem-17"></a></h1><p><a href="/euler">Back to overview.</a></p><p>If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.</p>
<p>If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?</p>
<p>NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.</p>
</div>
</div>
</div>
@@ -11787,50 +11781,49 @@ div#notebook {
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>I can see us doing a semi-automated approach here or we write a nice function. We probably write a nice function because we are geeks.</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">single_digit_integer_to_spoken_language</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">0</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span>
<span class="k">return</span> <span class="s2">""</span>
<span class="k">assert</span><span class="p">(</span><span class="n">n</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span>
<span class="k">return</span> <span class="p">{</span><span class="mi">1</span><span class="p">:</span> <span class="s1">&#39;one&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s1">&#39;two&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="s1">&#39;three&#39;</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s1">&#39;four&#39;</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s1">&#39;five&#39;</span><span class="p">,</span>
<span class="mi">6</span><span class="p">:</span> <span class="s1">&#39;six&#39;</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s1">&#39;seven&#39;</span><span class="p">,</span> <span class="mi">8</span><span class="p">:</span> <span class="s1">&#39;eight&#39;</span><span class="p">,</span> <span class="mi">9</span><span class="p">:</span> <span class="s1">&#39;nine&#39;</span><span class="p">}[</span><span class="n">n</span><span class="p">]</span>
<span class="k">return</span> <span class="p">{</span><span class="mi">1</span><span class="p">:</span> <span class="s1">'one'</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s1">'two'</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="s1">'three'</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s1">'four'</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s1">'five'</span><span class="p">,</span>
<span class="mi">6</span><span class="p">:</span> <span class="s1">'six'</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s1">'seven'</span><span class="p">,</span> <span class="mi">8</span><span class="p">:</span> <span class="s1">'eight'</span><span class="p">,</span> <span class="mi">9</span><span class="p">:</span> <span class="s1">'nine'</span><span class="p">}[</span><span class="n">n</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">double_digit_integer_to_spoken_language</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">n</span> <span class="o">&gt;</span> <span class="mi">9</span> <span class="ow">and</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">100</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="p">{</span>
<span class="mi">10</span><span class="p">:</span> <span class="s1">&#39;ten&#39;</span><span class="p">,</span> <span class="mi">11</span><span class="p">:</span> <span class="s1">&#39;eleven&#39;</span><span class="p">,</span> <span class="mi">12</span><span class="p">:</span> <span class="s1">&#39;twelve&#39;</span><span class="p">,</span> <span class="mi">13</span><span class="p">:</span> <span class="s1">&#39;thirteen&#39;</span><span class="p">,</span>
<span class="mi">14</span><span class="p">:</span> <span class="s1">&#39;fourteen&#39;</span><span class="p">,</span> <span class="mi">15</span><span class="p">:</span> <span class="s1">&#39;fifteen&#39;</span><span class="p">,</span> <span class="mi">16</span><span class="p">:</span> <span class="s1">&#39;sixteen&#39;</span><span class="p">,</span>
<span class="mi">17</span><span class="p">:</span> <span class="s1">&#39;seventeen&#39;</span><span class="p">,</span> <span class="mi">18</span><span class="p">:</span> <span class="s1">&#39;eighteen&#39;</span><span class="p">,</span> <span class="mi">19</span><span class="p">:</span> <span class="s1">&#39;nineteen&#39;</span><span class="p">}[</span><span class="n">n</span><span class="p">]</span>
<span class="mi">10</span><span class="p">:</span> <span class="s1">'ten'</span><span class="p">,</span> <span class="mi">11</span><span class="p">:</span> <span class="s1">'eleven'</span><span class="p">,</span> <span class="mi">12</span><span class="p">:</span> <span class="s1">'twelve'</span><span class="p">,</span> <span class="mi">13</span><span class="p">:</span> <span class="s1">'thirteen'</span><span class="p">,</span>
<span class="mi">14</span><span class="p">:</span> <span class="s1">'fourteen'</span><span class="p">,</span> <span class="mi">15</span><span class="p">:</span> <span class="s1">'fifteen'</span><span class="p">,</span> <span class="mi">16</span><span class="p">:</span> <span class="s1">'sixteen'</span><span class="p">,</span>
<span class="mi">17</span><span class="p">:</span> <span class="s1">'seventeen'</span><span class="p">,</span> <span class="mi">18</span><span class="p">:</span> <span class="s1">'eighteen'</span><span class="p">,</span> <span class="mi">19</span><span class="p">:</span> <span class="s1">'nineteen'</span><span class="p">}[</span><span class="n">n</span><span class="p">]</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">{</span><span class="mi">2</span><span class="p">:</span> <span class="s1">&#39;twenty&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="s1">&#39;thirty&#39;</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s1">&#39;forty&#39;</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s1">&#39;fifty&#39;</span><span class="p">,</span>
<span class="mi">6</span><span class="p">:</span> <span class="s1">&#39;sixty&#39;</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s1">&#39;seventy&#39;</span><span class="p">,</span> <span class="mi">8</span><span class="p">:</span> <span class="s1">&#39;eighty&#39;</span><span class="p">,</span> <span class="mi">9</span><span class="p">:</span> <span class="s1">&#39;ninety&#39;</span><span class="p">}[</span><span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">)]</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">{</span><span class="mi">2</span><span class="p">:</span> <span class="s1">'twenty'</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="s1">'thirty'</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s1">'forty'</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s1">'fifty'</span><span class="p">,</span>
<span class="mi">6</span><span class="p">:</span> <span class="s1">'sixty'</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s1">'seventy'</span><span class="p">,</span> <span class="mi">8</span><span class="p">:</span> <span class="s1">'eighty'</span><span class="p">,</span> <span class="mi">9</span><span class="p">:</span> <span class="s1">'ninety'</span><span class="p">}[</span><span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">)]</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">b</span><span class="p">))</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s1">&#39;-&#39;</span> <span class="o">+</span> <span class="n">b</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s1">'-'</span> <span class="o">+</span> <span class="n">b</span>
<span class="k">def</span> <span class="nf">triple_digit_integer_to_spoken_language</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">a</span> <span class="o">=</span> <span class="n">single_digit_integer_to_spoken_language</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">))</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">b</span><span class="p">))</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">b</span><span class="p">:</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s2">&quot; hundred&quot;</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s2">&quot; hundred and &quot;</span> <span class="o">+</span> <span class="n">b</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s2">" hundred"</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s2">" hundred and "</span> <span class="o">+</span> <span class="n">b</span>
<span class="k">def</span> <span class="nf">four_digit_integer_to_spoken_language</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">a</span> <span class="o">=</span> <span class="n">single_digit_integer_to_spoken_language</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">))</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">b</span><span class="p">))</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s2">&quot; thousand &quot;</span> <span class="o">+</span> <span class="n">b</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="s2">" thousand "</span> <span class="o">+</span> <span class="n">b</span>
<span class="k">def</span> <span class="nf">integer_to_spoken_language</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="n">l</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
@@ -11843,77 +11836,60 @@ div#notebook {
<span class="k">elif</span> <span class="n">l</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
<span class="k">return</span> <span class="n">four_digit_integer_to_spoken_language</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Length not supported.&quot;</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Length not supported."</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;five&#39;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">19</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;nineteen&#39;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">21</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;twenty-one&#39;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">210</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;two hundred and ten&#39;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">3000</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;three thousand &#39;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">8333</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;eight thousand three hundred and thirty-three&#39;</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'five'</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">19</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'nineteen'</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">21</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'twenty-one'</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">210</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'two hundred and ten'</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">3000</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'three thousand '</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="mi">8333</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'eight thousand three hundred and thirty-three'</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>Okay, I won't win a code golf contest but at least we can get the solution now.</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=" highlight hl-ipython3"><pre><span></span><span class="n">l</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">integer_to_spoken_language</span><span class="p">(</span><span class="n">i</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="mi">1</span><span class="p">,</span> <span class="mi">1001</span><span class="p">)])</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">))</span>
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">l</span> <span class="o">=</span> <span class="nb">len</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">integer_to_spoken_language</span><span class="p">(</span><span class="n">i</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="mi">1</span><span class="p">,</span> <span class="mi">1001</span><span class="p">)])</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
<span class="k">assert</span><span class="p">(</span><span class="n">l</span> <span class="o">==</span> <span class="mi">21124</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">l</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>21124
</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>Made the classical fourty/forty error I have already done four years ago. Some things don't change. Also I still do not really like this problem. The Haskell solution is actually way easier to read this time.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>