<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1891445128304677692</id><updated>2011-11-27T16:38:33.503-08:00</updated><title type='text'>The Python Blog or 15 minutes of python a day!?!</title><subtitle type='html'>This blog should be my drop back to the open  source comunity. It is devoted to Python, the language i find myself using quite often to just-do-the-job. My small trips and tricks  while i'm using it. And how i use it, and what for. And you know things like that.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1891445128304677692.post-3107100733814708241</id><published>2007-06-22T11:54:00.000-07:00</published><updated>2007-06-22T12:31:45.731-07:00</updated><title type='text'>Burglars cops treasures and python, this time we got it all.</title><content type='html'>So we got these burglars who have this map that shows where the treasures are. Hmmm right, this is clear. Then we got these cops that want to stop the burglars. Now the map looks something like this.&lt;br /&gt;&lt;br /&gt;4 3 3 3&lt;br /&gt;3  -1  2&lt;br /&gt;-1  -1 -1&lt;br /&gt;3  12  7&lt;br /&gt;&lt;br /&gt;The first row contains some stupid numbers showing different things, because the solution of this problem is supposed to be written in C, but hey fuck C and it's stupid libraries ( this from a guy who makes a living like a professional C programmer - me ) The most important number from the first row is the second one which shows the time ticks the burglars have before the cops show up. The rest of the numbers say what's the array height and width (useless in  python and in fact in C if you take the time to code is right).&lt;br /&gt;&lt;br /&gt;Now the rules are simple. The burglars have the map so they know where the treasures are. Each treasure is represented by a positive number showing the amount of money the gain when they reach it. The cells with negative numbers does not contain treasures and they cost money to be dug. Each cell is dug for one tick time. The cops will come in K ticks of time where K is the second number in the first row. In order to get to a cell the burglars must dug out all the cell in it's column prior to it. The burglars may start from any column and stop digging within the column whenever they want.&lt;br /&gt;&lt;br /&gt;   Make a program that finds the maximum amount of money the burglars can gain without being caught from the cops.&lt;br /&gt;&lt;br /&gt;   He he, me lazy so code in python.&lt;br /&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;span class="slc"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; os&lt;span class="sym"&gt;,&lt;/span&gt; sys&lt;br /&gt;K &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt; &lt;span class="slc"&gt;# edinici vreme, broi kletki koito mogat da izkopaqt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;GetData&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="str"&gt;''&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt; f &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;open&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="str"&gt;'r'&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt; data &lt;span class="sym"&gt;=&lt;/span&gt; f&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;readlines&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt; f&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;close&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt; params &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; data&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;].&lt;/span&gt;&lt;span class="kwd"&gt;split&lt;/span&gt;&lt;span class="sym"&gt;():&lt;/span&gt;&lt;br /&gt;  params&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; data &lt;span class="sym"&gt;=&lt;/span&gt; data&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;data&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__len__&lt;/span&gt;&lt;span class="sym"&gt;()]&lt;/span&gt;&lt;br /&gt; array &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;for&lt;/span&gt; d &lt;span class="kwa"&gt;in&lt;/span&gt; data&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;  array&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;d&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;split&lt;/span&gt;&lt;span class="sym"&gt;())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="kwa"&gt;return&lt;/span&gt; &lt;span class="sym"&gt;(&lt;/span&gt;params&lt;span class="sym"&gt;,&lt;/span&gt; array&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;class&lt;/span&gt; PreData&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;__init__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; t&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; m&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;  self&lt;span class="sym"&gt;.&lt;/span&gt;time &lt;span class="sym"&gt;=&lt;/span&gt; t&lt;br /&gt;  self&lt;span class="sym"&gt;.&lt;/span&gt;money &lt;span class="sym"&gt;=&lt;/span&gt; m&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;__repr__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt; &lt;span class="str"&gt;'Time: '&lt;/span&gt;&lt;span class="sym"&gt;+&lt;/span&gt;&lt;span class="kwb"&gt;str&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;time&lt;span class="sym"&gt;)+&lt;/span&gt;&lt;span class="str"&gt;' Money: '&lt;/span&gt;&lt;span class="sym"&gt;+&lt;/span&gt;&lt;span class="kwb"&gt;str&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;money&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;__str__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt; &lt;span class="str"&gt;'Time: '&lt;/span&gt;&lt;span class="sym"&gt;+&lt;/span&gt;&lt;span class="kwb"&gt;str&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;time&lt;span class="sym"&gt;)+&lt;/span&gt;&lt;span class="str"&gt;' Money: '&lt;/span&gt;&lt;span class="sym"&gt;+&lt;/span&gt;&lt;span class="kwb"&gt;str&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;money&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;GetPreData&lt;/span&gt;&lt;span class="sym"&gt;():&lt;/span&gt;&lt;br /&gt; columns &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt; tmpK &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt; tmpAward &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt; r &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt; c &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;global&lt;/span&gt; K&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="sym"&gt;((&lt;/span&gt;N&lt;span class="sym"&gt;,&lt;/span&gt;K&lt;span class="sym"&gt;,&lt;/span&gt;L&lt;span class="sym"&gt;,&lt;/span&gt;D&lt;span class="sym"&gt;),&lt;/span&gt; data&lt;span class="sym"&gt;) =&lt;/span&gt; &lt;span class="kwd"&gt;GetData&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="str"&gt;'input'&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;for&lt;/span&gt; c &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;xrange&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; L&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;  treasures &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;  tmpC &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwd"&gt;PreData&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; r &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;xrange&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; D&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;   tmpC&lt;span class="sym"&gt;.&lt;/span&gt;time &lt;span class="sym"&gt;=&lt;/span&gt; tmpC&lt;span class="sym"&gt;.&lt;/span&gt;time &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;br /&gt;   tmpC&lt;span class="sym"&gt;.&lt;/span&gt;money &lt;span class="sym"&gt;=&lt;/span&gt; tmpC&lt;span class="sym"&gt;.&lt;/span&gt;money &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;data&lt;span class="sym"&gt;[&lt;/span&gt;r&lt;span class="sym"&gt;][&lt;/span&gt;c&lt;span class="sym"&gt;])&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwa"&gt;if&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;data&lt;span class="sym"&gt;[&lt;/span&gt;r&lt;span class="sym"&gt;][&lt;/span&gt;c&lt;span class="sym"&gt;]) &amp;gt;&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwa"&gt;if&lt;/span&gt; tmpC&lt;span class="sym"&gt;.&lt;/span&gt;time &lt;span class="sym"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;K&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwa"&gt;break&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwa"&gt;if&lt;/span&gt; tmpC&lt;span class="sym"&gt;.&lt;/span&gt;money &lt;span class="sym"&gt;&amp;gt;&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;     treasures&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwd"&gt;PreData&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;tmpC&lt;span class="sym"&gt;.&lt;/span&gt;time&lt;span class="sym"&gt;,&lt;/span&gt; tmpC&lt;span class="sym"&gt;.&lt;/span&gt;money&lt;span class="sym"&gt;))&lt;/span&gt;&lt;br /&gt;     tmpC&lt;span class="sym"&gt;.&lt;/span&gt;time &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt;     tmpC&lt;span class="sym"&gt;.&lt;/span&gt;money &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  columns&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;treasures&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;return&lt;/span&gt; columns&lt;br /&gt;&lt;br /&gt;maxMoney&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;Recursion&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;cols&lt;span class="sym"&gt;=[],&lt;/span&gt; c&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; r&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; money&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; time&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;global&lt;/span&gt; maxMoney&lt;br /&gt;&lt;br /&gt; &lt;span class="kwa"&gt;if&lt;/span&gt; c &lt;span class="sym"&gt;&amp;gt;=&lt;/span&gt; cols&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__len__&lt;/span&gt;&lt;span class="sym"&gt;():&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;if&lt;/span&gt; r &lt;span class="sym"&gt;&amp;gt;=&lt;/span&gt; cols&lt;span class="sym"&gt;[&lt;/span&gt;c&lt;span class="sym"&gt;].&lt;/span&gt;&lt;span class="kwd"&gt;__len__&lt;/span&gt;&lt;span class="sym"&gt;():&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;if&lt;/span&gt; &lt;span class="sym"&gt;(&lt;/span&gt;cols&lt;span class="sym"&gt;[&lt;/span&gt;c&lt;span class="sym"&gt;][&lt;/span&gt;r&lt;span class="sym"&gt;].&lt;/span&gt;time&lt;span class="sym"&gt;+&lt;/span&gt;time&lt;span class="sym"&gt;) &amp;gt;&lt;/span&gt; K&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cmoney &lt;span class="sym"&gt;=&lt;/span&gt; money &lt;span class="sym"&gt;+&lt;/span&gt; cols&lt;span class="sym"&gt;[&lt;/span&gt;c&lt;span class="sym"&gt;][&lt;/span&gt;r&lt;span class="sym"&gt;].&lt;/span&gt;money&lt;br /&gt; ctime &lt;span class="sym"&gt;=&lt;/span&gt; time &lt;span class="sym"&gt;+&lt;/span&gt; cols&lt;span class="sym"&gt;[&lt;/span&gt;c&lt;span class="sym"&gt;][&lt;/span&gt;r&lt;span class="sym"&gt;].&lt;/span&gt;time&lt;br /&gt; &lt;span class="kwa"&gt;if&lt;/span&gt; maxMoney &lt;span class="sym"&gt;&amp;lt;&lt;/span&gt; cmoney&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;  maxMoney &lt;span class="sym"&gt;=&lt;/span&gt; cmoney&lt;br /&gt;&lt;br /&gt; &lt;span class="kwd"&gt;Recursion&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;cols&lt;span class="sym"&gt;,&lt;/span&gt; c &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; r&lt;span class="sym"&gt;,&lt;/span&gt; cmoney &lt;span class="sym"&gt;,&lt;/span&gt; ctime &lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="kwd"&gt;Recursion&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;cols&lt;span class="sym"&gt;,&lt;/span&gt; c&lt;span class="sym"&gt;,&lt;/span&gt; r &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; cmoney &lt;span class="sym"&gt;,&lt;/span&gt; ctime &lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;cols &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwd"&gt;GetPreData&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; cols&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__len__&lt;/span&gt;&lt;span class="sym"&gt;()):&lt;/span&gt;&lt;br /&gt; &lt;span class="kwd"&gt;Recursion&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;cols&lt;span class="sym"&gt;,&lt;/span&gt; i&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="kwa"&gt;print&lt;/span&gt; maxMoney&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now test it!&lt;br /&gt;serj@tokamak ~&gt; cat input&lt;br /&gt;4 3 3 3&lt;br /&gt;3 -1 2&lt;br /&gt;-1 -1 -1&lt;br /&gt;3 12 7&lt;br /&gt;serj@tokamak ~&gt; ./stamen.py&lt;br /&gt;10&lt;br /&gt;&lt;br /&gt;Now test it again.&lt;br /&gt;serj@tokamak ~&gt; cat input; ./stamen.py&lt;br /&gt;4 3 3 3&lt;br /&gt;3 -1 24&lt;br /&gt;-1 -1 -1&lt;br /&gt;3 12 7&lt;br /&gt;30&lt;br /&gt;&lt;br /&gt;Yes it wErks! :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1891445128304677692-3107100733814708241?l=python-a-day.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/3107100733814708241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1891445128304677692&amp;postID=3107100733814708241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/3107100733814708241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/3107100733814708241'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/2007/06/burglars-cops-treasures-and-python-this.html' title='Burglars cops treasures and python, this time we got it all.'/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1891445128304677692.post-2643708832964000339</id><published>2007-05-14T12:14:00.000-07:00</published><updated>2007-05-14T12:39:59.845-07:00</updated><title type='text'></title><content type='html'>Ok i confess i'm lazy and i like python so what good might come out of this. Yeess, oh yes an automated sudoku-python-solver. The ultimate lame implementation of a sudoku solving algorithm in python, done in an hour or two it's not capable YET of solving sudokus with more than one solution but it'll do the job for that thick whole-year-list-a-day-sudoku-calendar. So here it goes, like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;span class="line"&gt;    1 &lt;/span&gt;&lt;span class="slc"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    2 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    3 &lt;/span&gt;&lt;span class="kwa"&gt;class&lt;/span&gt; box&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    4 &lt;/span&gt; &lt;span class="slc"&gt;#value 0 means empty&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    5 &lt;/span&gt; &lt;span class="slc"&gt;#numP&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    6 &lt;/span&gt; &lt;span class="kwa"&gt;pass&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    7 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    8 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;    9 &lt;/span&gt;&lt;span class="kwa"&gt;class&lt;/span&gt; Board&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   10 &lt;/span&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;__init__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; rows&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; cols&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   11 &lt;/span&gt;  self&lt;span class="sym"&gt;.&lt;/span&gt;rows &lt;span class="sym"&gt;=&lt;/span&gt; rows&lt;br /&gt;&lt;span class="line"&gt;   12 &lt;/span&gt;  self&lt;span class="sym"&gt;.&lt;/span&gt;cols &lt;span class="sym"&gt;=&lt;/span&gt; cols&lt;br /&gt;&lt;span class="line"&gt;   13 &lt;/span&gt;  &lt;span class="kwa"&gt;print&lt;/span&gt; av&lt;br /&gt;&lt;span class="line"&gt;   14 &lt;/span&gt;  self&lt;span class="sym"&gt;.&lt;/span&gt;board &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   15 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; rows&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   16 &lt;/span&gt;   self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;MakeRow&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;size&lt;span class="sym"&gt;=&lt;/span&gt;cols&lt;span class="sym"&gt;) )&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   17 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   18 &lt;/span&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;MakeRow&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; size&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   19 &lt;/span&gt;  r &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   20 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; size&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   21 &lt;/span&gt;   r&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; &lt;span class="kwd"&gt;box&lt;/span&gt;&lt;span class="sym"&gt;() )&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   22 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   23 &lt;/span&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt; r&lt;br /&gt;&lt;span class="line"&gt;   24 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   25 &lt;/span&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;InitBoard&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; data&lt;span class="sym"&gt;=[]):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   26 &lt;/span&gt;  rw &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   27 &lt;/span&gt;  cl &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   28 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   29 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; e &lt;span class="kwa"&gt;in&lt;/span&gt; data&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   30 &lt;/span&gt;   self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;rw&lt;span class="sym"&gt;][&lt;/span&gt;cl&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;=&lt;/span&gt; e&lt;br /&gt;&lt;span class="line"&gt;   31 &lt;/span&gt;   cl &lt;span class="sym"&gt;=&lt;/span&gt; cl &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   32 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   33 &lt;/span&gt;   &lt;span class="kwa"&gt;if&lt;/span&gt; cl &lt;span class="sym"&gt;==&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;cols&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   34 &lt;/span&gt;    cl &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   35 &lt;/span&gt;    rw &lt;span class="sym"&gt;=&lt;/span&gt; rw &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   36 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   37 &lt;/span&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;GetRCInfo&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; row&lt;span class="sym"&gt;,&lt;/span&gt; col&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   38 &lt;/span&gt;  r &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   39 &lt;/span&gt;  c &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   40 &lt;/span&gt;  sq &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   41 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   42 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;cols&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   43 &lt;/span&gt;   r&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;row&lt;span class="sym"&gt;][&lt;/span&gt;i&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   44 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   45 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;rows&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   46 &lt;/span&gt;   c&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;i&lt;span class="sym"&gt;][&lt;/span&gt;col&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   47 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   48 &lt;/span&gt;  br &lt;span class="sym"&gt;= (&lt;/span&gt;row&lt;span class="sym"&gt;/&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;)*&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   49 &lt;/span&gt;  bc &lt;span class="sym"&gt;= (&lt;/span&gt;col&lt;span class="sym"&gt;/&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;)*&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   50 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   51 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; sqR &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;br&lt;span class="sym"&gt;,&lt;/span&gt; br&lt;span class="sym"&gt;+&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   52 &lt;/span&gt;   &lt;span class="kwa"&gt;for&lt;/span&gt; sqC &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;bc&lt;span class="sym"&gt;,&lt;/span&gt; bc&lt;span class="sym"&gt;+&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   53 &lt;/span&gt;    sq&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;sqR&lt;span class="sym"&gt;][&lt;/span&gt;sqC&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   54 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   55 &lt;/span&gt;  all &lt;span class="sym"&gt;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   56 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   57 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; r&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   58 &lt;/span&gt;   &lt;span class="kwa"&gt;if&lt;/span&gt; all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__contains__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   59 &lt;/span&gt;    &lt;span class="kwa"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   60 &lt;/span&gt;   all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   61 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   62 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; c&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   63 &lt;/span&gt;   &lt;span class="kwa"&gt;if&lt;/span&gt; all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__contains__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   64 &lt;/span&gt;    &lt;span class="kwa"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   65 &lt;/span&gt;   all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   66 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   67 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; sq&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   68 &lt;/span&gt;   &lt;span class="kwa"&gt;if&lt;/span&gt; all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__contains__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   69 &lt;/span&gt;    &lt;span class="kwa"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   70 &lt;/span&gt;   all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;append&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   71 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   72 &lt;/span&gt;  all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;sort&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   73 &lt;/span&gt;  all&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;remove&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   74 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   75 &lt;/span&gt;  left &lt;span class="sym"&gt;= [&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;4&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;6&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;7&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;8&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   76 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; all&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   77 &lt;/span&gt;   left&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;remove&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;i&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   78 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   79 &lt;/span&gt;  &lt;span class="kwa"&gt;return&lt;/span&gt; left&lt;br /&gt;&lt;span class="line"&gt;   80 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   81 &lt;/span&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;PrintBoard&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   82 &lt;/span&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; rw &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;rows&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   83 &lt;/span&gt;   &lt;span class="kwa"&gt;for&lt;/span&gt; cl &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;cols&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   84 &lt;/span&gt;    &lt;span class="kwa"&gt;print&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;rw&lt;span class="sym"&gt;][&lt;/span&gt;cl&lt;span class="sym"&gt;].&lt;/span&gt;value&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   85 &lt;/span&gt;   &lt;span class="kwa"&gt;print&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   86 &lt;/span&gt;  &lt;span class="kwa"&gt;print&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   87 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   88 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   89 &lt;/span&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;Solve&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   90 &lt;/span&gt;  done &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwa"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   91 &lt;/span&gt;  &lt;span class="kwa"&gt;while&lt;/span&gt; done &lt;span class="sym"&gt;!=&lt;/span&gt; &lt;span class="kwa"&gt;True&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   92 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   93 &lt;/span&gt;   &lt;span class="kwa"&gt;for&lt;/span&gt; r &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;rows&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   94 &lt;/span&gt;    &lt;span class="kwa"&gt;for&lt;/span&gt; c &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;cols&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   95 &lt;/span&gt;     &lt;span class="kwa"&gt;if&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;r&lt;span class="sym"&gt;][&lt;/span&gt;c&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;==&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   96 &lt;/span&gt;      av &lt;span class="sym"&gt;=&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;GetRCInfo&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;r&lt;span class="sym"&gt;,&lt;/span&gt;c&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   97 &lt;/span&gt;      &lt;span class="kwa"&gt;if&lt;/span&gt; av&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__len__&lt;/span&gt;&lt;span class="sym"&gt;() ==&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   98 &lt;/span&gt;       self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;r&lt;span class="sym"&gt;][&lt;/span&gt;c&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;=&lt;/span&gt; av&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;   99 &lt;/span&gt;       &lt;span class="kwa"&gt;print&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Adding &amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; av&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; coords row:&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; r&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; col:&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; c&lt;br /&gt;&lt;span class="line"&gt;  100 &lt;/span&gt;       self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;PrintBoard&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  101 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  102 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  103 &lt;/span&gt;   done &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwa"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  104 &lt;/span&gt;   &lt;span class="kwa"&gt;for&lt;/span&gt; r &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;rows&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  105 &lt;/span&gt;    &lt;span class="kwa"&gt;for&lt;/span&gt; c &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;cols&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  106 &lt;/span&gt;     &lt;span class="kwa"&gt;if&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;board&lt;span class="sym"&gt;[&lt;/span&gt;r&lt;span class="sym"&gt;][&lt;/span&gt;c&lt;span class="sym"&gt;].&lt;/span&gt;value &lt;span class="sym"&gt;==&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  107 &lt;/span&gt;      done &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwa"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  108 &lt;/span&gt;      &lt;span class="kwa"&gt;break&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  109 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  110 &lt;/span&gt;b &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwd"&gt;Board&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  111 &lt;/span&gt;b&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;InitBoard&lt;/span&gt;&lt;span class="sym"&gt;([&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;6&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  112 &lt;/span&gt;  &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;6&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  113 &lt;/span&gt;  &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;7&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  114 &lt;/span&gt;  &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;6&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;7&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  115 &lt;/span&gt;  &lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;4&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;8&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;7&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  116 &lt;/span&gt;  &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;8&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  117 &lt;/span&gt;  &lt;span class="num"&gt;6&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  118 &lt;/span&gt;  &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;7&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  119 &lt;/span&gt;  &lt;span class="num"&gt;9&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;7&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;6&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="num"&gt;8&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  120 &lt;/span&gt; &lt;span class="sym"&gt;])&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  121 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  122 &lt;/span&gt;b&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;PrintBoard&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  123 &lt;/span&gt;&lt;span class="kwa"&gt;print&lt;/span&gt; b&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;Solve&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  124 &lt;/span&gt;&lt;br /&gt;&lt;span class="line"&gt;  125 &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1891445128304677692-2643708832964000339?l=python-a-day.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/2643708832964000339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1891445128304677692&amp;postID=2643708832964000339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/2643708832964000339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/2643708832964000339'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/2007/05/ok-i-confess-im-lazy-and-i-like-python.html' title=''/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1891445128304677692.post-4252532822049848597</id><published>2007-04-27T00:43:00.000-07:00</published><updated>2007-04-27T00:52:54.660-07:00</updated><title type='text'>More on reg exps. Parsing a C or C++ file with regexps in Python</title><content type='html'>Ok, so while i'm on the regexp wave. It's plain dumb but works fine. I know i could have used ctags or smth else, but for the sake of it. Also I googled for an example like this one but found nothing. It's always a good idea to have smth like this i case you need to generate prototypes for a long C file or nomatter what.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;a name="line1"&gt; 1&lt;/a&gt; &lt;font color="#444444"&gt;#!/usr/bin/env python&lt;br /&gt;&lt;a name="line2"&gt; 2&lt;/a&gt; &lt;br /&gt;&lt;a name="line3"&gt; 3&lt;/a&gt; &lt;/font&gt;&lt;font color="a52a2a"&gt;&lt;strong&gt;import&lt;/strong&gt;&lt;/font&gt; os, re, sys&lt;br /&gt;&lt;a name="line4"&gt; 4&lt;/a&gt; &lt;br /&gt;&lt;a name="line5"&gt; 5&lt;/a&gt; class Cexploder&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line6"&gt; 6&lt;/a&gt;     Body = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;{[^{}]*}&amp;quot;&lt;/font&gt;, re.DOTALL|re.MULTILINE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line7"&gt; 7&lt;/a&gt;     Func = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;(&lt;font color="#77dd77"&gt;\w&lt;/font&gt;+&lt;font color="#77dd77"&gt;\s&lt;/font&gt;+)*&lt;font color="#77dd77"&gt;\w&lt;/font&gt;+&lt;font color="#77dd77"&gt;\s&lt;/font&gt;*&lt;font color="#77dd77"&gt;\(&lt;/font&gt;.*?&lt;font color="#77dd77"&gt;\)&lt;/font&gt;&amp;quot;&lt;/font&gt;, re.DOTALL| re.MULTILINE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line8"&gt; 8&lt;/a&gt;     MultiLineComment = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;/&lt;font color="#77dd77"&gt;\*&lt;/font&gt;.*?&lt;font color="#77dd77"&gt;\*&lt;/font&gt;/&amp;quot;&lt;/font&gt;, re.DOTALL|re.MULTILINE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line9"&gt; 9&lt;/a&gt;     OneLineComment = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;//.*?&lt;font color="#2040a0"&gt;$&amp;quot;&lt;/font&gt;&lt;/font&gt;, re.DOTALL|re.MULTILINE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line10"&gt;10&lt;/a&gt;     CppDirectives = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;^&lt;font color="#77dd77"&gt;\s&lt;/font&gt;*#.*?&lt;font color="#2040a0"&gt;$&amp;quot;&lt;/font&gt;&lt;/font&gt;, re.DOTALL|re.MULTILINE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line11"&gt;11&lt;/a&gt;     &lt;font color="#444444"&gt;#^\s*#(.*?(\\\n)*)+\n&lt;br /&gt;&lt;a name="line12"&gt;12&lt;/a&gt;     &lt;br /&gt;&lt;a name="line13"&gt;13&lt;/a&gt;     &lt;/font&gt;def __init__&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;self, File=&lt;font color="#008000"&gt;''&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line14"&gt;14&lt;/a&gt;         f = &lt;font color="a52a2a"&gt;&lt;strong&gt;open&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;File, &lt;font color="#008000"&gt;'r'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line15"&gt;15&lt;/a&gt;         self.data = f.&lt;font color="a52a2a"&gt;&lt;strong&gt;read&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line16"&gt;16&lt;/a&gt;         f.&lt;font color="a52a2a"&gt;&lt;strong&gt;close&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line17"&gt;17&lt;/a&gt; &lt;br /&gt;&lt;a name="line18"&gt;18&lt;/a&gt;     def GetPrototypes&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;self&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line19"&gt;19&lt;/a&gt;         FuncList = &lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line20"&gt;20&lt;/a&gt;         pdata = self.data&lt;br /&gt;&lt;a name="line21"&gt;21&lt;/a&gt;         pdata = self.OneLineComment.sub&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;''&lt;/font&gt;, pdata&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line22"&gt;22&lt;/a&gt;         pdata = self.MultiLineComment.sub&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;''&lt;/font&gt;, pdata&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line23"&gt;23&lt;/a&gt;         pdata = self.CppDirectives.sub&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;''&lt;/font&gt;, pdata&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line24"&gt;24&lt;/a&gt; &lt;br /&gt;&lt;a name="line25"&gt;25&lt;/a&gt;         &lt;strong&gt;while&lt;/strong&gt; self.Body.search&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;pdata&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; != None:&lt;br /&gt;&lt;a name="line26"&gt;26&lt;/a&gt;             pdata = self.Body.sub&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;''&lt;/font&gt;, pdata&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line27"&gt;27&lt;/a&gt;         &lt;br /&gt;&lt;a name="line28"&gt;28&lt;/a&gt;         fiter = self.Func.finditer&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;pdata&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line29"&gt;29&lt;/a&gt;         &lt;strong&gt;for&lt;/strong&gt; i in fiter:&lt;br /&gt;&lt;a name="line30"&gt;30&lt;/a&gt;             FuncList.append&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt; pdata&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;i.start&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; : i.end&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line31"&gt;31&lt;/a&gt;         &lt;br /&gt;&lt;a name="line32"&gt;32&lt;/a&gt;         &lt;strong&gt;return&lt;/strong&gt; FuncList&lt;br /&gt;&lt;a name="line33"&gt;33&lt;/a&gt; &lt;br /&gt;&lt;a name="line34"&gt;34&lt;/a&gt; c = Cexploder&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;sys.argv&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;1&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line35"&gt;35&lt;/a&gt; f = c.GetPrototypes&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line36"&gt;36&lt;/a&gt; &lt;strong&gt;for&lt;/strong&gt; i in f:&lt;br /&gt;&lt;a name="line37"&gt;37&lt;/a&gt;     &lt;font color="a52a2a"&gt;&lt;strong&gt;print&lt;/strong&gt;&lt;/font&gt; i&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1891445128304677692-4252532822049848597?l=python-a-day.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/4252532822049848597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1891445128304677692&amp;postID=4252532822049848597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/4252532822049848597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/4252532822049848597'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/2007/04/more-on-reg-exps-parsing-c-or-c-file.html' title='More on reg exps. Parsing a C or C++ file with regexps in Python'/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1891445128304677692.post-8978069134989910509</id><published>2007-04-26T23:47:00.000-07:00</published><updated>2007-04-27T00:25:40.402-07:00</updated><title type='text'>Regular expressions for fun and profit!</title><content type='html'>So the year is 2007 the century 21-th, but still there are ppl who deny using regular expressions to do the job. Why? I don't know. May be they just don't know how to do it, may be they think it's slow, or they just never heard of it. But it makes me sick looking at lame pseudo parsers their awkward logic and tons of stupid useless code around for something as simple as digging a file for a pattern. I've seen guys spending a day writing code that can be replaced with just one line using a regular expression, and why? Do they gain something out of this? Performance? Speed? No, they usualy do this for a lame script to automate something and they don't care much if it's gonna take 10mS ot a second. The truth is they realy don't know how much easier it just because they have never done it before. &lt;br /&gt;&lt;br /&gt;So for all of them here's a example of a quick and dirty script I used to generate a report. It simply goes through every file in a directory and looks for the following pattern "/*#.*?#*/". It's a bracket structure taken as a comment within C files. It's simple and i use it to write stuff about something that later might end up in a report. Sometimes i write in there something like "See line 1923" or "Line 192" wich ofcourse means a reference to that line, that's why i made my script look for such patterns and if one exists it'll dump it. &lt;br /&gt;&lt;br /&gt;So enough goofing around this is the script:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;a name="line1"&gt; 1&lt;/a&gt; &lt;font color="#444444"&gt;#!/usr/bin/env python&lt;br /&gt;&lt;a name="line2"&gt; 2&lt;/a&gt; &lt;br /&gt;&lt;a name="line3"&gt; 3&lt;/a&gt; &lt;/font&gt;&lt;font color="a52a2a"&gt;&lt;strong&gt;import&lt;/strong&gt;&lt;/font&gt; os, re, sys&lt;br /&gt;&lt;a name="line4"&gt; 4&lt;/a&gt; &lt;br /&gt;&lt;a name="line5"&gt; 5&lt;/a&gt; Cover = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;/&lt;font color="#77dd77"&gt;\*&lt;/font&gt;&lt;font color="#77dd77"&gt;\#&lt;/font&gt;.*?&lt;font color="#77dd77"&gt;\#&lt;/font&gt;&lt;font color="#77dd77"&gt;\*&lt;/font&gt;/&amp;quot;&lt;/font&gt;, re.DOTALL|re.MULTILINE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line6"&gt; 6&lt;/a&gt; SeeAlso = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;(see|line)+.*?&lt;font color="#77dd77"&gt;\d&lt;/font&gt;+&amp;quot;&lt;/font&gt;, re.DOTALL|re.MULTILINE|re.IGNORECASE&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line7"&gt; 7&lt;/a&gt; Number = re.compile&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;&lt;font color="#77dd77"&gt;\d&lt;/font&gt;+&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line8"&gt; 8&lt;/a&gt; &lt;br /&gt;&lt;a name="line9"&gt; 9&lt;/a&gt; class Result:&lt;br /&gt;&lt;a name="line10"&gt;10&lt;/a&gt;     pass&lt;br /&gt;&lt;a name="line11"&gt;11&lt;/a&gt; &lt;br /&gt;&lt;a name="line12"&gt;12&lt;/a&gt; def GetLinesAround&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;Data = &lt;font color="#008000"&gt;''&lt;/font&gt;, Line = 0, LinesAround = 5&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line13"&gt;13&lt;/a&gt;     ret = &lt;font color="#008000"&gt;''&lt;/font&gt;&lt;br /&gt;&lt;a name="line14"&gt;14&lt;/a&gt;     d = Data.&lt;font color="a52a2a"&gt;&lt;strong&gt;split&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;'&lt;font color="#77dd77"&gt;\n&lt;/font&gt;'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line15"&gt;15&lt;/a&gt;     &lt;br /&gt;&lt;a name="line16"&gt;16&lt;/a&gt;     &lt;strong&gt;if&lt;/strong&gt; Line &amp;gt;= LinesAround/2:&lt;br /&gt;&lt;a name="line17"&gt;17&lt;/a&gt;         upper = Line - LinesAround/2&lt;br /&gt;&lt;a name="line18"&gt;18&lt;/a&gt;     &lt;strong&gt;else&lt;/strong&gt;:&lt;br /&gt;&lt;a name="line19"&gt;19&lt;/a&gt;         upper = 0;&lt;br /&gt;&lt;a name="line20"&gt;20&lt;/a&gt;     &lt;br /&gt;&lt;a name="line21"&gt;21&lt;/a&gt;     lower = Line + LinesAround/2 + 1&lt;br /&gt;&lt;a name="line22"&gt;22&lt;/a&gt;     &lt;strong&gt;if&lt;/strong&gt; lower &amp;gt; d.__len__&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line23"&gt;23&lt;/a&gt;         lower = d.__len__&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line24"&gt;24&lt;/a&gt;     &lt;br /&gt;&lt;a name="line25"&gt;25&lt;/a&gt;     try:&lt;br /&gt;&lt;a name="line26"&gt;26&lt;/a&gt;         d = d&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;upper : lower&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line27"&gt;27&lt;/a&gt;     except Exception: &lt;br /&gt;&lt;a name="line28"&gt;28&lt;/a&gt;         &lt;strong&gt;return&lt;/strong&gt; ret&lt;br /&gt;&lt;a name="line29"&gt;29&lt;/a&gt; &lt;br /&gt;&lt;a name="line30"&gt;30&lt;/a&gt;     &lt;strong&gt;for&lt;/strong&gt; s in d:&lt;br /&gt;&lt;a name="line31"&gt;31&lt;/a&gt;         ret = ret + str&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;s&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; + &lt;font color="#008000"&gt;'&lt;font color="#77dd77"&gt;\n&lt;/font&gt;'&lt;/font&gt;&lt;br /&gt;&lt;a name="line32"&gt;32&lt;/a&gt; &lt;br /&gt;&lt;a name="line33"&gt;33&lt;/a&gt;     &lt;strong&gt;return&lt;/strong&gt; ret&lt;br /&gt;&lt;a name="line34"&gt;34&lt;/a&gt; &lt;br /&gt;&lt;a name="line35"&gt;35&lt;/a&gt; def GenUtReport&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;File = &lt;font color="#008000"&gt;''&lt;/font&gt;, RelativePath=&lt;font color="#008000"&gt;''&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line36"&gt;36&lt;/a&gt;     f = &lt;font color="a52a2a"&gt;&lt;strong&gt;open&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;File, &lt;font color="#008000"&gt;'r'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line37"&gt;37&lt;/a&gt;     data = f.&lt;font color="a52a2a"&gt;&lt;strong&gt;read&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line38"&gt;38&lt;/a&gt;     f.&lt;font color="a52a2a"&gt;&lt;strong&gt;close&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line39"&gt;39&lt;/a&gt; &lt;br /&gt;&lt;a name="line40"&gt;40&lt;/a&gt;     ret = &lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line41"&gt;41&lt;/a&gt;     &lt;br /&gt;&lt;a name="line42"&gt;42&lt;/a&gt;     utIter = Cover.finditer&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;data&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line43"&gt;43&lt;/a&gt;     &lt;strong&gt;for&lt;/strong&gt; i in utIter:&lt;br /&gt;&lt;a name="line44"&gt;44&lt;/a&gt;         res = Result&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line45"&gt;45&lt;/a&gt;         &lt;br /&gt;&lt;a name="line46"&gt;46&lt;/a&gt;         avLine = data&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;0:i.start&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;.count&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;'&lt;font color="#77dd77"&gt;\n&lt;/font&gt;'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; + &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;data&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;i.start&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:i.end&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;.count&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;'&lt;font color="#77dd77"&gt;\n&lt;/font&gt;'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;/2&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line47"&gt;47&lt;/a&gt;         &lt;br /&gt;&lt;a name="line48"&gt;48&lt;/a&gt;         res.fInfo = &lt;font color="#008000"&gt;&amp;quot;File: &amp;quot;&lt;/font&gt; + str&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;RelativePath&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; + &lt;font color="#008000"&gt;&amp;quot; Line: &amp;quot;&lt;/font&gt; + str&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;avLine&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line49"&gt;49&lt;/a&gt;         res.utInfo = data&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;i.start&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:i.end&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;.&lt;font color="a52a2a"&gt;&lt;strong&gt;split&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;':'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;1&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;.replace&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;'#*/'&lt;/font&gt;, &lt;font color="#008000"&gt;''&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line50"&gt;50&lt;/a&gt;         res.codeAroundUt = GetLinesAround&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;data, avLine&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line51"&gt;51&lt;/a&gt;         &lt;br /&gt;&lt;a name="line52"&gt;52&lt;/a&gt;         res.seeAlsoInfo = &lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line53"&gt;53&lt;/a&gt;         seeIter = SeeAlso.finditer&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;res.utInfo&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line54"&gt;54&lt;/a&gt;         &lt;strong&gt;for&lt;/strong&gt; si in seeIter:&lt;br /&gt;&lt;a name="line55"&gt;55&lt;/a&gt;             seeLine = Number.findall&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;res.utInfo&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;si.start&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:si.end&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line56"&gt;56&lt;/a&gt;             &lt;strong&gt;if&lt;/strong&gt; seeLine != None:&lt;br /&gt;&lt;a name="line57"&gt;57&lt;/a&gt;                 seeLine = seeLine&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;0&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line58"&gt;58&lt;/a&gt;                 res.seeAlsoInfo.append&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt; seeLine, 10, GetLinesAround&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;data, &lt;font color="a52a2a"&gt;&lt;strong&gt;int&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;seeLine&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;, 10&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line59"&gt;59&lt;/a&gt;         &lt;br /&gt;&lt;a name="line60"&gt;60&lt;/a&gt;         ret.append&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;res&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line61"&gt;61&lt;/a&gt;         &lt;br /&gt;&lt;a name="line62"&gt;62&lt;/a&gt;     &lt;strong&gt;return&lt;/strong&gt; ret&lt;br /&gt;&lt;a name="line63"&gt;63&lt;/a&gt; &lt;br /&gt;&lt;a name="line64"&gt;64&lt;/a&gt; def PrityPrint&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;ret = &lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line65"&gt;65&lt;/a&gt;     tmpStr = &lt;font color="#008000"&gt;''&lt;/font&gt;&lt;br /&gt;&lt;a name="line66"&gt;66&lt;/a&gt;     &lt;br /&gt;&lt;a name="line67"&gt;67&lt;/a&gt;     &lt;strong&gt;for&lt;/strong&gt; res in ret:&lt;br /&gt;&lt;a name="line68"&gt;68&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line69"&gt;69&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;/font&gt; + res.fInfo + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line70"&gt;70&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;/font&gt; + res.utInfo  + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line71"&gt;71&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;/font&gt; + res.codeAroundUt + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line72"&gt;72&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;/font&gt;        &lt;br /&gt;&lt;a name="line73"&gt;73&lt;/a&gt;         &lt;strong&gt;for&lt;/strong&gt; i in res.seeAlsoInfo:&lt;br /&gt;&lt;a name="line74"&gt;74&lt;/a&gt;             tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;See Also. Code around LINE: &amp;quot;&lt;/font&gt; + i&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;0&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; + &lt;font color="#008000"&gt;&amp;quot; (+/-)&amp;quot;&lt;/font&gt;+ str&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;i&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;1&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;/2&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; +&lt;font color="#008000"&gt;&amp;quot;&lt;font color="#77dd77"&gt;\n&lt;/font&gt;&lt;font color="#77dd77"&gt;\n&lt;/font&gt;&amp;quot;&lt;/font&gt;+ str&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;i&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;2&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line75"&gt;75&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line76"&gt;76&lt;/a&gt;         tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line77"&gt;77&lt;/a&gt;     &lt;br /&gt;&lt;a name="line78"&gt;78&lt;/a&gt;     &lt;strong&gt;return&lt;/strong&gt; tmpStr.replace&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;'&lt;font color="#77dd77"&gt;\n&lt;/font&gt;'&lt;/font&gt;, &lt;font color="#008000"&gt;'&amp;lt;br&amp;gt;'&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line79"&gt;79&lt;/a&gt; &lt;br /&gt;&lt;a name="line80"&gt;80&lt;/a&gt; tmpStr = &lt;font color="#008000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;table border=&amp;quot;&lt;/font&gt;1&lt;font color="#008000"&gt;&amp;quot;&amp;gt;&lt;br /&gt;&lt;a name="line81"&gt;81&lt;/a&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;&lt;a name="line82"&gt;82&lt;/a&gt; &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Filename, Line number&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;a name="line83"&gt;83&lt;/a&gt; &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;UT not covered reason&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;a name="line84"&gt;84&lt;/a&gt; &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Related code&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;a name="line85"&gt;85&lt;/a&gt; &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;See also&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;a name="line86"&gt;86&lt;/a&gt; &amp;lt;/tr&amp;gt;&amp;quot;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line87"&gt;87&lt;/a&gt; &lt;br /&gt;&lt;a name="line88"&gt;88&lt;/a&gt; &lt;strong&gt;for&lt;/strong&gt; r, d, f in os.walk&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;sys.argv&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;1&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;:&lt;br /&gt;&lt;a name="line89"&gt;89&lt;/a&gt;     &lt;strong&gt;for&lt;/strong&gt; file in f:&lt;br /&gt;&lt;a name="line90"&gt;90&lt;/a&gt;         tmpStr = tmpStr + PrityPrint&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;GenUtReport&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt; os.path.&lt;font color="a52a2a"&gt;&lt;strong&gt;join&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;r, file&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; , file&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;a name="line91"&gt;91&lt;/a&gt; &lt;br /&gt;&lt;a name="line92"&gt;92&lt;/a&gt; tmpStr = tmpStr + &lt;font color="#008000"&gt;&amp;quot;&amp;lt;/table&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;a name="line93"&gt;93&lt;/a&gt; &lt;font color="a52a2a"&gt;&lt;strong&gt;print&lt;/strong&gt;&lt;/font&gt; tmpStr&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So you see in less than 100 lines I did it all. Parsing, referencing, generating a report in html. It took me less than 2 hours to finish this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1891445128304677692-8978069134989910509?l=python-a-day.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/8978069134989910509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1891445128304677692&amp;postID=8978069134989910509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/8978069134989910509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/8978069134989910509'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/2007/04/regular-expressions-for-fun-and-profit.html' title='Regular expressions for fun and profit!'/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1891445128304677692.post-4527687700894499492</id><published>2007-03-06T02:34:00.000-08:00</published><updated>2007-04-26T10:09:44.185-07:00</updated><title type='text'>FuzzXml</title><content type='html'>Ok si i was playing around the other day with a Jabber server written in java. I don't quite remember the name but it had a nice web configuration interface. I remember thinking "why not just throw some garbage at this little server of ours?" Yeah sounds like a nice idea! Lets proceede in python of course. First we know jabber is based on XML, second we know it can work without encryption. How much easier could it be? I made a list of all the xml files i could find in my home dir. From all the browsing on the net for this year and a half since i got this laptop i had a hell of alot of them. I did "cat" them all into one big.blob, then refined it with "strings" and the resulting pile of XML stored as good.blob.&lt;br /&gt;&lt;br /&gt;serj@tokamak:~$ du -h good.blob&lt;br /&gt;2.4M    good.blob&lt;br /&gt;&lt;br /&gt;Now all i need is a bit of python to make this work.&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;span class="slc"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; sys&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; time&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; random&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; socket&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; string&lt;br /&gt;&lt;span class="kwa"&gt;import&lt;/span&gt; threading&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;fuzzFile&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; chunkLen&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt; f &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;open&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="str"&gt;'r'&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt; data &lt;span class="sym"&gt;=&lt;/span&gt; f&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;read&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt; f&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;close&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; retStr &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;)):&lt;/span&gt;&lt;br /&gt;      x &lt;span class="sym"&gt;=&lt;/span&gt; random&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;randint&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt;data&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__len__&lt;/span&gt;&lt;span class="sym"&gt;());&lt;/span&gt;&lt;br /&gt;     retStr &lt;span class="sym"&gt;=&lt;/span&gt; retStr &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="kwb"&gt;str&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; data&lt;span class="sym"&gt;[&lt;/span&gt;  x &lt;span class="sym"&gt;:&lt;/span&gt; x&lt;span class="sym"&gt;+&lt;/span&gt;random&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;randint&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;chunkLen&lt;span class="sym"&gt;))  ] ) +&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;&lt;/span&gt;&lt;span class="esc"&gt;\n\n&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt; &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;random&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;randint&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;)) ):&lt;/span&gt;&lt;br /&gt;         retStr &lt;span class="sym"&gt;=&lt;/span&gt; retStr &lt;span class="sym"&gt;+&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;&lt;/span&gt;&lt;span class="esc"&gt;\n&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="kwa"&gt;return&lt;/span&gt; retStr&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;class&lt;/span&gt; &lt;span class="kwd"&gt;FuzzAServer&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;threading&lt;span class="sym"&gt;.&lt;/span&gt;Thread&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;__init__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; addr&lt;span class="sym"&gt;,&lt;/span&gt; port&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; chunkLen&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;     threading&lt;span class="sym"&gt;.&lt;/span&gt;Thread&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__init__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; name&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;Producer&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;addr &lt;span class="sym"&gt;=&lt;/span&gt; addr&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;port &lt;span class="sym"&gt;=&lt;/span&gt; port&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt; &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;iter&lt;/span&gt; &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;chunkLen &lt;span class="sym"&gt;=&lt;/span&gt; chunkLen&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;run&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwa"&gt;while&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;         &lt;span class="kwa"&gt;try&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;             sox &lt;span class="sym"&gt;=&lt;/span&gt; socket&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;socket&lt;/span&gt; &lt;span class="sym"&gt;(&lt;/span&gt; socket&lt;span class="sym"&gt;.&lt;/span&gt;AF_INET&lt;span class="sym"&gt;,&lt;/span&gt; socket&lt;span class="sym"&gt;.&lt;/span&gt;SOCK_STREAM &lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;             sox&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;connect&lt;/span&gt;&lt;span class="sym"&gt;((&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;addr&lt;span class="sym"&gt;,&lt;/span&gt;&lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;port&lt;span class="sym"&gt;)))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span class="kwa"&gt;while&lt;/span&gt; sox&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;send&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwd"&gt;fuzzFile&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;chunkLen&lt;span class="sym"&gt;)):&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwa"&gt;pass&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             sox&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;close&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwa"&gt;except&lt;/span&gt; &lt;span class="kwc"&gt;Exception&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; err&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwa"&gt;print&lt;/span&gt; err&lt;br /&gt;&lt;br /&gt;         time&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;sleep&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;10&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;class&lt;/span&gt; &lt;span class="kwd"&gt;FuzzAClient&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;threading&lt;span class="sym"&gt;.&lt;/span&gt;Thread&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;__init__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; addr&lt;span class="sym"&gt;,&lt;/span&gt; port&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; chunkLen&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;     threading&lt;span class="sym"&gt;.&lt;/span&gt;Thread&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;__init__&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;,&lt;/span&gt; name&lt;span class="sym"&gt;=&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;Producer&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;addr &lt;span class="sym"&gt;=&lt;/span&gt; addr&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;port &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;int&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;port&lt;span class="sym"&gt;);&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt; &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;iter&lt;/span&gt; &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;     self&lt;span class="sym"&gt;.&lt;/span&gt;chunkLen &lt;span class="sym"&gt;=&lt;/span&gt; chunkLen&lt;span class="sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="kwa"&gt;def&lt;/span&gt; &lt;span class="kwd"&gt;run&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwa"&gt;while&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;         &lt;span class="kwa"&gt;try&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;             s &lt;span class="sym"&gt;=&lt;/span&gt; socket&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;socket&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;socket&lt;span class="sym"&gt;.&lt;/span&gt;AF_INET&lt;span class="sym"&gt;,&lt;/span&gt; socket&lt;span class="sym"&gt;.&lt;/span&gt;SOCK_STREAM&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;             s&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;bind&lt;/span&gt;&lt;span class="sym"&gt;((&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;addr&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;port&lt;span class="sym"&gt;))&lt;/span&gt;&lt;br /&gt;             s&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;listen&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;             conn&lt;span class="sym"&gt;,&lt;/span&gt; addr &lt;span class="sym"&gt;=&lt;/span&gt; s&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;accept&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwa"&gt;print&lt;/span&gt; &lt;span class="str"&gt;'Connected by'&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; addr&lt;br /&gt;             &lt;span class="kwa"&gt;while&lt;/span&gt; &lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;                 data &lt;span class="sym"&gt;=&lt;/span&gt; conn&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;recv&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;1024&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwa"&gt;print&lt;/span&gt; data&lt;span class="sym"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                 &lt;span class="kwa"&gt;if not&lt;/span&gt; data&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;                     &lt;span class="kwa"&gt;break&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                 data &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwd"&gt;fuzzFile&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;file&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwb"&gt;iter&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; self&lt;span class="sym"&gt;.&lt;/span&gt;chunkLen&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwa"&gt;print&lt;/span&gt; data&lt;br /&gt;&lt;br /&gt;                 conn&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;send&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;data&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             conn&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;close&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwa"&gt;except&lt;/span&gt; &lt;span class="kwc"&gt;Exception&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; err&lt;span class="sym"&gt;:&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwa"&gt;print&lt;/span&gt; err&lt;br /&gt;&lt;br /&gt;         s&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;shutdown&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;         s&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;close&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwa"&gt;for&lt;/span&gt; i &lt;span class="kwa"&gt;in&lt;/span&gt; &lt;span class="kwb"&gt;range&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;,&lt;/span&gt; &lt;span class="num"&gt;1000&lt;/span&gt;&lt;span class="sym"&gt;):&lt;/span&gt;&lt;br /&gt; t &lt;span class="sym"&gt;=&lt;/span&gt; &lt;span class="kwd"&gt;FuzzAServer&lt;/span&gt;&lt;span class="sym"&gt;(&lt;/span&gt;sys&lt;span class="sym"&gt;.&lt;/span&gt;argv&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;1&lt;/span&gt;&lt;span class="sym"&gt;],&lt;/span&gt; sys&lt;span class="sym"&gt;.&lt;/span&gt;argv&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;2&lt;/span&gt;&lt;span class="sym"&gt;],&lt;/span&gt; sys&lt;span class="sym"&gt;.&lt;/span&gt;argv&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;3&lt;/span&gt;&lt;span class="sym"&gt;],&lt;/span&gt; sys&lt;span class="sym"&gt;.&lt;/span&gt;argv&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;4&lt;/span&gt;&lt;span class="sym"&gt;],&lt;/span&gt; sys&lt;span class="sym"&gt;.&lt;/span&gt;argv&lt;span class="sym"&gt;[&lt;/span&gt;&lt;span class="num"&gt;5&lt;/span&gt;&lt;span class="sym"&gt;])&lt;/span&gt;&lt;br /&gt; t&lt;span class="sym"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;start&lt;/span&gt;&lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="slc"&gt;#    print &amp;quot;thread &amp;quot;, i&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The idea is simple. Connect to the server build some random string of XML-ish garbage and send it back. And like this as fast as you can. And yeah lets spawn a couple of more in parallel.&lt;br /&gt;&lt;br /&gt;As you can see i also included a server who can handle a client a time and send bad XML. I decided to test not just the server but the clients also.&lt;br /&gt;&lt;br /&gt;The results? Well after about 10-30 seconds the java Jabber server eat about 1.2G ram and 98%cpu for more than 20 minutes (at least i killed it after 20 mins). The clients that i tested were examples from the XmlRpc++ library. The did handle the server without problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1891445128304677692-4527687700894499492?l=python-a-day.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/4527687700894499492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1891445128304677692&amp;postID=4527687700894499492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/4527687700894499492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/4527687700894499492'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/2007/03/fuzzxml.html' title='FuzzXml'/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1891445128304677692.post-8559717159528171485</id><published>2007-03-01T11:37:00.000-08:00</published><updated>2007-04-27T00:42:34.071-07:00</updated><title type='text'></title><content type='html'>Ok so i've played some more with the idea.&lt;br /&gt;In this release of the previous client-server thing up there.&lt;br /&gt;- Turbo charged Function for getting the queue length. ( based on my 67 seconds research with strace over exim )&lt;br /&gt;- Server Implementation in C++ WooooW.&lt;br /&gt;- Client Implementation in C++ even more WOOOOWWW!&lt;br /&gt;&lt;br /&gt;now this is what my screen looks like. The lines with one more blank unerneath are C++ Servers&lt;br /&gt;the others Python servers ;)&lt;br /&gt;&lt;br /&gt;Thu Mar  1 21:34:29 2007&lt;br /&gt;XXX 1   :        Mail Queue:    2545&lt;br /&gt;XXX 3   :        Mail Queue:    4030&lt;br /&gt;XXX 7   :        Mail Queue:    89653&lt;br /&gt;XXX 8   :        Mail Queue:    238&lt;br /&gt;&lt;br /&gt;XXX 9   :        Mail Queue:    123&lt;br /&gt;&lt;br /&gt;XXX12   :        Mail Queue:    1767&lt;br /&gt;&lt;br /&gt;XXX14   :        Mail Queue:    567&lt;br /&gt;&lt;br /&gt;XXX15   :        Mail Queue:    567&lt;br /&gt;&lt;br /&gt;XXX16   :        Mail Queue:    717&lt;br /&gt;&lt;br /&gt;XXX20   :        Mail Queue:    477&lt;br /&gt;XXX21   :        Mail Queue:    477&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1891445128304677692-8559717159528171485?l=python-a-day.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://python-a-day.blogspot.com/feeds/8559717159528171485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1891445128304677692&amp;postID=8559717159528171485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/8559717159528171485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1891445128304677692/posts/default/8559717159528171485'/><link rel='alternate' type='text/html' href='http://python-a-day.blogspot.com/2007/03/ok-so-ive-played-some-more-with-idea.html' title=''/><author><name>bat'Serjo</name><uri>http://www.blogger.com/profile/06445290557764783547</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bat.serjo.googlepages.com/res-toi.jpg/res-toi-medium.jpg'/></author><thr:total>0</thr:total></entry></feed>
