<?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>En borrador permanente &#187; Resultados de la búsqueda  &#187;  n+puzzle</title>
	<atom:link href="http://www.juanjoconti.com.ar/search/n+puzzle/feed/rss2/" rel="self" type="application/rss+xml" />
	<link>http://www.juanjoconti.com.ar</link>
	<description>el blog de Juanjo Conti - abstracto, lúdico y digital</description>
	<lastBuildDate>Sun, 05 Feb 2012 04:27:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Smarter N-Puzzle</title>
		<link>http://www.juanjoconti.com.ar/2007/05/01/smarter-n-puzzle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=smarter-n-puzzle</link>
		<comments>http://www.juanjoconti.com.ar/2007/05/01/smarter-n-puzzle/#comments</comments>
		<pubDate>Tue, 01 May 2007 15:51:44 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[PyGame]]></category>
		<category><![CDATA[puzzles]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/2007/05/01/smarter-n-puzzle/</guid>
		<description><![CDATA[N-Puzzle sigue sin tener una real inteligencia, pero hice una modificación que lo hace verse un poco más inteligente: Si un jugador o el desordenador aleatorio hace movimientos que se cancelan entre sí Izquierda &#8211; Derecha Izquierda &#8211; Izquierda &#8211; &#8230; <a href="http://www.juanjoconti.com.ar/2007/05/01/smarter-n-puzzle/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>N-Puzzle sigue sin tener una real inteligencia, pero hice una modificación que lo hace verse un poco más inteligente:</p>
<p>Si un jugador o el desordenador aleatorio hace movimientos que se cancelan entre sí</p>
<ul>
<li>Izquierda &#8211; Derecha</li>
<li>Izquierda &#8211; Izquierda &#8211; Derecha &#8211; Derecha</li>
<li>Izquierda &#8211; Izquierda &#8211; Arriba &#8211; Arriba &#8211; Derecha &#8211; Izquierda &#8211; Abajo &#8211; Abajo &#8211; Derecha &#8211; Derecha</li>
</ul>
<p>el siguiente algoritmo es capás de eliminarlos de la lista de acciones y así lograr una resolución en menos movimientos y que parezca menos tonta.<br />
<span id="more-242"></span></p>
<p>El método que encapsula al algoritmo en cuestión es llamado cada vez que se entra al modo Auto Solve:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">    <span style="color: #ff7700;font-weight:bold;">def</span> _reduce_actions<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #483d8b;">''</span><span style="color: #483d8b;">'This method try to reduce the actions'</span> log
        removing repeted moves.<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'
&nbsp;
        log = self.actions_log
        stack = []
&nbsp;
        while log:
&nbsp;
            a = log.pop()
            ia = self._inverse_action(a)
&nbsp;
            if stack:
                s = stack.pop()
                if ia != s:
                    stack += [s, a]
            else:
                stack += [a]
&nbsp;
            print &quot;Stack: &quot;, len(stack)
            print &quot;Log: &quot;, len(log)
&nbsp;
        stack.reverse()
        self.actions_log = stack</span></pre></div></div>

<p>Download last version: <a href="http://www.juanjoconti.com.ar/files/python/n-puzzle-0.1-2.tgz">n-puzzle-0.1-2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2007/05/01/smarter-n-puzzle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>N-Puzzle</title>
		<link>http://www.juanjoconti.com.ar/2007/04/21/n-puzzle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=n-puzzle</link>
		<comments>http://www.juanjoconti.com.ar/2007/04/21/n-puzzle/#comments</comments>
		<pubDate>Sat, 21 Apr 2007 17:26:11 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[PyGame]]></category>
		<category><![CDATA[puzzles]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/2007/04/21/n-puzzle/</guid>
		<description><![CDATA[Hace unos días mandé a la lista de correos de PyAr una implementación inicial del juego N-Puzzle. n-puzzle-0.1.tgz. Es muy sencilla. Toma una imagen, la parte en cuadraditos, quita uno de los cuadraditos y los mezcla. Luego uno puedo deslizar &#8230; <a href="http://www.juanjoconti.com.ar/2007/04/21/n-puzzle/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace unos días <a href="http://grulic.org.ar/lurker/message/20070418.172626.30d2f52b.en.html" title="mi mail a PyAr" target="_blank">mandé a la lista de correos de PyAr</a> una implementación inicial del juego <a href="http://en.wikipedia.org/wiki/Fifteen_puzzle" title="N-Puzzle" target="_blank">N-Puzzle</a>. <a href="http://juanjoconti.com.ar/files/python/n-puzzle-0.1.tgz" title="n-puzzle-0.1.tgz">n-puzzle-0.1.tgz</a>.</p>
<p>Es muy sencilla. Toma una imagen, la parte en cuadraditos, quita uno de los cuadraditos y los mezcla. Luego uno puedo deslizar los cuadraditos adyasentes al espacio en blanco con las flechas de teclado. El objetivo del juego es recomponer la imagen original.</p>
<p><center><img src="http://www.juanjoconti.com.ar/wp-content/uploads/2007/04/pantallazo-n-puzzle001.png" title="N Puzzle 0.01" alt="N Puzzle 0.01" /></center>Hoy estuve mejorando el código y agregándole una funcionalidad que permite que la computadora resuelva el problema (o nos ayude a hacerlo).La idea original para este programa es luego utilizarlo para probar los métodos de búsqueda que estamos estudiando en <a href="http://www.frsf.utn.edu.ar/matero/visitante/index.php?id_catedra=142" title="IA Cátedra" target="_blank">Inteligencia Artificial</a>.</p>
<p><span id="more-235"></span> Ojo! Si bien en esta nueva versión apretando la tecla &#8216;S&#8217; entramos y salimos del modo Auto Solve, no estoy usando IA para implementarlo. Siempre pueden mirar el código y ver como lo estoy haciendo <img src='http://www.juanjoconti.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Actualmente el juego está planteado como una prueba de concepto más que como un programa totalmente usable. Esto implica que pueden ocurrir errores durante su ejecución y que algunas opciones que podrían ser configurables están clavadas en el código:</p>
<ul>
<li>N es el número de fichas que participan del juego: 8 (en un tablero de 3 x 3), 15 (en uno de 4 x 4), 24 (en uno de 5 x 5). Por defecto es 8 pero puede cambiarse en el archivo <code>run.py</code>.</li>
<li>La imagen que se usará para generar las fichas se llama ejemplo.jpg y debe estar en el mismo directorio que los scripts (yo proveo una). Pueden pisarla con otra imagen o pueden cambiar la ruta a la misma en el archivo <code>run.py</code>. La imagen debe ser de 600 x 600 pixeles.</li>
<li>El desordenamiento original del tablero se efectua mediante un número X de movimientos. En el código fuente el valor usado es 20 pero puede cambiarse en el método <code>__init__</code> de la clase Puzzle en el archivo <code>puzzle.py</code> (van a encontrarlo en la llamada al método <code>_shuffle</code>).</li>
</ul>
<p>El puzzle resuelto se ve así:</p>
<p><center><img src="http://www.juanjoconti.com.ar/wp-content/uploads/2007/04/pantallazo-n-puzzle-solved.png" title="N Puzzle solved" alt="N Puzzle solved" /></center>La última versión puede encontrarse en: <a href="http://www.juanjoconti.com.ar/files/python/n-puzzle-0.1-1.tgz" title="n-puzzle-0.1-1.tgz">files/python/n-puzzle-0.1-1.tgz</a>.Y este es el CHANGELOG de mi primer intento a este segundo mejorado:</p>
<blockquote><p>0.1-1:</p>
<p>mix(x,y) se realiza ahroa como x,y = y,x en lugar de usar<br />
una variable temporal.</p>
<p>Cada Card tiene un cid (Card ID), un par i,j correspondiente<br />
a su posición original en el tablero.</p>
<p>El desordenado del tablero se realiza mediante el movimiento<br />
aleatorio de las piezas (usando los métodos up, down, right<br />
y left) para evitar que el juego comience con una configuración<br />
que no tiene solución (Para un ejemplo, Google: 14-15 Puzzle).</p>
<p>Apretando la tecla &#8216;S&#8217; se entra y sale del modo &#8216;Auto Solve&#8217; en<br />
el cual la computadora nos ayuda a resolver el juego. Atención:<br />
NO IA was used in this feature.</p></blockquote>
<p>Requiere <a href="http://www.python.org" title="Python" target="_blank">Python</a> y <a href="http://www.pygame.org" title="Python Game Lib" target="_blank">PyGame</a>. Si tienen problemas para instalarlos mandenme un mail y los ayudo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2007/04/21/n-puzzle/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Software</title>
		<link>http://www.juanjoconti.com.ar/software/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software</link>
		<comments>http://www.juanjoconti.com.ar/software/#comments</comments>
		<pubDate>Tue, 30 Aug 2005 15:23:29 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/proyectos/</guid>
		<description><![CDATA[El siguiente es un listado de software con los cuales, en mayor o menor medida, estoy involucrado. Muchos de estos programas son Software Libre y pueden descargarse de Internet, mientras que otros fueron desarrollados para propósitos específicos y no están &#8230; <a href="http://www.juanjoconti.com.ar/software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El siguiente es un listado de software con los cuales, en mayor o menor medida, estoy involucrado. Muchos de estos programas son <a title="Definición de Software Libre" href="http://www.gnu.org/philosophy/free-sw.es.html" target="_blank">Software Libre</a> y pueden descargarse de Internet, mientras que otros fueron desarrollados para propósitos específicos y no están publicados.</p>
<h3>pymodbus</h3>
<p>Dentro de un proyecto para desarrollar un sistema <a href="http://es.wikipedia.org/wiki/SCADA">SCADA</a> utilicé la librería <a href="http://code.google.com/p/pymodbus/">pymodbus</a>. Envié varios parches que fueron incorporados al proyecto y obtuve permiso de commit.</p>
<h3>Ynitium</h3>
<p>Estoy participando en el desarrollo de una red social para filosofos.</p>
<h3><a href="http://www.juanjoconti.com.ar/taint/">Tain Mode para Python</a></h3>
<h3>MyTwitGroup.com</h3>
<h3>SEO Scripts</h3>
<p>Desarrollé varios scripts de <a href="http://es.wikipedia.org/wiki/Search_engine_optimization" target="_blank">SEO</a> para <a href="http://www.abigdoor.com/" target="_blank">A Big Door</a> como freelance. 2009 &#8211; 2010</p>
<h3>Twisted</h3>
<p>Estoy desarrollando en mi trabajo el servidor de un sistema de supervisión de entorno (temperatura y alimentación eléctrica) utilizando el framework <a href="http://twistedmatrix.com" target="_blank">Twisted</a>. Publico en el blog distintas <a href="http://www.juanjoconti.com.ar/categoria/aprendiendo-python/twisted/" target="_blank">dificultades que voy teniendo y cómo las resuelvo</a>.</p>
<h3>KineLog</h3>
<p>He desarrollando un sistema para administrar un consultorio de Kinesiología. El mismo es desarrollado en <a href="http://www.djangoproject.com/" target="_blank">Django </a>utilizando <a href="http://www.sqlite.org/" target="_blank">SQLite</a> como motor de base de datos.</p>
<h3>Dice</h3>
<p>Una utilidad para <a href="http://www.android.com/" target="_blank">Android</a> que aún no ha sido publicada.</p>
<h3>Sistema Zafiro</h3>
<p>Como proyecto final de carrera para obtener mi título de Ingeniero en Sistemas de Información desarrolle junto a Cecilia Puccinelli un sistema de información para una inmobiliaria local. El sistema fue desarrolla utilizando <a href="http://www.djangoproject.com/" target="_blank">Django</a> y el motor de base de datos <a href="http://www.postgresql.org/" target="_blank">PostgreSQL</a>.</p>
<h3><a href="http://cappuccino.juanjoconti.com.ar/" target="_blank">Cappuccino Theorem Prover</a></h3>
<p>Un probador automático de teoremas de lógica de predicados de primer orden mediante deducción natural. Su desarrollo se encuentra atascado.</p>
<h3><a href="http://www.juanjoconti.com.ar/2008/09/17/cecilia-music-game/" target="_self">Cecilia Music Game</a></h3>
<p>Un juego simple en el que escuchamos una canción y luego tenemos que intentar reproducir eligiendo cuerdas de distinto largo (hecho para la competencia <a title="PyWeek 7" href="http://pyweek.org/7" target="_blank">PyWeek 7</a>, cuyo tema era <span>“<em>The length of a piece of string</em>“).</span></p>
<h3><a title="pyrtf-ng" href="http://code.google.com/p/pyrtf-ng/" target="_blank">pyrtf-ng</a></h3>
<p>Añadí a la librería soporte para Unicode, ahora se pueden generar documentos en formato rtf con caracteres con tilde y otros caracteres no ascii. El parche fue aplicado en la <a href="http://code.google.com/p/pyrtf-ng/source/detail?r=69">revisión 69</a>.</p>
<h3><a title="Pedro's" href="http://code.google.com/p/pyweek6/" target="_blank">Pedro&#8217;s Robot Factory</a></h3>
<p>Juego con el que <a href="http://www.pyweek.org/e/pysfe/%20title=">participamos</a> en la <a title="PyWeek 6" href="http://pyweek.org/6/" target="_blank">sexta edición</a> del concurso <a title="PyWeek" href="http://pyweek.org/" target="_blank">PyWeek</a>. El concurso consiste en crear un juego en 7 días en Python. Obtuvimos el <a title="PyWeek 6 Rating" href="http://media.pyweek.org/static/pyweek6_ratings.html" target="_blank">sexto lugar</a> en la categoría equipos. [<a title="Video" href="http://es.youtube.com/watch?v=sUVMw1JKfq0" target="_blank">Video en YouTube</a><a href="http://www.juanjoconti.com.ar/2008/02/07/codigo-secreto-juego/" target="_blank">]</a></p>
<h3><a href="http://www.juanjoconti.com.ar/2008/02/07/codigo-secreto-juego/" target="_blank">Código Secreto</a><a title="Pedro's" href="http://code.google.com/p/pyweek6/" target="_blank"><br />
</a></h3>
<p>Clon del clásico juego MasterMind.</p>
<h3><a title="Ejemplos de PLY" href="http://www.juanjoconti.com.ar/files/python/ply-examples/index.html" target="_blank">PLY Examples</a></h3>
<p>Armé un sitio web con los ejemplos que acompañan la distribución de PLY (Python Lex &amp; Yacc).</p>
<h3><a title="Twisted Zombie" href="http://code.google.com/p/twistedmold/" target="_blank">Twisted Zombie</a></h3>
<p>Juego con el que <a title="7 Zombies: equipo de Santa Fe" href="http://www.pyweek.org/e/santa_fe/">participamos</a> en la <a title="PyWeek 5" href="http://pyweek.org/5/" target="_blank">quinta edición</a> del concurso <a title="PyWeek" href="http://pyweek.org/" target="_blank">PyWeek</a>. El concurso consiste en crear un juego en 7 días en Python. Obtuvimos el <a title="PyWeek 5 Rating" href="http://media.pyweek.org/static/pyweek5_ratings.html" target="_blank">tercer lugar</a> en la categoría equipos. [<a title="Video" href="http://es.youtube.com/watch?v=GB33cjNZnWQ&amp;NR=1" target="_blank">Video en YouTube</a>]</p>
<h3><a title="N" href="http://www.juanjoconti.com.ar/files/python/n-puzzle-0.1-2.tgz" target="_blank">N-puzzle</a></h3>
<p><a title="15" href="http://en.wikipedia.org/wiki/Fifteen_puzzle" target="_blank">Tradicional juego</a> en el que hay que desplazar fichas para formar una figura.</p>
<p>Algunos posts en mi blog al respecto: <a title="N en mi blog" href="http://www.juanjoconti.com.ar/index.php?s=n+puzzle">N-puzzle posts</a>.</p>
<h3><a title="Life Fighter" href="http://code.google.com/p/life-fighter/" target="_blank">Life Figter</a></h3>
<p>Juego en el que el personaje principal es una célula del <a title="Life" href="http://es.wikipedia.org/wiki/Juego_de_la_vida" target="_blank">Juego de la Vida</a> de <a title="John Conway" href="http://es.wikipedia.org/wiki/John_Conway" target="_blank">Conway</a> tratando de valerse de las reglas de evolución para sobrevivir de generación en generación.</p>
<p>El juego está casi terminado, y además de tener diferentes niveles y modos de juego, cuenta con un visor de patrones del Juego de la Vida original y un editor de niveles.</p>
<p>Lo construí como una forma de aprender <a title="PyGame" href="http://www.pygame.org" target="_blank">PyGame</a> (una librería para crear juegos con Python).</p>
<p>Algunos posts en mi blog: <a title="Life Fighter en mi blog" href="http://www.juanjoconti.com.ar/category/aprendiendo-python/life-fighter/" target="_blank">http://www.juanjoconti.com.ar/category/aprendiendo-python/life-fighter/ </a></p>
<h3><a title="Python Fu" href="http://www.juanjoconti.com.ar/files/python/fu/" target="_blank">Python Fu</a></h3>
<p>Plug-ins para <a title="The GNU Image Manipulator Program" href="http://www.gimp.org" target="_blank">GIMP</a> escritos en Python.</p>
<h3><a title="Python Scripts" href="http://www.juanjoconti.com.ar/files/python/" target="_blank">Python Scripts</a></h3>
<p>Colección de scrips sencillos en <a title="Python programming languaje" href="http://www.python.org" target="_blank">Python</a>. Algunos son:</p>
<ul>
<li><a title="irc2html" href="http://www.juanjoconti.com.ar/files/python/irc2html.py.html" target="_blank">irc2html</a>: convierte logs de irc en páginas hmtl. Colorea con diferentes colores lo que dicen distintos usuarios.</li>
<li><a title="py2hml" href="http://www.juanjoconti.com.ar/files/python/py2html.py.html" target="_blank">py2html</a>: convierte scrips en Python en páginas html simples.</li>
<li><a title="Triángulo de Tartaglia" href="http://www.juanjoconti.com.ar/files/python/tartaglia.py.html" target="_blank">Tartaglia</a>: dibuja el triángulo de Tartaglia o triángulo de Pascal.</li>
</ul>
<h3><a title="Comunicaciones" href="http://comunicaciones.firebirds.com.ar/" target="_blank">Herramientas para la cátedra de Comunicaciones</a></h3>
<p>Como parte de la cátedra de Comunicaciones, en la Facultad Regional Santa Fe de la Universidad Tecnológica Nacional, armé 3 herramientas web que son útiles para estudiar algunos temas del programa de la materia:</p>
<ul>
<li><a title="Fourier 2.0" href="http://comunicaciones.firebirds.com.ar/fourier/" target="_blank">Fourier 2.0</a>: permite visualizar de forma simple <a title="Series de Fourier" href="http://es.wikipedia.org/wiki/Serie_de_Fourier" target="_blank">series de Fourier</a> comunes en comunicaciones y descomponerlas.</li>
<li><a title="Constelaciones" href="http://comunicaciones.firebirds.com.ar/constelaciones/" target="_blank">Constelaciones</a>: permite graficar diagramas de constelaciones de distintas m-arias utilizando las técnicas de modulación QAM y PSK.</li>
<li><a title="RadioFrecuencia" href="http://comunicaciones.firebirds.com.ar/rf/" target="_blank">RF</a>: dados los datos de una instalación de radio frecuencia, realiza el gráfico del vano y calcula la factibilidad del enlace.</li>
</ul>
<h3><a href="http://www.juanjoconti.com.ar/2005/09/24/el-capitan-julio-cesar/">El Capitán Julio César</a></h3>
<p>Ejercicio en Prolog.</p>
<h3><a title="Paradigmas de Programación" href="http://paradigmas.firebirds.com.ar" target="_blank">Librerías de Paradigmas</a></h3>
<p>Es un conjunto de librerías para Prolog, Scheme y SmallTalk para estudiantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

