<?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>Calcifer &#187; java</title>
	<atom:link href="http://blog.calcifer.com.ar/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.calcifer.com.ar</link>
	<description></description>
	<lastBuildDate>Sat, 02 Oct 2010 05:32:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Webserver en Java</title>
		<link>http://blog.calcifer.com.ar/2007/03/webserver-en-java/</link>
		<comments>http://blog.calcifer.com.ar/2007/03/webserver-en-java/#comments</comments>
		<pubDate>Sat, 17 Mar 2007 22:30:14 +0000</pubDate>
		<dc:creator>lvidarte</dc:creator>
				<category><![CDATA[None]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.calcifer.com.ar/2007/03/17/webserver-en-java/</guid>
		<description><![CDATA[Se trata de un sencillo servidor web que hice recientemente, en Java. Sus características son:

Maneja Theads, lo que le permite atender peticiones simultáneas
Sirve los siguientes tipos de archivos: html, xml, css, js, txt, ico, png, gif, jpg y pdf
Implementa los dos errores más comunes: 404 y 403
Lleva un registro de logs al estilo combined de [...]]]></description>
			<content:encoded><![CDATA[<p>Se trata de un sencillo servidor web que hice recientemente, en Java. Sus características son:</p>
<ul>
<li>Maneja Theads, lo que le permite atender peticiones simultáneas</li>
<li>Sirve los siguientes tipos de archivos: html, xml, css, js, txt, ico, png, gif, jpg y pdf</li>
<li>Implementa los dos errores más comunes: 404 y 403</li>
<li>Lleva un registro de logs al estilo combined de Apache</li>
<li>Tiene una salida por consola de cada petición hecha, con los mensajes enviados durante el Request</li>
</ul>
<p>Código fuente: <a href='http://blog.calcifer.com.ar/devel/webserver-java/webserver-java.tar.gz'>webserver-java.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calcifer.com.ar/2007/03/webserver-en-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Torre de Hanoi</title>
		<link>http://blog.calcifer.com.ar/2006/09/torre-de-hanoi/</link>
		<comments>http://blog.calcifer.com.ar/2006/09/torre-de-hanoi/#comments</comments>
		<pubDate>Thu, 28 Sep 2006 19:34:05 +0000</pubDate>
		<dc:creator>lvidarte</dc:creator>
				<category><![CDATA[None]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[logic]]></category>
		<category><![CDATA[recursivity]]></category>

		<guid isPermaLink="false">http://blog.calcifer.com.ar/2006/09/28/torre-de-hanoi/</guid>
		<description><![CDATA[El problema de las Torres de Hanoi es curioso porque su solución es muy rápida de calcular, pero el número de pasos para resolverlo crece exponencialmente conforme aumenta el número de discos.
Resolución de la torre de cuatro discos(imagen tomada de Wikipedia)
Es un problema que se suele plantear a menudo en ámbitos de programación, especialmente para [...]]]></description>
			<content:encoded><![CDATA[<p>El problema de las <a href="http://es.wikipedia.org/wiki/Torres_de_Hanoi" title="Torres de Hanoi en Wikipedia" class="linkwikipedia">Torres de Hanoi</a> es curioso porque su solución es muy rápida de calcular, pero el número de pasos para resolverlo crece exponencialmente conforme aumenta el número de discos.</p>
<p class="center"><img src="/uploads/2006/09/tower_of_hanoi_4.gif" alt="" /><br />Resolución de la torre de cuatro discos<br />(imagen tomada de <a href="http://es.wikipedia.org/wiki/Imagen:Tower_of_Hanoi_4.gif" title="" class="linkwikipedia">Wikipedia</a>)</p>
<p>Es un problema que se suele plantear a menudo en ámbitos de programación, especialmente para explicar <a href="http://es.wikipedia.org/wiki/Recursividad" title="Recursivida en Wikipedia" class="linkwikipedia">recursividad</a> y el algoritmo para resolverlo es realmente corto:</p>
<div class="codecolorer-container text " style="overflow:auto;white-space:nowrap;width:435px"><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">hanoi(n, Orig, Aux, Dst)<br />
&nbsp; &nbsp;si (n&gt;0) hacer<br />
&nbsp; &nbsp;hanoi(n-1, Orig, Dst, Aux)<br />
&nbsp; &nbsp;escribir(Mover Orig a Dst)<br />
&nbsp; &nbsp;hanoi(n-1, Aux, Orig, Dst)</div></div>
<p>A continuación se muestra una implementación Java del algoritmo. El programa se invoca de la siguiente manera:</p>
<div class="codecolorer-container text " style="overflow:auto;white-space:nowrap;width:435px"><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">java Hanoi n</div></div>
<p>(donde n es el numero de discos)</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">public</span> <span class="kw1">class</span> Hanoi<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp;<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> <span class="br0">&#91;</span><span class="br0">&#93;</span> args<span class="br0">&#41;</span><br />
&nbsp; &nbsp;<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw4">int</span> numDiscs <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">&#40;</span>args<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; move<span class="br0">&#40;</span>numDiscs, <span class="st0">&quot;A&quot;</span>, <span class="st0">&quot;B&quot;</span>, <span class="st0">&quot;C&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp;<span class="kw1">protected</span> <span class="kw1">static</span> <span class="kw4">void</span> move<span class="br0">&#40;</span><span class="kw4">int</span> n, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> orig, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> aux, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dest<span class="br0">&#41;</span><br />
&nbsp; &nbsp;<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>n<span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move<span class="br0">&#40;</span>n<span class="sy0">-</span><span class="nu0">1</span>, orig, dest, aux<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Mover disco de &quot;</span> <span class="sy0">+</span> orig <span class="sy0">+</span> <span class="st0">&quot; a &quot;</span> <span class="sy0">+</span> dest<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move<span class="br0">&#40;</span>n<span class="sy0">-</span><span class="nu0">1</span>, aux, orig, dest<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Aquí pueden verse las sucesivas llamadas recursivas a la función<code>move()</code>para el caso de 3 discos:</p>
<p><span id="more-53"></span></p>
<div class="codecolorer-container text " style="overflow:auto;white-space:nowrap;width:435px;height:300px"><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">move(3, A, B, C)<br />
&nbsp; &nbsp;3&gt;0<br />
&nbsp; &nbsp;move(2, A, C, B)<br />
&nbsp; &nbsp; &nbsp; 2&gt;0<br />
&nbsp; &nbsp; &nbsp; move(1, A, B, C)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, A, C, B)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stdout: mover A a C<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, B, C, A)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp; &nbsp; stdout: mover A a B<br />
&nbsp; &nbsp; &nbsp; move(1, C, A, B)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, C, B, A)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stdout: mover C a B<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, A, B, C)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp;stdout: mover A a C<br />
&nbsp; &nbsp;move(2, B, A, C)<br />
&nbsp; &nbsp; &nbsp; 2&gt;0<br />
&nbsp; &nbsp; &nbsp; move(1, B, C, A)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, B, A, C)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stdout: mover B a A<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, C, B, A)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp; &nbsp; stout: mover B a C<br />
&nbsp; &nbsp; &nbsp; move(1, A, B, C)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, A, C, B)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stdout: mover A a C<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;move(0, B, A, C)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&gt;0</div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.calcifer.com.ar/2006/09/torre-de-hanoi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

