<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Result of recent &#39;word frequencies&#39; work</title>
		<link>http://www.allegro.cc/forums/view/588673</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 22 Nov 2006 15:18:17 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have finished my &quot;word frequency&quot; program with help of Peter Hull.  It uses <tt>std::maps</tt>, <tt>std::vectors</tt>, etc. and I was asked to share this with the Allegro.cc group since it may benefit others.</p><p>I only needed letters and numbers from [a-zA-Z0-9] and hyphens, so this doesn&#39;t do extended languages at all.  I guess I could have used <tt>isalnum()</tt> instead of hard-coding the ASCII values, but if someone wishes to modify this and repost here for others to use, that&#39;d be fine too.</p><p>I didn&#39;t put any sort of copyright in this because I felt it was common-sense code.  If anyone thinks it needs to be put under the GPL so Microsoft doesn&#39;t claim it for their own, go right ahead <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 22 Nov 2006 07:23:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nice work. And now to make you feel bad heres mostly the same program in ruby
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">class</span> Hash</td></tr><tr><td class="number">2</td><td>  def wordsort</td></tr><tr><td class="number">3</td><td>    self.keys.sort<span class="k2">{</span> <span class="k3">|</span>x,y<span class="k3">|</span> self<span class="k2">[</span>x<span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">=</span><span class="k3">&gt;</span> self<span class="k2">[</span>y<span class="k2">]</span> <span class="k2">}</span></td></tr><tr><td class="number">4</td><td>  end</td></tr><tr><td class="number">5</td><td>end</td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>h <span class="k3">=</span> Hash.new</td></tr><tr><td class="number">8</td><td>File.new<span class="k2">(</span> ARGV<span class="k2">[</span> <span class="n">0</span> <span class="k2">]</span> <span class="k2">)</span>.read.split<span class="k2">(</span> <span class="k3">/</span> <span class="k3">/</span> <span class="k2">)</span>.each<span class="k2">{</span> <span class="k3">|</span>word<span class="k3">|</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">if</span> <span class="k1">not</span> h.has_key? word</td></tr><tr><td class="number">10</td><td>    h<span class="k2">[</span> word <span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span></td></tr><tr><td class="number">11</td><td>  end</td></tr><tr><td class="number">12</td><td>  h<span class="k2">[</span> word <span class="k2">]</span> <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span></td></tr><tr><td class="number">13</td><td><span class="k2">}</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>h.wordsort<span class="k2">[</span> <span class="k3">-</span><span class="n">8</span> .. <span class="k3">-</span><span class="n">1</span> <span class="k2">]</span>.reverse.each<span class="k2">{</span> <span class="k3">|</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k3">|</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_631.html" target="_blank">puts</a> <span class="s">"#{key} : #{h[key]}"</span> <span class="k2">}</span></td></tr></tbody></table></div></div><p>
On the following string:<br />&quot;hello world hello world this is a thing and stuff and whatever foo bar hello world&quot;</p><p>produces<br />hello : 3<br />and : 2<br />world : 2<br />whatever : 1<br />thing : 1<br />bar : 1<br />foo : 1<br />world<br /> : 1</p><p>Now someone post a perl version.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Wed, 22 Nov 2006 10:13:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>edit: fixes</p><div class="source-code snippet"><div class="inner"><pre>use IO::File<span class="k2">;</span>
our %hash<span class="k2">;</span>

<span class="k1">for</span><span class="k2">(</span>split <span class="k3">/</span> <span class="k3">/</span>, join<span class="k2">(</span><span class="s">''</span>, IO::File-&gt;new<span class="k2">(</span>$ARGV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>getlines<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
   chomp<span class="k2">;</span>
   $hash<span class="k2">{</span>$_<span class="k2">}</span> <span class="k3">=</span> <span class="n">0</span> <span class="k1">if</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a> $hash<span class="k2">{</span>$_<span class="k2">}</span><span class="k2">;</span>
   $hash<span class="k2">{</span>$_<span class="k2">}</span><span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>

print <span class="s">"$_ : $hash{$_}\n"</span> <span class="k1">for</span><span class="k2">(</span> reverse sort <span class="k2">{</span> $hash<span class="k2">{</span>$a<span class="k2">}</span> cmp $hash<span class="k2">{</span>$b<span class="k2">}</span> <span class="k2">}</span> keys %hash <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

or a little uglier:</p><div class="source-code snippet"><div class="inner"><pre>our %hash<span class="k2">;</span>

<span class="k1">for</span><span class="k2">(</span>split<span class="k2">(</span><span class="k3">/</span> <span class="k3">/</span>, `cat $ARGV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>`<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
   chomp<span class="k2">;</span>
   $hash<span class="k2">{</span>$_<span class="k2">}</span> <span class="k3">=</span> <span class="n">0</span> <span class="k1">if</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a> $hash<span class="k2">{</span>$_<span class="k2">}</span><span class="k2">;</span>
   $hash<span class="k2">{</span>$_<span class="k2">}</span><span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>

print <span class="s">"$_ : $hash{$_}\n"</span> <span class="k1">for</span><span class="k2">(</span> reverse sort <span class="k2">{</span> $hash<span class="k2">{</span>$a<span class="k2">}</span> cmp $hash<span class="k2">{</span>$b<span class="k2">}</span> <span class="k2">}</span> keys %hash <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>


edit, I forgot to post the output from both:</p><pre>hello : 3
world : 3
and : 2
this : 1
thing : 1
stuff : 1
foo : 1
bar : 1
whatever : 1
is : 1
a : 1</pre><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 22 Nov 2006 10:39:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>main <span class="k3">=</span> interact <span class="k2">(</span>unlines . map sho . sortBy cmp . map freq . group . sort . words<span class="k2">)</span>

freq ws <span class="k3">=</span> <span class="k2">(</span>head ws, length ws<span class="k2">)</span>

cmp <span class="k2">(</span>_,c1<span class="k2">)</span> <span class="k2">(</span>_,c2<span class="k2">)</span> <span class="k3">=</span> compare c2 c1

sho <span class="k2">(</span>w,c<span class="k2">)</span> <span class="k3">=</span> w <span class="k3">+</span><span class="k3">+</span> <span class="s">" "</span> <span class="k3">+</span><span class="k3">+</span> show c
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Wed, 22 Nov 2006 13:16:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You suck.  You all, each one of you, suck.</p><p>You and your stupid &quot;other languages.&quot;  At least it&#39;s not Java <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 22 Nov 2006 14:26:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>C++ + Qt4:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;QtCore&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>QMap<span class="k3">&lt;</span>QString, int&gt; hash<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">bool</span> valueCmp<span class="k2">(</span><span class="k1">const</span> QString <span class="k3">&amp;</span>s1, <span class="k1">const</span> QString <span class="k3">&amp;</span>s2<span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>   <span class="k1">return</span> hash<span class="k2">[</span>s1.toLower<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span> <span class="k3">&gt;</span> hash<span class="k2">[</span>s2.toLower<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>   QStringList sl<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>   <span class="k1">if</span><span class="k2">(</span>argc <span class="k3">&lt;</span> <span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">17</td><td>      <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td>   QFile fh<span class="k2">(</span>argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>fh.open<span class="k2">(</span>QIODevice::ReadOnly<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">21</td><td>      <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>   sl <span class="k3">=</span> QString<span class="k2">(</span>fh.readAll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>.split<span class="k2">(</span>QRegExp<span class="k2">(</span><span class="s">"\\s"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>   <span class="k1">if</span><span class="k2">(</span>sl.last<span class="k2">(</span><span class="k2">)</span>.isEmpty<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> sl.removeLast<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>   <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> sl.count<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>      <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>hash.contains<span class="k2">(</span>sl<span class="k3">&lt;</span>i&gt;<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td>         hash<span class="k2">[</span>sl<span class="k3">&lt;</span>i&gt;<span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>         hash<span class="k2">[</span>sl<span class="k3">&lt;</span>i&gt;<span class="k2">]</span><span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>   QList<span class="k3">&lt;</span>QString&gt; keys <span class="k3">=</span> hash.keys<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>   qSort<span class="k2">(</span>keys.begin<span class="k2">(</span><span class="k2">)</span>, keys.end<span class="k2">(</span><span class="k2">)</span>, valueCmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>   foreach <span class="k2">(</span>QString <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a>, keys<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%s : %i\n"</span>, qPrintable<span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">)</span>, hash<span class="k2">[</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

output:
</p><pre>world : 3
hello : 3
and : 2
this : 1
whatever : 1
thing : 1
is : 1
stuff : 1
bar : 1
a : 1
foo : 1</pre><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 22 Nov 2006 15:18:17 +0000</pubDate>
	</item>
</rss>
