<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ADM Blog &#187; Python</title>
	<atom:link href="http://blog.another-d-mention.ro/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.another-d-mention.ro</link>
	<description>No matter how you see things, reality changes when you reach understanding</description>
	<lastBuildDate>Mon, 06 Sep 2010 11:29:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How to run python code in Windows batch (bat) files</title>
		<link>http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/</link>
		<comments>http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 12:58:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[bat]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[py]]></category>
		<category><![CDATA[window]]></category>

		<guid isPermaLink="false">http://blog.another-d-mention.ro/?p=829</guid>
		<description><![CDATA[Here’s the bit of tricky batch file magic that does it: 1 2 3 @setlocal enabledelayedexpansion &#38;&#38; python -x &#34;%~f0&#34; %* &#38; exit /b !ERRORLEVEL! #start python code here print &#34;hello world&#34; The way it works is that the first line of the file does two different things. 1. starts python interpreter passing the name [...]


Related posts:<ol><li><a href='http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/' rel='bookmark' title='Permanent Link: Sudoku solver in python'>Sudoku solver in python</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/' rel='bookmark' title='Permanent Link: Quick Python Script Explanation'>Quick Python Script Explanation</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/java-script/open-and-save-files-to-desktop-without-going-to-server/' rel='bookmark' title='Permanent Link: Open and Save files to Desktop without going to Server'>Open and Save files to Desktop without going to Server</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here’s the bit of tricky batch file magic that does it:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">@setlocal enabledelayedexpansion <span style="color: #66cc66;">&amp;&amp;</span> python -x <span style="color: #483d8b;">&quot;%~f0&quot;</span> <span style="color: #66cc66;">%*</span> <span style="color: #66cc66;">&amp;</span> exit /b <span style="color: #66cc66;">!</span>ERRORLEVEL<span style="color: #66cc66;">!</span>
<span style="color: #808080; font-style: italic;">#start python code here</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;hello world&quot;</span></pre></td></tr></table></div>

<p>The way it works is that the first line of the file does two different things.</p>
<p>1. starts python interpreter passing the name of the file in, and the -x option will tell it to skip the first line (containing .bat file code)<br />
2. When python finishes the script exits.</p>
<p>This nifty trick makes it much nicer for writing admin scripts with python on Windows. </p>


<p>Related posts:<ol><li><a href='http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/' rel='bookmark' title='Permanent Link: Sudoku solver in python'>Sudoku solver in python</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/' rel='bookmark' title='Permanent Link: Quick Python Script Explanation'>Quick Python Script Explanation</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/java-script/open-and-save-files-to-desktop-without-going-to-server/' rel='bookmark' title='Permanent Link: Open and Save files to Desktop without going to Server'>Open and Save files to Desktop without going to Server</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sudoku solver in python</title>
		<link>http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/</link>
		<comments>http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 22:00:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[How To's]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[solver]]></category>
		<category><![CDATA[sudoku]]></category>

		<guid isPermaLink="false">http://blog.another-d-mention.ro/?p=273</guid>
		<description><![CDATA[Sudoku is a logic-based, combinatorial number-placement puzzle. The objective is to fill a 9×9 grid so that each column, each row, and each of the nine 3×3 boxes (also called blocks or regions) contains the digits from 1 to 9 only one time each. The puzzle setter provides a partially completed grid. I'm really not [...]


Related posts:<ol><li><a href='http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/' rel='bookmark' title='Permanent Link: How to run python code in Windows batch (bat) files'>How to run python code in Windows batch (bat) files</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/' rel='bookmark' title='Permanent Link: Quick Python Script Explanation'>Quick Python Script Explanation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.another-d-mention.ro/wp-content/uploads/2009/03/lens1512255_sudoku12.gif"><img class="alignleft size-full wp-image-280" style="margin: 10px 10px 10px 0px;" title="lens1512255_sudoku12" src="http://blog.another-d-mention.ro/wp-content/uploads/2009/03/lens1512255_sudoku12.gif" alt="lens1512255 sudoku12 Sudoku solver in python" width="116" height="116" /></a>Sudoku is a logic-based, combinatorial number-placement puzzle. The objective is to fill a 9×9 grid so that each column, each row, and each of the nine 3×3 boxes (also called blocks or regions) contains the digits from 1 to 9 only <em>one</em> time each. The puzzle setter provides a partially completed grid.<br />
I'm really not a sudoku fan but I love solving problems and sudoku offers you a challenging one. So...here's a the shortest sudoku solver written in python</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> r<span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>:i=a.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'0'</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>~i <span style="color: #ff7700;font-weight:bold;">or</span> exit<span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span><span style="color: black;">&#91;</span>m
<span style="color: #ff7700;font-weight:bold;">in</span><span style="color: black;">&#91;</span><span style="color: black;">&#40;</span>i-j<span style="color: black;">&#41;</span><span style="color: #66cc66;">%</span>9<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>i/<span style="color: #ff4500;">9</span>^j/<span style="color: #ff4500;">9</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>i/<span style="color: #ff4500;">27</span>^j/<span style="color: #ff4500;">27</span>|i<span style="color: #66cc66;">%</span>9/<span style="color: #ff4500;">3</span>^j<span style="color: #66cc66;">%</span>9/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: #ff7700;font-weight:bold;">or</span> a<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: #ff7700;font-weight:bold;">for</span>
j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">81</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: #ff7700;font-weight:bold;">or</span> r<span style="color: black;">&#40;</span>a<span style="color: black;">&#91;</span>:i<span style="color: black;">&#93;</span>+m+a<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: #ff7700;font-weight:bold;">for</span> m <span style="color: #ff7700;font-weight:bold;">in</span><span style="color: #483d8b;">'%d'</span><span style="color: #66cc66;">%</span>5<span style="color: #66cc66;">**</span><span style="color: #ff4500;">18</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">sys</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*;</span>r<span style="color: black;">&#40;</span>argv<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>If you want to test that, save it in a file and use the command line to execute the code. Execute the code as following: <em>python solver.py puzzle</em> - where puzzle is an 81 character string representing the puzzle read left-to-right, top-to-bottom, and 0 is a blank space</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">python solver.py <span style="color: #cc66cc;">530070000600195000098000060800060003400803001700020006060000280000419005000080079</span></pre></div></div>

<p>The problem with the above code is that is really slow. Here's another one that runs about 100x faster and is less cryptic.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> same_row<span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>i/<span style="color: #ff4500;">9</span> == j/<span style="color: #ff4500;">9</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">def</span> same_col<span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>i-j<span style="color: black;">&#41;</span> <span style="color: #66cc66;">%</span> <span style="color: #ff4500;">9</span> == <span style="color: #ff4500;">0</span>
<span style="color: #ff7700;font-weight:bold;">def</span> same_block<span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>i/<span style="color: #ff4500;">27</span> == j/<span style="color: #ff4500;">27</span> <span style="color: #ff7700;font-weight:bold;">and</span> i<span style="color: #66cc66;">%</span>9/<span style="color: #ff4500;">3</span> == j<span style="color: #66cc66;">%</span>9/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> r<span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>:
  i = a.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'0'</span><span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">if</span> i == -<span style="color: #ff4500;">1</span>:
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>
&nbsp;
  excluded_numbers = <span style="color: #008000;">set</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">81</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> same_row<span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">or</span> same_col<span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">or</span> same_block<span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span>:
      excluded_numbers.<span style="color: black;">add</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">for</span> m <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #483d8b;">'123456789'</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> m <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> excluded_numbers:
      <span style="color: #808080; font-style: italic;"># At this point, m is not excluded by any row, column, or block, so let's place it and recurse</span>
      r<span style="color: black;">&#40;</span>a<span style="color: black;">&#91;</span>:i<span style="color: black;">&#93;</span>+m+a<span style="color: black;">&#91;</span>i+<span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
  <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">2</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">81</span>:
    r<span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Usage: python sudoku.py puzzle'</span></pre></td></tr></table></div>



<p>Related posts:<ol><li><a href='http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/' rel='bookmark' title='Permanent Link: How to run python code in Windows batch (bat) files'>How to run python code in Windows batch (bat) files</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/' rel='bookmark' title='Permanent Link: Quick Python Script Explanation'>Quick Python Script Explanation</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Python Script Explanation</title>
		<link>http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/</link>
		<comments>http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 09:23:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[cheat-sheet]]></category>

		<guid isPermaLink="false">http://blog.another-d-mention.ro/?p=32</guid>
		<description><![CDATA[Related posts:Sudoku solver in python How to run python code in Windows batch (bat) files


Related posts:<ol><li><a href='http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/' rel='bookmark' title='Permanent Link: Sudoku solver in python'>Sudoku solver in python</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/' rel='bookmark' title='Permanent Link: How to run python code in Windows batch (bat) files'>How to run python code in Windows batch (bat) files</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.another-d-mention.ro/wp-content/uploads/2009/02/python_cheatsheet.png"><img class="aligncenter size-full wp-image-33" title="python cheatsheet" src="http://blog.another-d-mention.ro/wp-content/uploads/2009/02/python_cheatsheet.png" alt="python cheatsheet" width="773" height="938" /></a></p>


<p>Related posts:<ol><li><a href='http://blog.another-d-mention.ro/programming/sudoku-solver-in-python/' rel='bookmark' title='Permanent Link: Sudoku solver in python'>Sudoku solver in python</a></li>
<li><a href='http://blog.another-d-mention.ro/programming/how-to-run-python-code-in-windows-batch-bat-files/' rel='bookmark' title='Permanent Link: How to run python code in Windows batch (bat) files'>How to run python code in Windows batch (bat) files</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.another-d-mention.ro/programming/python/quick-python-script-explanation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
