<?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>Dan&#039;s Thoughts</title>
	<atom:link href="http://danboykis.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://danboykis.com</link>
	<description>Thinking somewhat carefully</description>
	<lastBuildDate>Thu, 12 Aug 2010 21:28:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Converting a regular BIND ZONE to DNSSEC</title>
		<link>http://danboykis.com/2010/06/converting-a-regular-bind-zone-to-dnssec/</link>
		<comments>http://danboykis.com/2010/06/converting-a-regular-bind-zone-to-dnssec/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 02:57:08 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[dns]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=2070</guid>
		<description><![CDATA[Recently I wanted to sign a regular zone in BIND9.7. Google wasn't very helpful so I thought I'd write up a little bit about it here. My /etc/named.conf looks like this: zone &#34;myzone.com&#34; IN &#123; type master; file &#34;/var/named/zones/myzone.com/myzone.com&#34;; notify no; &#125;; I want to keep my dnssec zones in a separate directory. # mkdir [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I wanted to sign a regular zone in BIND9.7. Google wasn't very helpful so I thought I'd write up a little bit about it here.</p>
<p>My <strong>/etc/named.conf</strong> looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">zone <span style="color: #ff0000;">&quot;myzone.com&quot;</span> IN <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #7a0874; font-weight: bold;">type</span> master;
        <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #ff0000;">&quot;/var/named/zones/myzone.com/myzone.com&quot;</span>;
        notify no;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></div></div>

<p>I want to keep my dnssec zones in a separate directory.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># mkdir -p /var/named/signed/myzone.com/
# cp /var/named/zones/myzone.com/myzone.com /var/named/signed/myzone.com/</pre></div></div>

<p>Now I sign the zone.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># cd /var/named/signed/myzone.com/
# dnssec-keygen -r /dev/urandom myzone.com
# dnssec-keygen -r /dev/urandom -f KEY myzone.com
# dnssec-signzone -r /dev/urandom -S myzone.com
# ls 
myzone.com         Kmyzone.com.+005+02971.key      Kmyzone.com.+005+29262.private
myzone.com.signed  Kmyzone.com.+005+02971.private
dsset-myzone.com.  Kmyzone.com.+005+29262.key</pre></div></div>

<p>Finally I want to change the <strong>named.conf</strong> to the <strong>myzone.com.signed</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">zone <span style="color: #ff0000;">&quot;myzone.com&quot;</span> IN <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #7a0874; font-weight: bold;">type</span> master;
        <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #ff0000;">&quot;/var/named/signed/myzone.com/myzone.com.signed&quot;</span>;
        notify no;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></div></div>

<p>Make sure that all the files are owned by user "named" and reload bind</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># chown -R named:named /var/named/signed
# /etc/init.d/named reload</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2010/06/converting-a-regular-bind-zone-to-dnssec/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using SVN with Git</title>
		<link>http://danboykis.com/2010/05/using-svn-with-git/</link>
		<comments>http://danboykis.com/2010/05/using-svn-with-git/#comments</comments>
		<pubDate>Tue, 25 May 2010 00:24:32 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=2032</guid>
		<description><![CDATA[Once I learned Git I never wanted to go back to the days of svn. The only problem is that SVN is used almost in every linux shop I worked for. Luckily there is git-svn. With git-svn I can just import an svn repositories and use git to browse, branch, merge etc. My typical workflow: [...]]]></description>
			<content:encoded><![CDATA[<p>Once I learned Git I never wanted to go back to the days of svn. The only problem is that SVN is used almost in every linux shop I worked for. Luckily there is <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn</a>. With git-svn I can just import an svn repositories and use git to browse, branch, merge etc. </p>
<p>My typical workflow:</p>
<p>1) Import the repository into git.</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">mkdir reponame &amp;&amp; cd reponame
git svn init -s https://svn.hostname.com/svn/reponame/
git svn fetch --fetch-all #If this step fails because the repo is huge, just run it again</pre></div></div>

<p>2) Get a branch to hack on</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">git br -a 
git co --track -b branchname remotes/branchname
git br -vv #I like -vv to see which branches are tracked and which are just local branches</pre></div></div>

<p>3) Keep up with svn commits:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">git svn fetch
git svn rebase</pre></div></div>

<blockquote><p>
 This fetches revisions from the SVN parent of the current HEAD and rebases the current (uncommitted to SVN) work against it.</p>
<p>This works similarly to svn update or git pull except that it preserves linear history with git rebase instead of git merge for ease of dcommitting with git svn.</p>
<p>This accepts all options that git svn fetch and git rebase accept. However, --fetch-all only fetches from the current [svn-remote], and not all [svn-remote] definitions.</p>
<p>Like git rebase; this requires that the working tree be clean and have no uncommitted changes.
</p></blockquote>
<p>4) Commit changes back to svn</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">git svn dcommit</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2010/05/using-svn-with-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sin(n) = -1 where n is an integer in radians</title>
		<link>http://danboykis.com/2010/05/sinn-1-where-n-is-an-integer-in-radians/</link>
		<comments>http://danboykis.com/2010/05/sinn-1-where-n-is-an-integer-in-radians/#comments</comments>
		<pubDate>Wed, 19 May 2010 21:55:38 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=2034</guid>
		<description><![CDATA[I saw a fun math problem on reddit the other day. find a number n, so that sin(n)=-1, where n is an integer in radians; so sin(270 degrees) doesn't count. Obviously it will never be exactly -1 but close enough for the difference to be lost in rounding. I need the argument of sin function [...]]]></description>
			<content:encoded><![CDATA[<p>I saw a fun math problem on <a href="http://www.reddit.com/r/math/comments/byooz/how_would_you_approach_this_problem_sinx1_where_x/">reddit</a> the other day.</p>
<p>find a number n, so that sin(n)=-1, where n is an integer in radians; so sin(270 degrees) doesn't count. Obviously it will never be exactly -1 but close enough for the difference to be lost in rounding.</p>
<img src='http://danboykis.com/wp-content/latex/7b6/7b618be876d252f14bdfac5e4b67c83b-ffffff-000000-0.png' alt='\sin(\frac{3\pi}{2} + 2\pi \cdot n) = -1' title='\sin(\frac{3\pi}{2} + 2\pi \cdot n) = -1' class='latex' /><br />
I need the argument of sin function to be as close to an integer as possible. Call this integer m.<br />
<img src='http://danboykis.com/wp-content/latex/891/8911834676e17a6e559694e90b53b051-ffffff-000000-0.png' alt='\frac{3\pi}{2}+2\pi \cdot n \approx m' title='\frac{3\pi}{2}+2\pi \cdot n \approx m' class='latex' /><br />
Solving for <img src='http://danboykis.com/wp-content/latex/4f0/4f08e3dba63dc6d40b22952c7a9dac6d-ffffff-000000-0.png' alt='\pi' title='\pi' class='latex' /> leads to:<br />
<img src='http://danboykis.com/wp-content/latex/cd9/cd909869b3ad0358b6f611510c96926b-ffffff-000000-0.png' alt='\pi \approx \frac{p}{q} \approx \frac{2m}{4n+3} ' title='\pi \approx \frac{p}{q} \approx \frac{2m}{4n+3} ' class='latex' />
<p>If I have a rational approximation to <img src='http://danboykis.com/wp-content/latex/4f0/4f08e3dba63dc6d40b22952c7a9dac6d-ffffff-000000-0.png' alt='\pi' title='\pi' class='latex' /> with an even numerator I can divide it by two get my m. I also have to make sure that the denominator is in the form of 4n+3.<br />
It's possible to use continued fractions to approximate real numbers. Here's a continued fraction sequence for pi: http://www.research.att.com/~njas/sequences/A001203</p>
<p>The first rational approximation I learned in elementary school is 22/7 which is perfect.</p>
<p>> (sin 11)<br />
-.9999902065507035</p>
<p>For the others I'll have to evaluate the continued fraction to get my approximation of a simple fraction.</p>
<p>> (eval-terms (list 3 7 15 1 292 1))<br />
104348/33215</p>
<p>> (sin (/ 104348 2))<br />
-.9999999999848337</p>
<p>> (eval-terms (list 3 7 15 1 292 1 1 1 2 1 3 1 14 2 1))<br />
245850922/78256779</p>
<p>> (sin (/ 245850922 2))<br />
-.99999999999999999532<br />
Looks like a good candidate was found.</p>
<p>This is the code to evaluate a continued fraction coefficients. It's very convenient that scheme has a native rational data type.</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>eval<span style="color: #66cc66;">-</span>terms ts<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">length</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>eval<span style="color: #66cc66;">-</span>terms <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>eval<span style="color: #66cc66;">-</span>terms<span style="color: #66cc66;">-</span>iter ts<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>rev<span style="color: #66cc66;">-</span>ts <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>ev<span style="color: #66cc66;">-</span>terms ts frac<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> ts<span style="color: #66cc66;">&#41;</span>
        frac
        <span style="color: #66cc66;">&#40;</span>ev<span style="color: #66cc66;">-</span>terms <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> frac<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>ev<span style="color: #66cc66;">-</span>terms rev<span style="color: #66cc66;">-</span>ts <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> rev<span style="color: #66cc66;">-</span>ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2010/05/sinn-1-where-n-is-an-integer-in-radians/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QMISMF Chap 3</title>
		<link>http://danboykis.com/2009/10/qmismf-chap-3/</link>
		<comments>http://danboykis.com/2009/10/qmismf-chap-3/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:13:04 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[math]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[qmismf]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1989</guid>
		<description><![CDATA[3-1 3-2 3-3 3-4 3-5 Assume: 3-6 Assume: and 3-7]]></description>
			<content:encoded><![CDATA[<p><b>3-1</b><br />
<img src='http://danboykis.com/wp-content/latex/82e/82eaec8494c82b5e20a8c1f0b980822a-ffffff-000000-0.png' alt='\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 1 &amp; -i \\ i &amp; -1  \end{pmatrix}' title='\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 1 &amp; -i \\ i &amp; -1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/9d7/9d7c5fffc89459ca109d178e4bdf6302-ffffff-000000-0.png' alt='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 1-i \\ 1+i &amp; 0 \end{pmatrix}' title='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 1-i \\ 1+i &amp; 0 \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/386/386d80c76eda620be4f637449a92f1cf-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}+\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 2 &amp; 0 \\ 0 &amp; 0 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}+\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 2 &amp; 0 \\ 0 &amp; 0 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/fc6/fc60704713887572d24a841fa2100058-ffffff-000000-0.png' alt='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; 1 \\ -1 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 2 \\ 0 &amp; 0  \end{pmatrix}' title='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; 1 \\ -1 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 2 \\ 0 &amp; 0  \end{pmatrix}' class='latex' /><br />
<b>3-2</b><br />
<img src='http://danboykis.com/wp-content/latex/551/55129adc643415859bd5e0c677a2093f-ffffff-000000-0.png' alt='\begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} \begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' title='\begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} \begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/3fc/3fc6f98876b38fe78b952745e0b88369-ffffff-000000-0.png' alt='\begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix} \begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' title='\begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix} \begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' class='latex' /><br />
<b>3-3</b><br />
<img src='http://danboykis.com/wp-content/latex/27f/27fe6775fc486e0ac669a5d4de5afa8a-ffffff-000000-0.png' alt='\frac{1}{4}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; 2 \\ 2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}' title='\frac{1}{4}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; 2 \\ 2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/aaa/aaad3d899f75a3454740ac8e7858e55d-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; -2 \\ -2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; -2 \\ -2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/398/398be7165b274288c1b5da89a3de7cab-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/434/434859951d614184be621f1614d475ff-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' class='latex' /><br />
<b>3-4</b><br />
<img src='http://danboykis.com/wp-content/latex/c16/c1648dd413a7f4a33c590a05e12a9cf0-ffffff-000000-0.png' alt='\begin{pmatrix} 1 &amp; 2 &amp; 3 \\ 2 &amp; 4 &amp; 5 \\ 3 &amp; 5 &amp; 6  \end{pmatrix} \begin{pmatrix} 1 &amp; -3 &amp; 2 \\ -3 &amp; 3 &amp; -1 \\ 2 &amp; -1 &amp; 0 \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{pmatrix}' title='\begin{pmatrix} 1 &amp; 2 &amp; 3 \\ 2 &amp; 4 &amp; 5 \\ 3 &amp; 5 &amp; 6  \end{pmatrix} \begin{pmatrix} 1 &amp; -3 &amp; 2 \\ -3 &amp; 3 &amp; -1 \\ 2 &amp; -1 &amp; 0 \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{pmatrix}' class='latex' /><br />
<b>3-5</b><br />
Assume: <img src='http://danboykis.com/wp-content/latex/693/69357a407a9fa06bd2e0f948f7eaec0d-ffffff-000000-0.png' alt='AM^{-1}=M^{-1}A \iff AM=MA' title='AM^{-1}=M^{-1}A \iff AM=MA' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/d3a/d3ae9cb6e05577c787bbba79b09ebf84-ffffff-000000-0.png' alt='AM^{-1}=M^{-1}A \implies AM=MA' title='AM^{-1}=M^{-1}A \implies AM=MA' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/d41/d41623d7d71659936b32ef9681b1647b-ffffff-000000-0.png' alt='AM^{-1}=M^{-1}A' title='AM^{-1}=M^{-1}A' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/ae6/ae6ce2bb587782a9eef188192714d54c-ffffff-000000-0.png' alt='AM^{-1}M=M^{-1}AM' title='AM^{-1}M=M^{-1}AM' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/14e/14e61b5aa154f89d64631b6a7e612beb-ffffff-000000-0.png' alt='MAI=MM^{-1}AM' title='MAI=MM^{-1}AM' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b70/b70dcb65ae34f67b23a264f87101c773-ffffff-000000-0.png' alt='MA=IAM' title='MA=IAM' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/509/50929b43435845e601252b3ed34b793f-ffffff-000000-0.png' alt='MA=AM' title='MA=AM' class='latex' /></p>
<img src='http://danboykis.com/wp-content/latex/6e1/6e10876bfb28e59f29ce3d92a00b30d2-ffffff-000000-0.png' alt='AM=MA \implies AM^{-1}=M^{-1}A' title='AM=MA \implies AM^{-1}=M^{-1}A' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/2a0/2a00fcc6798dcd6272a12fae5629e259-ffffff-000000-0.png' alt='AM=MA' title='AM=MA' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/e94/e94742a13efc73783bf5419f47359904-ffffff-000000-0.png' alt='M^{-1}AM=A' title='M^{-1}AM=A' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a23/a23bc60348de72cdc699ac8213657046-ffffff-000000-0.png' alt='M^{-1}A=AM^{-1}' title='M^{-1}A=AM^{-1}' class='latex' /><br />
<b>3-6</b><br />
Assume: <img src='http://danboykis.com/wp-content/latex/2a0/2a00fcc6798dcd6272a12fae5629e259-ffffff-000000-0.png' alt='AM=MA' title='AM=MA' class='latex' /> and  <img src='http://danboykis.com/wp-content/latex/001/001d0cc15bf5e2ff2ff2d9b512daa414-ffffff-000000-0.png' alt='BM=MB' title='BM=MB' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/4f6/4f63f3e0056ca98edb109a940787e398-ffffff-000000-0.png' alt='(A+B)M=M(A+B)' title='(A+B)M=M(A+B)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/9f7/9f73e4d7f0cf92333c44ce1957a5e816-ffffff-000000-0.png' alt='AM+BM=MA+MB' title='AM+BM=MA+MB' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/c6d/c6d6ce637a5bcc832a8fe1331eca09e9-ffffff-000000-0.png' alt='AM+BM-MA-MB=0' title='AM+BM-MA-MB=0' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/7ad/7add203d69eb1d560f22b6dea7ee8101-ffffff-000000-0.png' alt='(AM-MA)+(BM-MB)=0' title='(AM-MA)+(BM-MB)=0' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/df1/df15c8f32925f5048fbabec35bdc1944-ffffff-000000-0.png' alt='0+0=0' title='0+0=0' class='latex' />
<img src='http://danboykis.com/wp-content/latex/fe3/fe3397f057cb484b57f639098bacebef-ffffff-000000-0.png' alt='(AB)M=M(AB)' title='(AB)M=M(AB)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/029/029105efc6e9cfea566977ec67001269-ffffff-000000-0.png' alt='A(BM)=(MA)B' title='A(BM)=(MA)B' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a5f/a5f700fdec0d47587a33d6c18b70b0e8-ffffff-000000-0.png' alt='A(MB)=(AM)B' title='A(MB)=(AM)B' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/8f5/8f53cc126f387782b5a2b8a40cc2e419-ffffff-000000-0.png' alt='(AM)B=(AM)B' title='(AM)B=(AM)B' class='latex' />
<img src='http://danboykis.com/wp-content/latex/8bb/8bbd75f9eadacb8d87ad60d31ae1fbe0-ffffff-000000-0.png' alt='(zB)M=M(zB)' title='(zB)M=M(zB)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/65e/65ed654e5e556035500b9c400d301dbd-ffffff-000000-0.png' alt='z(BM)=(MB)z' title='z(BM)=(MB)z' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/cbe/cbe06499b6d4a95c43fcb781fd8330b9-ffffff-000000-0.png' alt='z(BM)=(BM)z' title='z(BM)=(BM)z' class='latex' />
<p><b>3-7</b><br />
<img src='http://danboykis.com/wp-content/latex/0a5/0a5ae882c542fed3e6945297e30bde97-ffffff-000000-0.png' alt='\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix} \frac{1}{9}\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix}=\frac{1}{9}\begin{pmatrix} 9 &amp; 0  \\ 0 &amp; 9 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0  \\ 0 &amp; 1 \end{pmatrix}' title='\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix} \frac{1}{9}\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix}=\frac{1}{9}\begin{pmatrix} 9 &amp; 0  \\ 0 &amp; 9 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0  \\ 0 &amp; 1 \end{pmatrix}' class='latex' /></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/10/qmismf-chap-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QMISMF: Chapter 2</title>
		<link>http://danboykis.com/2009/10/qmismf-chapter-2/</link>
		<comments>http://danboykis.com/2009/10/qmismf-chapter-2/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 00:13:02 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[qmismf]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1929</guid>
		<description><![CDATA[2-1: > (+ 3-i 2+4i) 5+3i > (+ 1+3i 2) 3+3i > (- -5+2i 2+2i) -7 > (+ -2+i 2+2i) +3i > (* 3-i 2+4i) 10+10i > (* 1+3i 2) 2+6i > (* 0+i 1+3i) -3+i > (* -5+2i 2+3i) -16-11i > (* 2+3i -2+3i) -13 > (* 2+3i 3+2i) +13i 2-2: 2-3: 2-4: 2-5: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>2-1:</strong></p>
<p>> (+ 3-i 2+4i)<br />
5+3i<br />
> (+ 1+3i 2)<br />
3+3i<br />
> (- -5+2i 2+2i)<br />
-7<br />
> (+ -2+i 2+2i)<br />
+3i<br />
> (* 3-i 2+4i)<br />
10+10i<br />
> (* 1+3i 2)<br />
2+6i<br />
> (* 0+i 1+3i)<br />
-3+i<br />
> (* -5+2i 2+3i)<br />
-16-11i<br />
> (* 2+3i -2+3i)<br />
-13<br />
> (* 2+3i 3+2i)<br />
+13i</p>
<p><strong>2-2:</strong></p>
<img src='http://danboykis.com/wp-content/latex/a4b/a4b0c04031d1d0a567c63e2df9536f64-ffffff-000000-0.png' alt='z^{-1}=\frac{1}{x^2+y^2}(x+iy)' title='z^{-1}=\frac{1}{x^2+y^2}(x+iy)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/e20/e2084b4ee8eba672db2f35448135b468-ffffff-000000-0.png' alt='\left(\frac{1}{i}\right)^{-1} \rightarrow 0-i=\frac{1}{1}(i)=i' title='\left(\frac{1}{i}\right)^{-1} \rightarrow 0-i=\frac{1}{1}(i)=i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/eea/eea746f412d730af841f87a1f376551a-ffffff-000000-0.png' alt='i \cdot \frac{1}{i}= 1' title='i \cdot \frac{1}{i}= 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/8f3/8f3289c0287c77560f357c0bebe99044-ffffff-000000-0.png' alt='\left(\frac{1}{-i}\right)^{-1} \rightarrow \frac{-i}{-1} = i = \frac{1}{1}(-i)=-i' title='\left(\frac{1}{-i}\right)^{-1} \rightarrow \frac{-i}{-1} = i = \frac{1}{1}(-i)=-i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/eb9/eb92ed123099619700271fe2cf739a21-ffffff-000000-0.png' alt=' -i \cdot \frac{1}{-i}= 1' title=' -i \cdot \frac{1}{-i}= 1' class='latex' />
<p><strong>2-3:</strong></p>
<img src='http://danboykis.com/wp-content/latex/2af/2af086c86286b078c8b28e16d066b5ad-ffffff-000000-0.png' alt='i^*i = -i \cdot i = 1' title='i^*i = -i \cdot i = 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b51/b51c7f75513ddf8495d488804ec09b56-ffffff-000000-0.png' alt='(-i)^*(-i)= i \cdot -i = 1' title='(-i)^*(-i)= i \cdot -i = 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/78c/78c901ef73c3ea3641e076e7e070fdaf-ffffff-000000-0.png' alt='|i|^2=(i^*i)=1' title='|i|^2=(i^*i)=1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a3b/a3bc5c8dc465140e8a736eeb570bc494-ffffff-000000-0.png' alt='|-i|^2=\left( (-i)^*(-i) \right)=1' title='|-i|^2=\left( (-i)^*(-i) \right)=1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/5f8/5f84cfa4f5f03e1932f1600d3e01c189-ffffff-000000-0.png' alt='|i| = \sqrt{i^*i} = \sqrt{-i \cdot i} = 1' title='|i| = \sqrt{i^*i} = \sqrt{-i \cdot i} = 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/2b1/2b1df09dfa356bbe8eae51c84ae0f791-ffffff-000000-0.png' alt='|-i| = \sqrt{(-i)^*(-i)}= \sqrt{i \cdot -i} = 1' title='|-i| = \sqrt{(-i)^*(-i)}= \sqrt{i \cdot -i} = 1' class='latex' />
<p><strong>2-4:</strong></p>
<img src='http://danboykis.com/wp-content/latex/747/74715efb63ca3ba12e9f79d00ced448f-ffffff-000000-0.png' alt='z=3+4i' title='z=3+4i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/ef7/ef7bfb7e58627c20069a5898614fce6c-ffffff-000000-0.png' alt='z^* = 3-4i' title='z^* = 3-4i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/93c/93c13e1d04b2b32b6c516da8ba754f8f-ffffff-000000-0.png' alt='z^*z = (3-4i)(3+4i) = 25' title='z^*z = (3-4i)(3+4i) = 25' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/f11/f11a5ae573a34b533dac51313cf81cf3-ffffff-000000-0.png' alt='|z| = \sqrt{z^*z} = \sqrt{25} = 5' title='|z| = \sqrt{z^*z} = \sqrt{25} = 5' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/bd1/bd10c7d4bf892505ddf6ef7891cf8367-ffffff-000000-0.png' alt='z^2 = z \cdot z = (3+4i)(3+4i) = -7+24i' title='z^2 = z \cdot z = (3+4i)(3+4i) = -7+24i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/1c8/1c8860b6f12d600e17168da54ac0c3ba-ffffff-000000-0.png' alt='\frac{1}{z} = \frac{1}{z} \cdot \frac{z^*}{z^*} = \frac{z^*}{zz^*} = \frac{3-4i}{25}' title='\frac{1}{z} = \frac{1}{z} \cdot \frac{z^*}{z^*} = \frac{z^*}{zz^*} = \frac{3-4i}{25}' class='latex' />
<p><strong>2-5:</strong></p>
<img src='http://danboykis.com/wp-content/latex/79f/79f42bc0e9979a2984d5d86c51d658d2-ffffff-000000-0.png' alt='|w+z| &lt; |w| + |z|' title='|w+z| &lt; |w| + |z|' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a36/a363827a0be940ce55b764a89a0b97c9-ffffff-000000-0.png' alt='|3+4i| &lt; |3| + |4i|' title='|3+4i| &lt; |3| + |4i|' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/d3b/d3b7b26827272d3491ec0629f3dc3599-ffffff-000000-0.png' alt='5 &lt; 7' title='5 &lt; 7' class='latex' />
<p><strong>2-6:</strong></p>
<img src='http://danboykis.com/wp-content/latex/e58/e58b38fc09ffc2004aa5150a2c192777-ffffff-000000-0.png' alt='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( \sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' title='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( \sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' class='latex' /><br />
for <img src='http://danboykis.com/wp-content/latex/d8d/d8d908bbbf4187f45036660078366a0f-ffffff-000000-0.png' alt='y \ge 0' title='y \ge 0' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/cbd/cbdfda81dc6ecab559f85544780bca94-ffffff-000000-0.png' alt='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( -\sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' title='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( -\sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' class='latex' /><br />
for <img src='http://danboykis.com/wp-content/latex/1cc/1cc38adee46fab836f54737b1df4317b-ffffff-000000-0.png' alt='y \le 0' title='y \le 0' class='latex' />
<img src='http://danboykis.com/wp-content/latex/c1b/c1ba6570c9511072da3201bf2c171630-ffffff-000000-0.png' alt='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{\sqrt{0^2+1^2}}{2}} \cdot \left( \sqrt{1 + \frac{0}{\sqrt{0^2+1^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+1^2}}} \right)' title='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{\sqrt{0^2+1^2}}{2}} \cdot \left( \sqrt{1 + \frac{0}{\sqrt{0^2+1^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+1^2}}} \right)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b9c/b9c9166a041144bf6bc79954dba64009-ffffff-000000-0.png' alt='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{1}{2}} \cdot (1+i) = \sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' title='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{1}{2}} \cdot (1+i) = \sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/40f/40f7c07674450d856d94ca9df2188ac2-ffffff-000000-0.png' alt='\left(\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}\right)^2 = \frac{1}{2} + i - \frac{1}{2} = i' title='\left(\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}\right)^2 = \frac{1}{2} + i - \frac{1}{2} = i' class='latex' />
<img src='http://danboykis.com/wp-content/latex/588/588e2c3fd0609c9dc703635c44c2ea3d-ffffff-000000-0.png' alt='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{\sqrt{0^2+(-1)^2}}{2}} \cdot \left( -\sqrt{1 + \frac{0}{\sqrt{0^2+(-1)^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+(-1)^2}}} \right)' title='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{\sqrt{0^2+(-1)^2}}{2}} \cdot \left( -\sqrt{1 + \frac{0}{\sqrt{0^2+(-1)^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+(-1)^2}}} \right)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/c2d/c2d1923defaf1d524bc7f3858c905a5c-ffffff-000000-0.png' alt='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{1}{2}} \cdot (-1+i) = -\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' title='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{1}{2}} \cdot (-1+i) = -\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/83b/83bb3cedff24015bd5647f48da35cd8e-ffffff-000000-0.png' alt='\left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right) \cdot \left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right)=\frac{1}{2}-i-\frac{1}{2}=-i' title='\left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right) \cdot \left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right)=\frac{1}{2}-i-\frac{1}{2}=-i' class='latex' />
<p><strong>2-7:</strong></p>
<p><img src='http://danboykis.com/wp-content/latex/403/403cad4d81b4cb3d689ff9f756a3ae73-ffffff-000000-0.png' alt='z=-\frac{b}{2a} \pm \sqrt{\left(\frac{b}{2a}\right)^2 - \frac{c}{a}}' title='z=-\frac{b}{2a} \pm \sqrt{\left(\frac{b}{2a}\right)^2 - \frac{c}{a}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/6aa/6aa55159762cc5ffff0ccf60b32366cf-ffffff-000000-0.png' alt='z=-\frac{b}{2a} \pm \sqrt{\frac{b^2-4ac}{2^2a^2}}' title='z=-\frac{b}{2a} \pm \sqrt{\frac{b^2-4ac}{2^2a^2}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/dff/dff356ef18de2e0fb1ea01ca8a31973f-ffffff-000000-0.png' alt='z=-\frac{b}{2a} \pm \frac{1}{2a}\sqrt{b^2-4ac}' title='z=-\frac{b}{2a} \pm \frac{1}{2a}\sqrt{b^2-4ac}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/c19/c19dd66a23dd9750b81f631b1393fb60-ffffff-000000-0.png' alt='z=\frac{-b \pm \sqrt{b^2-4ac}}{2a}' title='z=\frac{-b \pm \sqrt{b^2-4ac}}{2a}' class='latex' /> since the above is now in the usual form of the <a href="http://en.wikipedia.org/wiki/Quadratic_equation">quadratic formula</a> it is clear z is a solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/10/qmismf-chapter-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.42 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-42-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-42-of-sicp/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 00:09:42 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[SICP]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1888</guid>
		<description><![CDATA[Exercise 2.42: The "eight-queens puzzle'' asks how to place eight queens on a chessboard so that no queen is in check from any other (i.e., no two queens are in the same row, column, or diagonal). One possible solution is shown in figure 2.8. One way to solve the puzzle is to work across the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.42:</strong></p>
<div class="wp-caption alignnone" style="width: 292px"><img alt="A solution to the eight-queens puzzle." src="http://mitpress.mit.edu/sicp/full-text/book/ch2-Z-G-23.gif" title="8 Queens" width="282" height="282" /><p class="wp-caption-text">A solution to the eight-queens puzzle.</p></div>
<p>The "eight-queens puzzle'' asks how to place eight queens on a chessboard so that no queen is in check from any other (i.e., no two queens are in the same row, column, or diagonal). One possible solution is shown in figure 2.8. One way to solve the puzzle is to work across the board, placing a queen in each column. Once we have placed k - 1 queens, we must place the k<sup>th</sup> queen in a position where it does not check any of the queens already on the board. We can formulate this approach recursively: Assume that we have already generated the sequence of all possible ways to place k - 1 queens in the first k - 1 columns of the board. For each of these ways, generate an extended set of positions by placing a queen in each row of the k<sup>th</sup> column. Now filter these, keeping only the positions for which the queen in the k<sup>th</sup> column is safe with respect to the other queens. This produces the sequence of all ways to place k queens in the first k columns. By continuing this process, we will produce not only one solution, but all solutions to the puzzle.</p>
<p>We implement this solution as a procedure queens, which returns a sequence of all solutions to the problem of placing n queens on an n×n chessboard. Queens has an internal procedure <em>queen-cols</em> that returns the sequence of all ways to place queens in the first k columns of the board.</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>queens board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols k<span style="color: #66cc66;">&#41;</span>  
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> k <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> empty<span style="color: #66cc66;">-</span>board<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>filter
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>positions<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>safe? k positions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span>flatmap
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>new<span style="color: #66cc66;">-</span>row<span style="color: #66cc66;">&#41;</span>
                   <span style="color: #66cc66;">&#40;</span>adjoin<span style="color: #66cc66;">-</span>position new<span style="color: #66cc66;">-</span>row k rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                 <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> k <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>In this procedure <em>rest-of-queens</em> is a way to place k - 1 queens in the first k - 1 columns, and <em>new-row</em> is a proposed row in which to place the queen for the k<sup>th</sup> column. Complete the program by implementing the representation for sets of board positions, including the procedure <em>adjoin-position</em>, which adjoins a new row-column position to a set of positions, and <em>empty-board</em>, which represents an empty set of positions. You must also write the procedure <em>safe?</em>, which determines for a set of positions, whether the queen in the k<sup>th</sup> column is safe with respect to the others. (Note that we need only check whether the new queen is safe -- the other queens are already guaranteed safe with respect to each other.)</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>filter pred? seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> seq<span style="color: #66cc66;">&#41;</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>pred? <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>filter pred? <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
          <span style="color: #66cc66;">&#40;</span>filter pred? <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>flatmap pred seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #b1b100;">append</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> pred seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>accumulate op init seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> seq<span style="color: #66cc66;">&#41;</span>
    init
    <span style="color: #66cc66;">&#40;</span>op <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>accumulate op init <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval low high<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> low high<span style="color: #66cc66;">&#41;</span>
    '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> low <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> low<span style="color: #66cc66;">&#41;</span> high<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>queens board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols k<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> k <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> empty<span style="color: #66cc66;">-</span>board<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>filter 
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>positions<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>safe? k positions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span>flatmap
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>new<span style="color: #66cc66;">-</span>row<span style="color: #66cc66;">&#41;</span>
                   <span style="color: #66cc66;">&#40;</span>adjoin<span style="color: #66cc66;">-</span>position new<span style="color: #66cc66;">-</span>row k rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                 <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> k <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> empty<span style="color: #66cc66;">-</span>board '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>adjoin<span style="color: #66cc66;">-</span>position new<span style="color: #66cc66;">-</span>row k rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> new<span style="color: #66cc66;">-</span>row<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>safe? k positions<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list-ref</span> positions <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> k <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>safe<span style="color: #66cc66;">-</span>queen? new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row k positions <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>safe<span style="color: #66cc66;">-</span>queen? new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>col positions col<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> positions<span style="color: #66cc66;">&#41;</span> #t<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>col col<span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> positions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> #t<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;check for last col</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> positions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> #f<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;rook moves</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> 
           <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> positions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;bishop moves</span>
           <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>col col<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> #f<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
          <span style="color: #66cc66;">&#40;</span>safe<span style="color: #66cc66;">-</span>queen? new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>row new<span style="color: #66cc66;">-</span>q<span style="color: #66cc66;">-</span>col <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> positions<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> col <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>> (length (queens 8))<br />
<em>92</em><br />
> (length (queens 11))<br />
<em>2680</em><br />
> (length (queens 10))<br />
<em>724</em><br />
> (queens 4)<br />
<em>((2 4 1 3) (3 1 4 2))</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-42-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.41 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-41-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-41-of-sicp/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 23:54:37 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1880</guid>
		<description><![CDATA[Exercise 2.41: Write a procedure to find all ordered triples of distinct positive integers i, j, and k less than or equal to a given integer n that sum to a given integer s. &#40;define &#40;filter pred seq&#41; &#40;cond &#40;&#40;null? seq&#41; '&#40;&#41;&#41; &#40;&#40;pred &#40;car seq&#41;&#41; &#40;cons &#40;car seq&#41; &#40;filter pred &#40;cdr seq&#41;&#41;&#41;&#41; &#40;else &#40;filter pred [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.41:</strong>  Write a procedure to find all ordered triples of distinct positive integers i, j, and k less than or equal to a given integer n that sum to a given integer s.</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>filter pred seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> seq<span style="color: #66cc66;">&#41;</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>pred <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> 
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>filter pred <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
          <span style="color: #66cc66;">&#40;</span>filter pred <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>range start end<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter end seq<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> start end<span style="color: #66cc66;">&#41;</span>
      seq
      <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> end <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> end seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter end '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>accumulate fn init<span style="color: #66cc66;">-</span>value <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
    init<span style="color: #66cc66;">-</span>value
    <span style="color: #66cc66;">&#40;</span>fn <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>accumulate fn init<span style="color: #66cc66;">-</span>value <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>flatmap proc seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #b1b100;">append</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> proc seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>unique<span style="color: #66cc66;">-</span>triples n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>flatmap 
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>flatmap 
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>j<span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>k<span style="color: #66cc66;">&#41;</span>
                 <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> i j k<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">&#40;</span>range <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> j <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>range <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>range <span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>sum<span style="color: #66cc66;">-</span>triples n <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>sum<span style="color: #66cc66;">-</span>desired? triple<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #b1b100;">s</span> <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">0</span> triple<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>sum<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>triple triple<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> triple <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">0</span> triple<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> make<span style="color: #66cc66;">-</span>sum<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>triple
       <span style="color: #66cc66;">&#40;</span>filter sum<span style="color: #66cc66;">-</span>desired?
               <span style="color: #66cc66;">&#40;</span>unique<span style="color: #66cc66;">-</span>triples n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>> (sum-triples 5 9)<br />
<em>((4 3 2 9) (5 3 1 9))</em><br />
> (sum-triples 5 10)<br />
<em>((5 3 2 10) (5 4 1 10))</em><br />
> (sum-triples 5 11)<br />
<em>((5 4 2 11))</em><br />
> (sum-triples 5 12)<br />
<em>((5 4 3 12))</em><br />
> (sum-triples 5 13)<br />
<em>()</em><br />
> (sum-triples 6 13)<br />
<em>((6 4 3 13) (6 5 2 13))</em><br />
> (sum-triples 6 10)<br />
<em>((5 3 2 10) (5 4 1 10) (6 3 1 10))</em><br />
> (sum-triples 6 11)<br />
<em>((5 4 2 11) (6 3 2 11) (6 4 1 11))</em><br />
> (sum-triples 6 12)<br />
<em>((5 4 3 12) (6 4 2 12) (6 5 1 12))</em><br />
> (sum-triples 6 13)<br />
<em>((6 4 3 13) (6 5 2 13))</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-41-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.40 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-40-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-40-of-sicp/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 11:27:59 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[SICP]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1870</guid>
		<description><![CDATA[Exercise 2.40: Define a procedure unique-pairs that, given an integer n, generates the sequence of pairs with . Use unique-pairs to simplify the definition of prime-sum-pairs given above. Using Miller-Rabin primality test as well as taking advantage of some lexical scoping here is the solution: &#40;define &#40;prime? n times&#41; &#40;define &#40;miller-rabin-test n&#41; &#40;define &#40;random n&#41; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.40:</strong>  Define a procedure unique-pairs that, given an integer n, generates the sequence of pairs <img src='http://danboykis.com/wp-content/latex/527/5270ae675fac24f97e172dcd9b18fa92-ffffff-000000-0.png' alt='(i,j)' title='(i,j)' class='latex' /> with <img src='http://danboykis.com/wp-content/latex/004/004fe354c0ed68121684597fc00c144e-ffffff-000000-0.png' alt='1\le j&lt; i\le n' title='1\le j&lt; i\le n' class='latex' />. Use <strong>unique-pairs</strong> to simplify the definition of <strong>prime-sum-pairs</strong> given above. </p>
<p>Using Miller-Rabin primality test as well as taking advantage of some lexical scoping here is the solution:</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>prime? n times<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>miller<span style="color: #66cc66;">-</span>rabin<span style="color: #66cc66;">-</span>test n<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>random n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>random<span style="color: #66cc66;">-</span>integer n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>expmod base <span style="color: #b1b100;">exp</span> m<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>mod x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x x<span style="color: #66cc66;">&#41;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>signal<span style="color: #66cc66;">-</span>root x<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> 
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> m <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>mod x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #cc66cc;">0</span>
          <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>mod x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">even?</span> <span style="color: #b1b100;">exp</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>signal<span style="color: #66cc66;">-</span>root <span style="color: #66cc66;">&#40;</span>expmod base <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> base <span style="color: #66cc66;">&#40;</span>expmod base <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                         m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>  
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>try<span style="color: #66cc66;">-</span>it a<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span>expmod a <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>try<span style="color: #66cc66;">-</span>it <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>random <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> times <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> #t<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>miller<span style="color: #66cc66;">-</span>rabin<span style="color: #66cc66;">-</span>test n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span>prime? n <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> times <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> #f<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>filter pred seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> seq<span style="color: #66cc66;">&#41;</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>pred <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> 
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seq<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>filter pred <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
          <span style="color: #66cc66;">&#40;</span>filter pred <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>range start end<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter end seq<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> start end<span style="color: #66cc66;">&#41;</span>
      seq
      <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> end <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> end seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter end '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>flatmap proc seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>accumulate fn init<span style="color: #66cc66;">-</span>value <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
      init<span style="color: #66cc66;">-</span>value
      <span style="color: #66cc66;">&#40;</span>fn <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>accumulate fn init<span style="color: #66cc66;">-</span>value <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #b1b100;">append</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> proc seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>unique<span style="color: #66cc66;">-</span>pairs n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>flatmap 
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>j<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> i j<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
           <span style="color: #66cc66;">&#40;</span>range <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>range <span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>prime<span style="color: #66cc66;">-</span>sum<span style="color: #66cc66;">-</span>pairs n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>pair<span style="color: #66cc66;">-</span>sum pair<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> pair<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> pair<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> pair<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> pair<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>prime<span style="color: #66cc66;">-</span>sum? pair<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>prime? <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> pair<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> pair<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> make<span style="color: #66cc66;">-</span>pair<span style="color: #66cc66;">-</span>sum
       <span style="color: #66cc66;">&#40;</span>filter prime<span style="color: #66cc66;">-</span>sum?
               <span style="color: #66cc66;">&#40;</span>unique<span style="color: #66cc66;">-</span>pairs n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>> (prime-sum-pairs 1)<br />
<em>()</em><br />
> (prime-sum-pairs 2)<br />
<em>((2 1 3))</em><br />
> (prime-sum-pairs 3)<br />
<em>((2 1 3) (3 2 5))</em><br />
> (prime-sum-pairs 4)<br />
<em>((2 1 3) (3 2 5) (4 1 5) (4 3 7))</em><br />
> (prime-sum-pairs 5)<br />
<em>((2 1 3) (3 2 5) (4 1 5) (4 3 7) (5 2 7))</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-40-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.39 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-39-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-39-of-sicp/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 10:50:09 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[SICP]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1842</guid>
		<description><![CDATA[Exercise 2.39: Complete the following definitions of reverse (exercise 2.18) in terms of fold-right and fold-left from exercise 2.38: &#40;define &#40;reverse sequence&#41; &#40;fold-right &#40;lambda &#40;x y&#41; &#60;??&#62;&#41; nil sequence&#41;&#41; &#40;define &#40;reverse sequence&#41; &#40;fold-left &#40;lambda &#40;x y&#41; &#60;??&#62;&#41; nil sequence&#41;&#41; &#40;define &#40;fold-right fn init-value items&#41; &#40;if &#40;null? items&#41; init-value &#40;fn &#40;car items&#41; &#40;fold-right fn init-value &#40;cdr [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.39:</strong>   Complete the following definitions of reverse (exercise 2.18) in terms of <em>fold-right</em> and <em>fold-left</em> from exercise 2.38:</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&lt;</span>??<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&lt;</span>??<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right fn init<span style="color: #66cc66;">-</span>value items<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> items<span style="color: #66cc66;">&#41;</span>
    init<span style="color: #66cc66;">-</span>value
    <span style="color: #66cc66;">&#40;</span>fn <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> items<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right fn init<span style="color: #66cc66;">-</span>value <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> items<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left op initial <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter result rest<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> rest<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>op result <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter initial <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>reverse<span style="color: #66cc66;">-</span>right <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> y <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>reverse<span style="color: #66cc66;">-</span>left <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> y x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>> (reverse-right (list 1 2 3))<br />
<em>(3 2 1)</em><br />
> (reverse-left (list 1 2 3))<br />
<em>(3 2 1)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-39-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.38 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-38-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-38-of-sicp/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 20:49:47 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[SICP]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1839</guid>
		<description><![CDATA[Exercise 2.38: The accumulate procedure is also known as fold-right, because it combines the first element of the sequence with the result of combining all the elements to the right. There is also a fold-left, which is similar to fold-right, except that it combines elements working in the opposite direction: &#40;define &#40;fold-left op initial sequence&#41; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.38:</strong>  The accumulate procedure is also known as fold-right, because it combines the first element of the sequence with the result of combining all the elements to the right. There is also a fold-left, which is similar to fold-right, except that it combines elements working in the opposite direction:</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left op initial <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter result rest<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> rest<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>op result <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter initial <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>What are the values of</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>3/2</em></p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>1/6</em></p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right <span style="color: #b1b100;">list</span> <span style="color: #b1b100;">nil</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>(1 (2 (3 ())))</em></p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left <span style="color: #b1b100;">list</span> <span style="color: #b1b100;">nil</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>(((() 1) 2) 3)</em><br />
Give a property that op should satisfy to guarantee that <em>fold-right</em> and <em>fold-left</em> will produce the same values for any sequence.<br />
(fold-right op i (list a<sub>1</sub> a<sub>2</sub> a<sub>3</sub>))<br />
<img src='http://danboykis.com/wp-content/latex/c3c/c3c196b582958e0545af8052bd8d95e9-ffffff-000000-0.png' alt='(a_1 \cdot (a_2 \cdot ( a_3 \cdot i)))' title='(a_1 \cdot (a_2 \cdot ( a_3 \cdot i)))' class='latex' /><br />
(fold-left op i (list a<sub>1</sub> a<sub>2</sub> a<sub>3</sub>))<br />
<img src='http://danboykis.com/wp-content/latex/8bb/8bb357c4b5947a718acd763f7fe3c919-ffffff-000000-0.png' alt='(((i \cdot a_1) \cdot a_2) \cdot a_3)' title='(((i \cdot a_1) \cdot a_2) \cdot a_3)' class='latex' /></p>
<p>Any binary associative operation will be invariant under fold-right and fold-left.</p>
<p>Since 2.37 involved matrix multiplication which is associative, I will use that as an example.<br />
> (define i (list (list 1 0 0) (list 0 1 0) (list 0 0 1)))<br />
> (define a1 (list (list 8 3 2) (list 1 0 9) (list 3 4 5)))<br />
> (define a2 (list (list 5 6 7) (list 1 2 8) (list 6 7 7)))<br />
> (define a3 (list (list 6 7 9) (list 4 3 1) (list 3 4 5)))<br />
> (fold-left matrix-*-matrix i (list a1 a2 a3))<br />
<em>((884 965 1033) (840 900 950) (802 878 942))</em><br />
> (fold-right matrix-*-matrix i (list a1 a2 a3))<br />
<em>((884 965 1033) (840 900 950) (802 878 942))</em></p>
<p>Notice that <strong>i</strong> is the identity matrix because if it wasn't, I would also be testing commutativity of matrix product. Matrix product doesn't commute. If <strong>i</strong> is changed to another matrix <em>fold-left</em> and <em>fold-right</em> will return differing results.</p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-38-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
