Sorry there is a mistake in the problem description.<div>Here it is in Python:</div><div><pre style="margin-top:0.5em;margin-bottom:0.5em;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.1em;text-align:left;background-color:rgb(246,246,246)">

<span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi" style="line-height:13px">1</span><span class="p">,</span><span class="mi" style="line-height:13px">1</span><span class="p">,</span><span class="mi" style="line-height:13px">1</span><span class="p">,</span><span class="mi" style="line-height:13px">1</span><span class="p">]</span> 
<span class="n">b</span> <span class="o">=</span> <span class="p">[</span><span class="mi" style="line-height:13px">0</span><span class="p">,</span><span class="mi" style="line-height:13px">1</span><span class="p">,</span><span class="mi" style="line-height:13px">2</span><span class="p">,</span><span class="mi" style="line-height:13px">3</span><span class="p">]</span> 
<span class="n">c</span> <span class="o">=</span> <span class="p">[</span><span class="mi" style="line-height:13px">0</span><span class="p">,</span><span class="mi" style="line-height:13px">2</span><span class="p">]</span> 
<span class="n">d</span> <span class="o">=</span> <span class="p">[</span><span class="mi" style="line-height:13px">0</span><span class="p">,</span><span class="mi" style="line-height:13px">0</span><span class="p">,</span><span class="mi" style="line-height:13px">0</span><span class="p">,</span><span class="mi" style="line-height:13px">0</span><span class="p">]</span> 

<span class="k" style="line-height:13px;color:rgb(0,51,204);font-weight:bold">for</span> <span class="n">i</span> <span class="ow" style="line-height:13px;color:rgb(51,102,255)">in</span> <span class="n">b</span><span class="p">:</span> 
    <span class="k" style="line-height:13px;color:rgb(0,51,204);font-weight:bold">for</span> <span class="n">j</span> <span class="ow" style="line-height:13px;color:rgb(51,102,255)">in</span> <span class="n">c</span><span class="p">:</span> 
        <span class="k" style="line-height:13px;color:rgb(0,51,204);font-weight:bold">if</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">j</span><span class="p">)</span><span class="o">&lt;</span><span class="mi" style="line-height:13px">3</span><span class="p">:</span> 
                <span class="n">d</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">j</span><span class="p">]</span> <span class="o">+=</span> <span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]</span></pre>

<pre style="margin-top:0.5em;margin-bottom:0.5em;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.1em;text-align:left;background-color:rgb(246,246,246)"><span class="p"><br></span></pre>

-Haisheng<br>
<br><br><div class="gmail_quote">On Sun, Feb 5, 2012 at 2:28 PM, Haisheng Wu <span dir="ltr">&lt;<a href="mailto:freizl@gmail.com">freizl@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<font face="&#39;courier new&#39;, monospace"><span style="line-height:21px;color:rgb(17,17,17);font-size:13px">a = [1,1,1,1] </span><br style="line-height:21px;color:rgb(17,17,17);font-size:13px">
<span style="line-height:21px;color:rgb(17,17,17);font-size:13px">b = [0,1,2,3] </span><br style="line-height:21px;color:rgb(17,17,17);font-size:13px"><span style="line-height:21px;color:rgb(17,17,17);font-size:13px">d = [0,0,0,0] </span><br style="line-height:21px;color:rgb(17,17,17);font-size:13px">


<br style="line-height:21px;color:rgb(17,17,17);font-size:13px"><span style="line-height:21px;color:rgb(17,17,17);font-size:13px">for i in b: </span><br style="line-height:21px;color:rgb(17,17,17);font-size:13px">
<span style="line-height:21px;color:rgb(17,17,17);font-size:13px">  for j in c: </span><br style="line-height:21px;color:rgb(17,17,17);font-size:13px"><span style="line-height:21px;color:rgb(17,17,17);font-size:13px">    if (i+j)&lt;3: </span><br style="line-height:21px;color:rgb(17,17,17);font-size:13px">


<span style="line-height:21px;color:rgb(17,17,17);font-size:13px">      d[i+j] += a[i] </span> </font><div><br>
</div><div>My just work implementation in Haskell</div><div><a href="http://hpaste.org/57452" target="_blank">http://hpaste.org/57452</a></div><div><br></div><div>Another people implementation in Haskell with Monad and it turns out complex and very imperatively.</div>


<div><a href="http://hpaste.org/57358" target="_blank">http://hpaste.org/57358</a></div><div><br></div><div>Do you have any cool solution in FP way?</div><div><br></div><div>Thanks.</div><div>-Simon</div>
</blockquote></div><br></div>