<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dreamshire &#187; Solutions 10-19</title>
	<atom:link href="http://blog.dreamshire.com/category/project-euler-solutions/project-euler-solutions-10-19/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dreamshire.com</link>
	<description>Showing what's behind the curtain</description>
	<lastBuildDate>Wed, 01 Sep 2010 02:23:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Project Euler Problem 12 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/19/project-euler-problem-12-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/19/project-euler-problem-12-solution/#comments</comments>
		<pubDate>Tue, 19 May 2009 08:54:10 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Prime Numbers]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1289</guid>
		<description><![CDATA[What is the value of the first triangle number to have over five hundred divisors?]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>The sequence of triangle numbers is generated by adding the natural numbers. So the 7<sup>th</sup> triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:</p>
<p style="text-align:center;">1, 3, 6, 10, 15, 21, 28, 36, 45, 55, &#8230;</p>
<p>Let us list the factors of the first seven triangle numbers:</p>
<blockquote style="font-family:courier new;"><p><b>&nbsp;1</b>: 1<br />
<b>&nbsp;3</b>: 1,3<br />
<b>&nbsp;6</b>: 1,2,3,6<br />
<b>10</b>: 1,2,5,10<br />
<b>15</b>: 1,3,5,15<br />
<b>21</b>: 1,3,7,21<br />
<b>28</b>: 1,2,4,7,14,28</p></blockquote>
<p>We can see that 28 is the first triangle number to have over five divisors.</p>
<p>What is the value of the first triangle number to have over five hundred divisors?</p>
<h4><u>Analysis</u></h4>
<p>Our algorithm for solving this one was improved nicely by a detailed explanation provided by a Project Euler moderator named &#8216;rayfil&#8217;.  His wonderful explanation is published as a PDF document that is available after you solve the problem.  What follows is our own interpretation written in Python.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> expx<span style="color: black;">&#40;</span>n,p<span style="color: black;">&#41;</span>:
  exp=<span style="color: #ff4500;">1</span>
  <span style="color: #ff7700;font-weight:bold;">while</span> n <span style="color: #66cc66;">%</span> p == <span style="color: #ff4500;">0</span>: 
    exp+=<span style="color: #ff4500;">1</span><span style="color: #66cc66;">;</span> 
    n = n/p
  <span style="color: #ff7700;font-weight:bold;">return</span> n,exp
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> prime_exp<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
  dx = <span style="color: #ff4500;">1</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> p <span style="color: #ff7700;font-weight:bold;">in</span> primes: 
    <span style="color: #ff7700;font-weight:bold;">if</span> p<span style="color: #66cc66;">*</span>p <span style="color: #66cc66;">&gt;</span> n: <span style="color: #ff7700;font-weight:bold;">return</span> dx <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">2</span> 
    n,exp=expx<span style="color: black;">&#40;</span>n,p<span style="color: black;">&#41;</span>
    dx<span style="color: #66cc66;">*</span>= exp
    <span style="color: #ff7700;font-weight:bold;">if</span> n==<span style="color: #ff4500;">1</span>: <span style="color: #ff7700;font-weight:bold;">break</span>
  <span style="color: #ff7700;font-weight:bold;">return</span> dx
&nbsp;
primes = <span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span>, <span style="color: #ff4500;">5</span>, <span style="color: #ff4500;">7</span>, <span style="color: #ff4500;">11</span>, <span style="color: #ff4500;">13</span>, <span style="color: #ff4500;">17</span>, <span style="color: #ff4500;">19</span>, <span style="color: #ff4500;">23</span>, <span style="color: #ff4500;">29</span><span style="color: black;">&#93;</span>
nx=<span style="color: #ff4500;">3</span>
dx=<span style="color: #ff4500;">2</span> 
ndiv=<span style="color: #ff4500;">0</span>
max_div = <span style="color: #ff4500;">500</span>
<span style="color: #ff7700;font-weight:bold;">while</span> ndiv <span style="color: #66cc66;">&lt;</span>= max_div: 
  nx+= <span style="color: #ff4500;">1</span> 
  dxx = prime_exp<span style="color: black;">&#40;</span>nx/<span style="color: #ff4500;">2</span> <span style="color: #ff7700;font-weight:bold;">if</span> nx <span style="color: #66cc66;">%</span> <span style="color: #ff4500;">2</span> == <span style="color: #ff4500;">0</span> <span style="color: #ff7700;font-weight:bold;">else</span> nx<span style="color: black;">&#41;</span>
  ndiv, dx = dx<span style="color: #66cc66;">*</span>dxx, dxx 
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Answer to PE12 = &quot;</span>, nx<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>nx-<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">2</span></pre></div></div>

<h4><u>Comments</u></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/19/project-euler-problem-12-solution/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 14 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/18/project-euler-problem-14-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/18/project-euler-problem-14-solution/#comments</comments>
		<pubDate>Mon, 18 May 2009 21:18:24 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1296</guid>
		<description><![CDATA[Find the longest sequence using a starting number under one million.]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>The following iterative sequence is defined for the set of positive integers:</p>
<p style="margin-left:50px;"><var>n</var> &rarr; <var>n</var>/2 (<var>n</var> is even)<br />
<var>n</var> &rarr; 3<var>n</var> + 1 (<var>n</var> is odd)</p>
<p>Using the rule above and starting with 13, we generate the following sequence:</p>
<div style="text-align:center;">13 &rarr; 40 &rarr; 20 &rarr; 10 &rarr; 5 &rarr; 16 &rarr; 8 &rarr; 4 &rarr; 2 &rarr; 1</div>
<p>It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.</p>
<p>Which starting number, under one million, produces the longest chain?</p>
<p class="info"><b>NOTE:</b> Once the chain starts the terms are allowed to go above one million.</p>
<h4><u>Analysis</u></h4>
<p>Brute forcing a solution may break the one minute rule especially if the limit of this problem changes.  Two ways we improved the performance to mere seconds was to cache the chain lengths and only check odd <em>n</em> from half the range, in this case 500,001 to 1,000,000.  We can do this because the results are symmetrical either side of the half-way point.</p>
<h4><u>Solution</u></h4>
<p>Runs < 3 seconds in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">cache = <span style="color: black;">&#123;</span> <span style="color: #ff4500;">1</span>: <span style="color: #ff4500;">1</span> <span style="color: black;">&#125;</span>
<span style="color: #ff7700;font-weight:bold;">def</span> chain<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> n <span style="color: #ff7700;font-weight:bold;">in</span> cache:
        cache<span style="color: black;">&#91;</span>n<span style="color: black;">&#93;</span> = chain<span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span><span style="color: #66cc66;">*</span>n+<span style="color: #ff4500;">1</span> <span style="color: #ff7700;font-weight:bold;">if</span> n<span style="color: #66cc66;">%</span>2 <span style="color: #ff7700;font-weight:bold;">else</span> n/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> + <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> cache<span style="color: black;">&#91;</span>n<span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #008000;">max</span> = <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">500001</span>,<span style="color: #ff4500;">1000000</span>,<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> chain<span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #008000;">max</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>: <span style="color: #008000;">max</span> = <span style="color: black;">&#40;</span>i,chain<span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Answer to PE14 = &quot;</span>, <span style="color: #008000;">max</span></pre></div></div>

<h4><u>Comments</u></h4>
<p>This solution prints both the starting number and chain length</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/18/project-euler-problem-14-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 16 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/18/project-euler-problem-16-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/18/project-euler-problem-16-solution/#comments</comments>
		<pubDate>Mon, 18 May 2009 19:26:22 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Large Integers]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[Strings]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1299</guid>
		<description><![CDATA[What is the sum of the digits of the number 2^1000?]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>2<sup>15</sup> = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.</p>
<p>What is the sum of the digits of the number 2<sup>1000</sup>?</p>
<h4><u>Analysis</u></h4>
<p>Calculate 2<sup>1000</sup>, split the digits and add them together.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Answer to PE16 = &quot;</span>, <span style="color: #008000;">sum</span><span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">1000</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<h4><u>Comments</u></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/18/project-euler-problem-16-solution/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 13 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/18/project-euler-problem-13-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/18/project-euler-problem-13-solution/#comments</comments>
		<pubDate>Mon, 18 May 2009 18:08:33 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Large Integers]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[Strings]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1290</guid>
		<description><![CDATA[Find the first ten digits of the sum of one-hundred 50-digit numbers.]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.</p>
<div style='font-family:courier new;font-size:10pt;text-align:center;'>
37107287533902102798797998220837590246510135740250<br />
46376937677490009712648124896970078050417018260538<br />
&#8230; {data continues}
</div>
<h4><u>Analysis</u></h4>
<p>Only the first 11 digits of each of the 100 numbers are required for the first 10 digits of the sum.  The numbers were written to a file, pe13.txt, to save space.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">f = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'pe13.txt'</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
total = <span style="color: #008000;">sum</span><span style="color: black;">&#40;</span> <span style="color: black;">&#91;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#91;</span>:<span style="color: #ff4500;">11</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> f<span style="color: black;">&#93;</span> <span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Answer to PE13 &quot;</span>, <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>total<span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>:<span style="color: #ff4500;">10</span><span style="color: black;">&#93;</span></pre></div></div>

<h4><u>Comments</u></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/18/project-euler-problem-13-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 11 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/18/project-euler-problem-11-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/18/project-euler-problem-11-solution/#comments</comments>
		<pubDate>Mon, 18 May 2009 08:38:53 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1285</guid>
		<description><![CDATA[What is the greatest product of four numbers on the same straight line in the 20 by 20 grid?]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>In the 20&times;20 grid below, four numbers along a diagonal line have been marked in red.</p>
<p style="font-family:courier new;text-align:center;font-size:10pt;">
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08<br />
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00<br />
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65<br />
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91<br />
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80<br />
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50<br />
32 98 81 28 64 23 67 10 <span style="color:#ff0000;"><b>26</b></span> 38 40 67 59 54 70 66 18 38 64 70<br />
67 26 20 68 02 62 12 20 95 <span style="color:#ff0000;"><b>63</b></span> 94 39 63 08 40 91 66 49 94 21<br />
24 55 58 05 66 73 99 26 97 17 <span style="color:#ff0000;"><b>78</b></span> 78 96 83 14 88 34 89 63 72<br />
21 36 23 09 75 00 76 44 20 45 35 <span style="color:#ff0000;"><b>14</b></span> 00 61 33 97 34 31 33 95<br />
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92<br />
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57<br />
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58<br />
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40<br />
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66<br />
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69<br />
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36<br />
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16<br />
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54<br />
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
</p>
<p>The product of these numbers is 26 &times; 63 &times; 78 &times; 14 = 1788696.</p>
<p>What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in the 20&times;20 grid?</p>
<h4><u>Analysis</u></h4>
<p>No other option but to load matrix into an array and iterate through the rows, columns and diagonals to find four consecutive cells that produce a maximum product.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">n = <span style="color: black;">&#91;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">8</span>,<span style="color: #ff4500;">2</span>,<span style="color: #ff4500;">22</span>,<span style="color: #ff4500;">97</span>,<span style="color: #ff4500;">38</span>,<span style="color: #ff4500;">15</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">75</span>,<span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">7</span>,<span style="color: #ff4500;">78</span>,<span style="color: #ff4500;">52</span>,<span style="color: #ff4500;">12</span>,<span style="color: #ff4500;">50</span>,<span style="color: #ff4500;">77</span>,<span style="color: #ff4500;">91</span>,<span style="color: #ff4500;">8</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">49</span>,<span style="color: #ff4500;">49</span>,<span style="color: #ff4500;">99</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">81</span>,<span style="color: #ff4500;">18</span>,<span style="color: #ff4500;">57</span>,<span style="color: #ff4500;">60</span>,<span style="color: #ff4500;">87</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">98</span>,<span style="color: #ff4500;">43</span>,<span style="color: #ff4500;">69</span>,<span style="color: #ff4500;">48</span>,<span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">56</span>,<span style="color: #ff4500;">62</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">81</span>,<span style="color: #ff4500;">49</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">73</span>,<span style="color: #ff4500;">55</span>,<span style="color: #ff4500;">79</span>,<span style="color: #ff4500;">14</span>,<span style="color: #ff4500;">29</span>,<span style="color: #ff4500;">93</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">53</span>,<span style="color: #ff4500;">88</span>,<span style="color: #ff4500;">30</span>,<span style="color: #ff4500;">3</span>,<span style="color: #ff4500;">49</span>,<span style="color: #ff4500;">13</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">65</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">52</span>,<span style="color: #ff4500;">70</span>,<span style="color: #ff4500;">95</span>,<span style="color: #ff4500;">23</span>,<span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">60</span>,<span style="color: #ff4500;">11</span>,<span style="color: #ff4500;">42</span>,<span style="color: #ff4500;">69</span>,<span style="color: #ff4500;">24</span>,<span style="color: #ff4500;">68</span>,<span style="color: #ff4500;">56</span>,<span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">32</span>,<span style="color: #ff4500;">56</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">37</span>,<span style="color: #ff4500;">2</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">91</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">22</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">51</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">63</span>,<span style="color: #ff4500;">89</span>,<span style="color: #ff4500;">41</span>,<span style="color: #ff4500;">92</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">54</span>,<span style="color: #ff4500;">22</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">28</span>,<span style="color: #ff4500;">66</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">13</span>,<span style="color: #ff4500;">80</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">24</span>,<span style="color: #ff4500;">47</span>,<span style="color: #ff4500;">32</span>,<span style="color: #ff4500;">60</span>,<span style="color: #ff4500;">99</span>,<span style="color: #ff4500;">3</span>,<span style="color: #ff4500;">45</span>,<span style="color: #ff4500;">2</span>,<span style="color: #ff4500;">44</span>,<span style="color: #ff4500;">75</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">53</span>,<span style="color: #ff4500;">78</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">84</span>,<span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">35</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">12</span>,<span style="color: #ff4500;">50</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">32</span>,<span style="color: #ff4500;">98</span>,<span style="color: #ff4500;">81</span>,<span style="color: #ff4500;">28</span>,<span style="color: #ff4500;">64</span>,<span style="color: #ff4500;">23</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">10</span>,<span style="color: #ff4500;">26</span>,<span style="color: #ff4500;">38</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">59</span>,<span style="color: #ff4500;">54</span>,<span style="color: #ff4500;">70</span>,<span style="color: #ff4500;">66</span>,<span style="color: #ff4500;">18</span>,<span style="color: #ff4500;">38</span>,<span style="color: #ff4500;">64</span>,<span style="color: #ff4500;">70</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">26</span>,<span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">68</span>,<span style="color: #ff4500;">2</span>,<span style="color: #ff4500;">62</span>,<span style="color: #ff4500;">12</span>,<span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">95</span>,<span style="color: #ff4500;">63</span>,<span style="color: #ff4500;">94</span>,<span style="color: #ff4500;">39</span>,<span style="color: #ff4500;">63</span>,<span style="color: #ff4500;">8</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">91</span>,<span style="color: #ff4500;">66</span>,<span style="color: #ff4500;">49</span>,<span style="color: #ff4500;">94</span>,<span style="color: #ff4500;">21</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">24</span>,<span style="color: #ff4500;">55</span>,<span style="color: #ff4500;">58</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">66</span>,<span style="color: #ff4500;">73</span>,<span style="color: #ff4500;">99</span>,<span style="color: #ff4500;">26</span>,<span style="color: #ff4500;">97</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">78</span>,<span style="color: #ff4500;">78</span>,<span style="color: #ff4500;">96</span>,<span style="color: #ff4500;">83</span>,<span style="color: #ff4500;">14</span>,<span style="color: #ff4500;">88</span>,<span style="color: #ff4500;">34</span>,<span style="color: #ff4500;">89</span>,<span style="color: #ff4500;">63</span>,<span style="color: #ff4500;">72</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">21</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">23</span>,<span style="color: #ff4500;">9</span>,<span style="color: #ff4500;">75</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">76</span>,<span style="color: #ff4500;">44</span>,<span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">45</span>,<span style="color: #ff4500;">35</span>,<span style="color: #ff4500;">14</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">61</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">97</span>,<span style="color: #ff4500;">34</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">95</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">78</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">53</span>,<span style="color: #ff4500;">28</span>,<span style="color: #ff4500;">22</span>,<span style="color: #ff4500;">75</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">15</span>,<span style="color: #ff4500;">94</span>,<span style="color: #ff4500;">3</span>,<span style="color: #ff4500;">80</span>,<span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">62</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">14</span>,<span style="color: #ff4500;">9</span>,<span style="color: #ff4500;">53</span>,<span style="color: #ff4500;">56</span>,<span style="color: #ff4500;">92</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">39</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">42</span>,<span style="color: #ff4500;">96</span>,<span style="color: #ff4500;">35</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">47</span>,<span style="color: #ff4500;">55</span>,<span style="color: #ff4500;">58</span>,<span style="color: #ff4500;">88</span>,<span style="color: #ff4500;">24</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">54</span>,<span style="color: #ff4500;">24</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">29</span>,<span style="color: #ff4500;">85</span>,<span style="color: #ff4500;">57</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">86</span>,<span style="color: #ff4500;">56</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">48</span>,<span style="color: #ff4500;">35</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">89</span>,<span style="color: #ff4500;">7</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">44</span>,<span style="color: #ff4500;">44</span>,<span style="color: #ff4500;">37</span>,<span style="color: #ff4500;">44</span>,<span style="color: #ff4500;">60</span>,<span style="color: #ff4500;">21</span>,<span style="color: #ff4500;">58</span>,<span style="color: #ff4500;">51</span>,<span style="color: #ff4500;">54</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">58</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">19</span>,<span style="color: #ff4500;">80</span>,<span style="color: #ff4500;">81</span>,<span style="color: #ff4500;">68</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">94</span>,<span style="color: #ff4500;">47</span>,<span style="color: #ff4500;">69</span>,<span style="color: #ff4500;">28</span>,<span style="color: #ff4500;">73</span>,<span style="color: #ff4500;">92</span>,<span style="color: #ff4500;">13</span>,<span style="color: #ff4500;">86</span>,<span style="color: #ff4500;">52</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">77</span>,<span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">89</span>,<span style="color: #ff4500;">55</span>,<span style="color: #ff4500;">40</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">52</span>,<span style="color: #ff4500;">8</span>,<span style="color: #ff4500;">83</span>,<span style="color: #ff4500;">97</span>,<span style="color: #ff4500;">35</span>,<span style="color: #ff4500;">99</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">7</span>,<span style="color: #ff4500;">97</span>,<span style="color: #ff4500;">57</span>,<span style="color: #ff4500;">32</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">26</span>,<span style="color: #ff4500;">26</span>,<span style="color: #ff4500;">79</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">27</span>,<span style="color: #ff4500;">98</span>,<span style="color: #ff4500;">66</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">88</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">68</span>,<span style="color: #ff4500;">87</span>,<span style="color: #ff4500;">57</span>,<span style="color: #ff4500;">62</span>,<span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">72</span>,<span style="color: #ff4500;">3</span>,<span style="color: #ff4500;">46</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">46</span>,<span style="color: #ff4500;">55</span>,<span style="color: #ff4500;">12</span>,<span style="color: #ff4500;">32</span>,<span style="color: #ff4500;">63</span>,<span style="color: #ff4500;">93</span>,<span style="color: #ff4500;">53</span>,<span style="color: #ff4500;">69</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">42</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">73</span>,<span style="color: #ff4500;">38</span>,<span style="color: #ff4500;">25</span>,<span style="color: #ff4500;">39</span>,<span style="color: #ff4500;">11</span>,<span style="color: #ff4500;">24</span>,<span style="color: #ff4500;">94</span>,<span style="color: #ff4500;">72</span>,<span style="color: #ff4500;">18</span>,<span style="color: #ff4500;">8</span>,<span style="color: #ff4500;">46</span>,<span style="color: #ff4500;">29</span>,<span style="color: #ff4500;">32</span>,<span style="color: #ff4500;">40</span>,<span style="color: #ff4500;">62</span>,<span style="color: #ff4500;">76</span>,<span style="color: #ff4500;">36</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">69</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">41</span>,<span style="color: #ff4500;">72</span>,<span style="color: #ff4500;">30</span>,<span style="color: #ff4500;">23</span>,<span style="color: #ff4500;">88</span>,<span style="color: #ff4500;">34</span>,<span style="color: #ff4500;">62</span>,<span style="color: #ff4500;">99</span>,<span style="color: #ff4500;">69</span>,<span style="color: #ff4500;">82</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">59</span>,<span style="color: #ff4500;">85</span>,<span style="color: #ff4500;">74</span>,<span style="color: #ff4500;">4</span>,<span style="color: #ff4500;">36</span>,<span style="color: #ff4500;">16</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">20</span>,<span style="color: #ff4500;">73</span>,<span style="color: #ff4500;">35</span>,<span style="color: #ff4500;">29</span>,<span style="color: #ff4500;">78</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">90</span>,<span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">74</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">49</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">48</span>,<span style="color: #ff4500;">86</span>,<span style="color: #ff4500;">81</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">23</span>,<span style="color: #ff4500;">57</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">54</span><span style="color: black;">&#93;</span>,
<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">70</span>,<span style="color: #ff4500;">54</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">83</span>,<span style="color: #ff4500;">51</span>,<span style="color: #ff4500;">54</span>,<span style="color: #ff4500;">69</span>,<span style="color: #ff4500;">16</span>,<span style="color: #ff4500;">92</span>,<span style="color: #ff4500;">33</span>,<span style="color: #ff4500;">48</span>,<span style="color: #ff4500;">61</span>,<span style="color: #ff4500;">43</span>,<span style="color: #ff4500;">52</span>,<span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">89</span>,<span style="color: #ff4500;">19</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">48</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>
&nbsp;
maxp = <span style="color: #ff4500;">0</span>
rows, cols, <span style="color: #dc143c;">token</span> = <span style="color: #ff4500;">20</span>, <span style="color: #ff4500;">20</span>, <span style="color: #ff4500;">4</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>rows<span style="color: black;">&#41;</span>:
  <span style="color: #ff7700;font-weight:bold;">for</span> j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>cols-<span style="color: #dc143c;">token</span>+<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
    phv = <span style="color: #008000;">max</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span>,
              n<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> i<span style="color: #66cc66;">&lt;</span>rows-<span style="color: #dc143c;">token</span>:
      pd = <span style="color: #008000;">max</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span>,
               n<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j+<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> n<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    maxp = <span style="color: #008000;">max</span><span style="color: black;">&#40;</span>maxp, phv, pd<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Answer to PE11 = &quot;</span>,maxp</pre></div></div>

<h4><u>Comments</u></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/18/project-euler-problem-11-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 17 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/13/project-euler-problem-17-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/13/project-euler-problem-17-solution/#comments</comments>
		<pubDate>Wed, 13 May 2009 21:44:56 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[Strings]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1210</guid>
		<description><![CDATA[How many letters would be needed to write all the numbers in words from 1 to 1000?]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<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>
<strong>NOTE:</strong> 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 &#8220;and&#8221; when writing out numbers is in compliance with British usage.</p>
<h4><u>Analysis</u></h4>
<p>Converted the integers from 1 to 999 to the written equivalent, removed spaces and hyphens, added the character count for each one, including &#8220;onethousand&#8221;.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Perl.</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #0000ff;">@D</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">..</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">30</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">40</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">50</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">60</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">80</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">90</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">qw</span><span style="color: #339933;">|</span>
 zero one two three four five six seven eight nine ten
 eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen
 twenty thirty forty fifty sixty seventy eighty ninety<span style="color: #339933;">|;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #0000ff;">$i</span> <span style="color: #009900;">&#40;</span>1<span style="color: #339933;">..</span>999<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #0000ff;">$x</span><span style="color: #339933;">=</span> num2en<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$x</span><span style="color: #339933;">=~</span><span style="color: #000066;">s</span><span style="color: #339933;">/</span><span style="color: #009900;">&#91;</span>s<span style="color: #339933;">-</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">//</span>g<span style="color: #339933;">;</span>
  <span style="color: #0000ff;">$l</span><span style="color: #339933;">+=</span> <span style="color: #000066;">length</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Answer to PE17 = &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$l</span><span style="color: #339933;">+</span><span style="color: #000066;">length</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'onethousand'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> num2en <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$_</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">return</span> <span style="color: #0000ff;">$D</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$x</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">if</span> <span style="color: #000066;">defined</span> <span style="color: #0000ff;">$D</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$x</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">return</span>  <span style="color: #0000ff;">$D</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$1</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'0'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'-'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$D</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$2</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$x</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">m/^(.)(.)$/</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$x</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">m/^(.)(..)$/</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$h</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$rest</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$D{$1} hundred&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">return</span> <span style="color: #0000ff;">$h</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$rest</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'00'</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">return</span> <span style="color: #ff0000;">&quot;$h and &quot;</span> <span style="color: #339933;">.</span> num2en<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$rest</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h4><u>Comments</u></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/13/project-euler-problem-17-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 10 Solution</title>
		<link>http://blog.dreamshire.com/2009/05/08/project-euler-problem-10-solution/</link>
		<comments>http://blog.dreamshire.com/2009/05/08/project-euler-problem-10-solution/#comments</comments>
		<pubDate>Fri, 08 May 2009 21:15:42 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Prime Numbers]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=1174</guid>
		<description><![CDATA[Calculate the sum of all the primes below two million.]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.</p>
<p>Find the sum of all the primes below two million.</p>
<h4><u>Analysis</u></h4>
<p>Sieve the prime numbers less than 2,000,000 and sum them.  Having a fast algorithm to sieve primes helps a solution run under a few seconds.  </p>
<h4><u>Solution</u></h4>
<p>Runs < 2 seconds in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">limit = <span style="color: #ff4500;">2000000</span>
sieve = <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>limit<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>limit<span style="color: #66cc66;">**</span>.5<span style="color: black;">&#41;</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
  <span style="color: #ff7700;font-weight:bold;">if</span> sieve<span style="color: black;">&#91;</span>n<span style="color: black;">&#93;</span>: 
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>n <span style="color: #66cc66;">**</span> <span style="color: #ff4500;">2</span>, limit, n<span style="color: black;">&#41;</span>: 
      sieve<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = <span style="color: #ff4500;">0</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;answer to PE10 = &quot;</span>,<span style="color: #008000;">sum</span><span style="color: black;">&#40;</span>sieve<span style="color: black;">&#41;</span></pre></div></div>

<h4><u>Comments</u></h4>
<p>This problem changed from a limit of one million in 2008.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/05/08/project-euler-problem-10-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 15 Solution</title>
		<link>http://blog.dreamshire.com/2009/04/19/project-euler-problem-15-solution/</link>
		<comments>http://blog.dreamshire.com/2009/04/19/project-euler-problem-15-solution/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 06:07:44 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[factorials]]></category>
		<category><![CDATA[Large Integers]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=770</guid>
		<description><![CDATA[Starting in the top left corner in a 20 by 20 grid, how many routes are there to the bottom right corner?]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>Starting in the top left corner of a 2&times;2 grid, there are 6 routes (without backtracking) to the bottom right corner.</p>
<div style="text-align:center;">
<img src="http://www.projecteuler.net/project/images/p_015.gif" alt="" />
</div>
<p>How many routes are there through a 20&times;20 grid?</p>
<h4><u>Analysis</u></h4>
<p>This question has been posed as: &#8220;Starting at the top left corner, how many ways through town are possible using only one-way streets and ending at the bottom right corner of a n x n grid?&#8221;</p>
<p>The solution is the central binomial coefficient or the center number in the 2n+1 row of pascal&#8217;s triangle.  The formula in general for an n x m grid is (n+m)! / (n!m!).  Any combination using nDs and mLs would be a valid move.</p>
<p>In the example provided in the problem description there would be (2+2)! or 24 possible moves, but many would be indistinguishable, and we would have to divide by (2! &middot; 2!) to eliminate them.  So, (2 + 2)! / (2! &middot; 2!) = 24 / 4 = 6.  Namely, LLDD, LDLD, LDDL, DLLD, DLDL and DDLL.  By indistinguishable we mean DDL<sub>1</sub>L<sub>2</sub> is the same move as DDL<sub>2</sub>L<sub>1</sub>.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Python.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">f = <span style="color: #ff7700;font-weight:bold;">lambda</span> n:<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>n<span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">or</span> f<span style="color: black;">&#40;</span>n-<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span>n
n = <span style="color: #ff4500;">20</span>
m = <span style="color: #ff4500;">20</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Answer to PE15 = &quot;</span>, f<span style="color: black;">&#40;</span>n+m<span style="color: black;">&#41;</span> / <span style="color: black;">&#40;</span> f<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span>f<span style="color: black;">&#40;</span>m<span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span></pre></div></div>

<h4><u>Comments</u></h4>
<p>The OEIS for this series is <a href="http://www.research.att.com/~njas/sequences/A000984">A000984</a><br />
If we added the condition &#8220;which do not pass below the diagonal&#8221; to our problem statement, we would use a Catalan number.  It is calculated as 2n! / n! / (n+1)!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/04/19/project-euler-problem-15-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 18 Solution</title>
		<link>http://blog.dreamshire.com/2009/04/01/project-euler-problem-18-solution/</link>
		<comments>http://blog.dreamshire.com/2009/04/01/project-euler-problem-18-solution/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 01:53:36 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Dynamic Programming (DP)]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=314</guid>
		<description><![CDATA[Find the maximum sum travelling from the top of the triangle to the base.]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.</p>
<p>3<br />
7 5<br />
2 4 6<br />
8 5 9 3</p>
<p>That is, 3 + 7 + 4 + 9 = 23.</p>
<p>Find the maximum total from top to bottom of the triangle below:</p>
<p>75<br />
95 64<br />
17 47 82<br />
18 35 87 10<br />
20 04 82 47 65<br />
<em>&#8230; {data continues} &#8230;</em></p>
<p>NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, Problem 67, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o)</p>
<h4><u>Analysis</u></h4>
<p>To solve this problem and problem 67, which is much larger, start the search from the bottom to the top, adding the maximums along the way. This will &#8220;bubble&#8221; the maximum total to the top of the pyramid.</p>
<p>Let&#8217;s follow this technique, step by step, with the 4 row triangle example to show how this works.</p>
<p>3<br />
7 5<br />
2 4 6<br />
8 5 9 3<br />
OK, starting at the bottom,<br />
We look at 8 and 5, pick the maximum, 8 in this case, and replace the 2 in the previous row with their sum 10.<br />
We look next at 5 and 9, pick the maximum, 9, and replace the 4 in the previous row with their sum 13.<br />
We look lastly at 9 and 3, pick the maximum, 9, and replace the 6 in the previous row with their sum 15.<br />
Now our array looks like:<br />
3<br />
7 5<br />
10 13 15</p>
<p>Let&#8217;s do it again.  Take the larger of 10 and 13 and add it to 7 making 20.<br />
Take the larger of 13 and 15 and add it to 5 making 20.<br />
Now our array looks like:<br />
3<br />
20 20</p>
<p>At last we take the larger of 20 and 20 (yes, I know they&#8217;re the same) and add it to 3 making 23.<br />
And our array looks like:<br />
23<br />
The maximum total path in the triangle.</p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Perl.</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@rows</span> <span style="color: #339933;">=</span> <span style="color: #000066;">map</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#91;</span><span style="color: #000066;">split</span> <span style="color: #339933;">/</span><span style="color: #000066;">s</span><span style="color: #339933;">/</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009999;">&lt;DATA&gt;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$nrows</span> <span style="color: #339933;">=</span>  <span style="color: #0000ff;">$#rows</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$nrows</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">for</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$j</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">..</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
    <span style="color: #0000ff;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$i</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$j</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> max_n<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$j</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$j</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Answer to PE18 = $rows[0][0]&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">__DATA__</span> 
<span style="color: #cc66cc;">3</span>
<span style="color: #cc66cc;">7</span> <span style="color: #cc66cc;">5</span>
<span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">6</span>
<span style="color: #cc66cc;">8</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">9</span> <span style="color: #cc66cc;">3</span></pre></div></div>

<h4><u>Comments</u></h4>
<ul>
<li>We’ve included the sample data as an example.</li>
<li>The first line of the program reads the data file, which is appended to the end of the program after the __DATA__ separator, into a two dimensional array named @rows.  $nrows is the last index of the array so in this case 3.</li>
<li>Check <a href="http://blog.dreamshire.com/2009/03/26/94/#min_n">here</a> for more information on the <em>max_n</em> function.</li>
<li>See also problem <a href="http://blog.dreamshire.com/2009/04/01/project-euler-problem-67-solution/">67</a>, <a href="http://">81</a>, 82 &amp; 83. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/04/01/project-euler-problem-18-solution/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Project Euler Problem 19 Solution</title>
		<link>http://blog.dreamshire.com/2009/03/26/project-euler-problem-19-solution/</link>
		<comments>http://blog.dreamshire.com/2009/03/26/project-euler-problem-19-solution/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 21:40:28 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Project Euler Solutions]]></category>
		<category><![CDATA[Solutions 10-19]]></category>
		<category><![CDATA[Dates]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Project Euler]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.dreamshire.com/?p=72</guid>
		<description><![CDATA[How many Sundays fell on the first of the month during the twentieth century?]]></description>
			<content:encoded><![CDATA[<h4><u>Problem Description</u></h4>
<p>You are given the following information, but you may prefer to do some research for yourself.</p>
<p>1 Jan 1900 was a Monday.<br />
Thirty days has September,<br />
April, June and November.<br />
All the rest have thirty-one,<br />
Saving February alone,<br />
Which has twenty-eight, rain or shine.<br />
And on leap years, twenty-nine. </p>
<p>A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.</p>
<p>How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?</p>
<h4><u>Analysis</u></h4>
<p>There are 1200 months (therefore 1200 firsts of the month) in 100 years (1/1/1901 – 12/31/2000).  One in every 7 days is a Sunday (or Monday, Tuesday, etc.)  which are (roughly) uniformly distributed over the date range.  An estimate of 1200/7 Sundays should be close to the answer.  As the date range widens this estimate becomes less precise.</p>
<p>We wrote a quick piece of JavaScript (great native calendar support) to prove it to ourselves. </p>
<h4><u>Solution</u></h4>
<p>Runs < 1 second in Javascript.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> count<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> y<span style="color: #339933;">=</span><span style="color: #CC0000;">1901</span><span style="color: #339933;">,</span> years<span style="color: #339933;">=</span><span style="color: #CC0000;">100</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> m<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> m<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">12</span><span style="color: #339933;">*</span>years<span style="color: #339933;">;</span> m<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>y<span style="color: #339933;">,</span>m<span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getDay</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> count <span style="color: #339933;">++;</span>
&nbsp;
document.<span style="color: #000066; font-weight: bold;">write</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'answer to PE19 = '</span> <span style="color: #339933;">+</span> count <span style="color: #339933;">+</span> <span style="color: #3366CC;">' Sundays'</span><span style="color: #009900;">&#41;</span></pre></div></div>

<h4><u>Comments</u></h4>
<p>JavaScript numbers the months starting from 0 to 11 so month m=12 is the 1st month (January) of the next year (1902) and so month m=24 is January 1903.  Also, getDay() returns 0 for Sunday.  As an exercise you could pose questions for other date ranges and other days of the week and compare it to the estimating formula.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dreamshire.com/2009/03/26/project-euler-problem-19-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
