<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Aaron Feng: Erlang in Action</title>
    <link>http://www.aaronfeng.com/articles/2007/07/08/erlang-in-action</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Adventures in software development</description>
    <item>
      <title>Erlang in Action</title>
      <description>&lt;p&gt;I decided to see if I could rewrite the problem I solved in a previous post in &lt;a href="http://en.wikipedia.org/wiki/Erlang_programming_language"&gt;Erlang&lt;/a&gt;.  Here is the problem again:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A/BC + D/EF + G/HI = 1&lt;/strong&gt;&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;-module(constraint).
-export([solve/0]).

solve() -&amp;gt;
    solve(generate_unique()).

solve([A,B,C,D,E,F,G,H,I]) when A/(10 * B + C) + 
                                D/(10 * E + F) + 
                                G/(10 * H + I) /= 1 -&amp;gt; 
    solve();
solve([A,B,C,D,E,F,G,H,I]) -&amp;gt;
    io:format(&amp;quot;~w/~w~w + ~w/~w~w + ~w/~w~w = 1 ~n&amp;quot;, 
        [A,B,C,D,E,F,G,H,I]).

generate_unique() -&amp;gt;
    generate_unique(0, []).

generate_unique(9, List) -&amp;gt;
    List;
generate_unique(N, List) -&amp;gt;
    Number = random:uniform(9),
    case lists:member(Number, List) of
        true -&amp;gt;  generate_unique(N, List);
        false -&amp;gt; generate_unique(N + 1, [Number|List])
    end.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 08 Jul 2007 17:51:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:b99ae71b-fe6a-47a5-aa58-e497c92fc77b</guid>
      <author>Aaron Feng</author>
      <link>http://www.aaronfeng.com/articles/2007/07/08/erlang-in-action</link>
      <category>programming</category>
    </item>
  </channel>
</rss>
