<?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; logic</title>
	<atom:link href="http://blog.calcifer.com.ar/tag/logic/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>Excepciones paradójicas</title>
		<link>http://blog.calcifer.com.ar/2008/01/excepciones-paradojicas/</link>
		<comments>http://blog.calcifer.com.ar/2008/01/excepciones-paradojicas/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 13:37:44 +0000</pubDate>
		<dc:creator>lvidarte</dc:creator>
				<category><![CDATA[cites]]></category>
		<category><![CDATA[logic]]></category>

		<guid isPermaLink="false">http://blog.calcifer.com.ar/2008/01/25/excepciones-paradojicas/</guid>
		<description><![CDATA[Vía Mircrosiervos
Si hay una excepción para toda regla, entoces también debería haber una excepción para la regla que dice que hay una excepción para toda regla.
«Todo es relativo» se contradice a sí misma, porque si todo es relativo entonces la misma frase es relativa y no todos los casos son relativos; con lo cual se [...]]]></description>
			<content:encoded><![CDATA[<div class="from">Vía <a href="http://www.microsiervos.com/archivo/juegos-y-diversion/excepciones-paradojicas.html" class="linkexternal">Mircrosiervos</a></div>
<blockquote class="cite"><p>Si hay una excepción para toda regla, entoces también debería haber una excepción para la regla que dice que hay una excepción para toda regla.</p></blockquote>
<blockquote class="cite"><p><strong>«Todo es relativo»</strong> se contradice a sí misma, porque si todo es relativo entonces la misma frase es relativa y no todos los casos son relativos; con lo cual se entra en un bucle bastante curioso.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.calcifer.com.ar/2008/01/excepciones-paradojicas/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>
		<item>
		<title>El secretario inteligente</title>
		<link>http://blog.calcifer.com.ar/2006/08/el-secretario-inteligente/</link>
		<comments>http://blog.calcifer.com.ar/2006/08/el-secretario-inteligente/#comments</comments>
		<pubDate>Thu, 17 Aug 2006 17:35:42 +0000</pubDate>
		<dc:creator>lvidarte</dc:creator>
				<category><![CDATA[logic]]></category>

		<guid isPermaLink="false">http://blog.calcifer.com.ar/2006/08/17/el-secretario-inteligente/</guid>
		<description><![CDATA[Leo en el blog de Javier Smaldone la siguiente nota:
Aquí va otro problema lógico. Lo encontré hace mucho tiempo en un libro y la solución no estaba en él (yo encontré una, pero no se si será la única).
Una persona debe contratar un secretario y se presentan tres postulantes para el puesto. Reúne a las [...]]]></description>
			<content:encoded><![CDATA[<p class="from">Leo en el blog de <a href="http://blog.smaldone.com.ar/" class="linkexternal">Javier Smaldone</a> la siguiente <a href="http://blog.smaldone.com.ar/2006/06/29/el-secretario-inteligente/" class="linkexternal">nota</a>:</p>
<blockquote><p>Aquí va otro problema lógico. Lo encontré hace mucho tiempo en un libro y la solución no estaba en él (yo encontré una, pero no se si será la única).</p>
<p><em>Una persona debe contratar un secretario y se presentan tres postulantes para el puesto. Reúne a las tres personas y les dice lo siguiente:</em></p>
<p>&#8220;<em>Voy a realizar una prueba para ver quién de ustedes es más inteligente. Los sentaré en una mesa redonda, enfrentados y les vendaré los ojos. Luego, a cada uno le haré una marca en la frente que será de color rojo o de color negro.</em></p>
<p><em>Cuando yo se los indique, se quitarán la venda y quien vea una marca negra en la frente de alguno de los otros dos, dará un golpe en la mesa. El primero que descubra de qué color es la marca que lleva en su frente, y pueda explicarme cómo lo hizo, obtendrá el puesto.</em>&#8221;</p>
<p>Acto seguido, procede a vendarles los ojos a los tres y les hace a todos una marca negra en la frente. Al recibir la orden de quitarse las vendas, todos ven al menos una marca negra (de hecho, ven dos) y los tres golpean la mesa.</p>
<p>Al cabo de unos instantes, uno de ellos dice tener una marca negra en la frente, explica por qué se dió cuenta y obtiene el puesto.</p>
<p>La pregunta es: <strong>¿cómo lo hizo?</strong></p></blockquote>
<h4>La respuesta:</h4>
<p><span id="more-26"></span>Todos golpearon. Significa que todos vieron <em>por lo menos</em> una mancha negra. Esto nos deja 2 posibilidades: a) hay dos manchas negras y una roja, b) todos tienen manchas negras.</p>
<p>En el caso a) las dos personas con mancha negra vieron una persona con mancha negra y otra con mancha roja. Por lo tanto cualquiera de ellas podría deducir &#8220;rápidamente&#8221; que su propia mancha es negra. En definitiva, cualquiera de esas dos personas resolvería  enseguida el problema.</p>
<p>La persona con la mancha roja vería dos negras y se limitaría a esperar que alguna de las otras personas dijese su color. Pero si la respuesta no llega rápidamente puede que también ellos vean dos manchas negras, lo que nos lleva al caso b). El primero en darse cuenta de esto diría que también su color es negro.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calcifer.com.ar/2006/08/el-secretario-inteligente/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

