Richard,<br><br>Lovely solution! It's stuff like this that helps newcomers to Erlang like myself to learn how to write better Erlang.<br><br>I'm curious, though; what is the reason for writing <br><br>Qs = [integer_to_list(S) || S <- [X*X || X <- lists:seq(32,99)]]<br>
<br>instead of <br><br>Qs = [integer_to_list(X*X) || X <- lists:seq(32,99)]<br><br>?<br><br><div class="gmail_quote">2008/7/6 Richard Carlsson <<a href="mailto:richardc@it.uu.se">richardc@it.uu.se</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Toby Thain wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi list,<br>
<br>
I stumbled on this simple 'puzzle'[0] posted some years ago on  comp.lang.tcl (originally to an Icon mailing list).<br>
<br>
After solving it in Icon[1] and SQL[2] I decided to see what an  Erlang solution would look like. I'm posting here firstly because  other people's solutions would be interesting, and also I'd like to  see how my own solution[3] could be improved.<br>

<br>
Any takers over the weekend? :-)<br>
<br>
--Toby<br>
<br>
[0] <a href="http://groups.google.com/group/comp.lang.tcl/msg/8846d9f7491ba0ba" target="_blank">http://groups.google.com/group/comp.lang.tcl/msg/8846d9f7491ba0ba</a><br>
[1] <a href="http://telegraphics.com.au/svn/puzzles/trunk/vier-neun/vn.icn" target="_blank">http://telegraphics.com.au/svn/puzzles/trunk/vier-neun/vn.icn</a><br>
[2] <a href="http://telegraphics.com.au/svn/puzzles/trunk/vier-neun/Makefile" target="_blank">http://telegraphics.com.au/svn/puzzles/trunk/vier-neun/Makefile</a><br>
[3] <a href="http://telegraphics.com.au/svn/puzzles/trunk/vier-neun/erlang/" target="_blank">http://telegraphics.com.au/svn/puzzles/trunk/vier-neun/erlang/</a><br>
</blockquote>
<br></div>
Here's my version. Note that it's often better to think in terms of<br>
stages of list processing (mapreduce etc.), instead of inserting and<br>
looking up in dictionaries. I tag each generated pair with the E<br>
element, just to make the list easier to work with later.<br><font color="#888888">
<br>
    /Richard<br>
</font><br>%% File: solve.erl<br>
%% @author Richard Carlsson<br>
<br>
-module(solve).<br>
-export([it/0]).<br>
<br>
%% Problem: VIER and NEUN are 4-digit squares; determine distinct V, I,<br>
%% E, R, N, and U, such that there is a unique solution (VIER,NEUN) for<br>
%% some particular E.<br>
<br>
it() -><br>
    Qs = [integer_to_list(S) || S <- [X*X || X <- lists:seq(32,99)]],<br>
    Ps = [{E,{Vr,Nn}} || [N,E,_U,N]=Nn <- Qs, [_V,_I,E1,_R]=Vr <- Qs,<br>
                         E =:= E1,<br>
                         length(ordsets:from_list(Nn++Vr)) =:= 6],<br>
    D = lists:foldl(fun ({E,_}, D) -> dict:update_counter(E,1,D) end,<br>
                    dict:new(), Ps),<br>
    [P || {E,1} <- dict:to_list(D), {E1,P} <- Ps, E=:=E1].<br>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br></blockquote></div><br><br clear="all"><br>-- <br>The great enemy of the truth is very often not the lie -- deliberate, contrived and dishonest, but the myth, persistent, persuasive, and unrealistic. Belief in myths allows the comfort of opinion without the discomfort of thought.<br>
John F. Kennedy 35th president of US 1961-1963 (1917 - 1963)