<?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-8141706631978818970</id><updated>2012-02-02T01:30:05.619-03:00</updated><category term='sf'/><category term='C++'/><category term='espacio'/><category term='historia'/><category term='embedded'/><category term='wikipedia'/><category term='topología'/><category term='tesis'/><category term='spice'/><category term='energía'/><category term='física'/><category term='mudanza'/><category term='matemática'/><category term='ww2'/><category term='CO2'/><category term='informática'/><category term='robots'/><category term='CFD'/><category term='fiuba'/><category term='probabilidad'/><category term='misc'/><category term='futuro'/><category term='Mathematica'/><title type='text'>SpinFoam</title><subtitle type='html'>Blog de Mariano M. Chouza. Para más informaciòn, visitar &lt;a href="http://mariano.chouza.googlepages.com"&gt; mi página personal&lt;/a&gt;.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-7440113112060346440</id><published>2009-01-24T12:15:00.002-02:00</published><updated>2009-01-24T12:28:50.537-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mudanza'/><title type='text'>Mudanza...</title><content type='html'>Finalmente anuncio la mudanza del blog a WordPress. No es que en general Blogger sea una mala opción, pero el soporte de LaTeX en WordPress es realmente muy práctico. Además, una vez que logré importar los posts (Guille: resultó más fácil de lo esperado...), desapareció uno de lso obstáculos que quedaban.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mchouza.wordpress.com/"&gt;Esta es la nueva dirección del blog&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://mchouza.wordpress.com/2009/01/15/hello-world/"&gt;Este es el post inaugural (ya quedó un poco viejo)&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://mchouza.wordpress.com/2009/01/21/un-problema-de-integrales-i/"&gt;Este es el único post nuevo (por el momento, obviamente)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No se olviden de &lt;a href="http://mchouza.wordpress.com/feed/"&gt;actualizar sus feeds&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-7440113112060346440?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/7440113112060346440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=7440113112060346440' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7440113112060346440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7440113112060346440'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2009/01/mudanza.html' title='Mudanza...'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-3689147907813234241</id><published>2009-01-21T22:07:00.003-02:00</published><updated>2009-01-21T22:37:22.853-02:00</updated><title type='text'>"Paradoja" resuelta</title><content type='html'>Quería hacer unos comentarios respecto al &lt;a href="http://spin-foam.blogspot.com/2009/01/zenn-20.html"&gt;problema del post anterior&lt;/a&gt;. Se mencionaba que, a una vela solar en movimiento, la luz le transmitía energía por &lt;a href="http://en.wikipedia.org/wiki/Doppler_effect"&gt;efecto Doppler&lt;/a&gt;: la luz reflejada tendrá un espectro más rojizo (más frío) que la incidente. Pero una vela solar "en reposo" esto no le transmite potencia; como puede entonces comenzar a moverse...&lt;br /&gt;&lt;br /&gt;Y la respuesta es verdaderamente simple: no necesita potencia para empezar a moverse :-D En efecto, supongamos que la vela solar se mueve con aceleración constante. Entonces tendremos para su energía cinética en función del tiempo la expresión:&lt;br /&gt;&lt;br /&gt;T(t) = 1/2 mv&lt;sup&gt;2&lt;/sup&gt; = 1/2 m(at)&lt;sup&gt;2&lt;/sup&gt; = 1/2 ma&lt;sup&gt;2&lt;/sup&gt;t&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Como la potencia no es más que un flujo de energía (en este caso la requerida para originar el aumento observado de la energía cinética), podemos obtener la potencia que la luz debería transmitir mediante una simple derivada:&lt;br /&gt;&lt;br /&gt;P(t) = d/dt(T(t)) = ma&lt;sup&gt;2&lt;/sup&gt;t&lt;br /&gt;&lt;br /&gt;Puede observarse claramente que la potencia requerida inicialmente es nula y que esto se deriva de la relación cuadrática entre la energía cinética y la velocidad. Sorprendente, no?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-3689147907813234241?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/3689147907813234241/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=3689147907813234241' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3689147907813234241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3689147907813234241'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2009/01/paradoja-resuelta.html' title='&quot;Paradoja&quot; resuelta'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-8600806378940380371</id><published>2009-01-09T09:10:00.005-02:00</published><updated>2009-01-09T09:47:54.972-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='física'/><category scheme='http://www.blogger.com/atom/ns#' term='espacio'/><title type='text'>Zenón 2.0 :-)</title><content type='html'>Una &lt;a href="http://en.wikipedia.org/wiki/Solar_sail"&gt;vela solar&lt;/a&gt; es un sistema propuesto de propulsión para naves espaciales que utiliza la presión que ejerce la luz solar sobre una membrana (generalmente reflectiva). Puede representarse mediante el siguiente esquema (&lt;a href="http://blag.xkcd.com/2008/02/15/the-laser-elevator/"&gt;dibujado&lt;/a&gt; por &lt;a href="http://en.wikipedia.org/wiki/Randall_Munroe"&gt;Randall Munroe&lt;/a&gt;, el autor de &lt;a href="http://xkcd.com/"&gt;xkcd&lt;/a&gt;):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__CoX8jXfETc/SWc5EivANcI/AAAAAAAAAHM/ZD7rtYNKZ1Y/s1600-h/photon_bounce.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 281px; height: 318px;" src="http://4.bp.blogspot.com/__CoX8jXfETc/SWc5EivANcI/AAAAAAAAAHM/ZD7rtYNKZ1Y/s320/photon_bounce.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5289259037576148418" /&gt;&lt;/a&gt;Obviamente, como todo sistema físico, una vela solar debe obedecer la conservación de la energía. Por lo tanto su energía cinética debe adquirirse a partir de una correspondiente reducción en la energía de la luz incidente. En efecto, esto es lo que sucede y, en el caso de una vela perfectamente reflectiva, el &lt;a href="http://en.wikipedia.org/wiki/Doppler_effect"&gt;efecto Doppler&lt;/a&gt; reduce la longitud de onda de los fotones reflejados de modo que la energía se conserve.&lt;br /&gt;&lt;br /&gt;El problema es el siguiente: cuando la vela está estacionaria, no hay efecto Doppler y la potencia transferida a la vela es nula; como puede entonces comenzar a moverse? (Hint: T = 1/2 mv&lt;sup&gt;2&lt;/sup&gt;)&lt;br /&gt;&lt;br /&gt;La respuesta a este problema y un análisis más exhaustivo del comportamiento energético de las velas solares en unos días...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-8600806378940380371?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/8600806378940380371/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=8600806378940380371' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8600806378940380371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8600806378940380371'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2009/01/zenn-20.html' title='Zenón 2.0 :-)'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__CoX8jXfETc/SWc5EivANcI/AAAAAAAAAHM/ZD7rtYNKZ1Y/s72-c/photon_bounce.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-6725305431613030398</id><published>2008-12-28T11:08:00.006-02:00</published><updated>2008-12-28T12:05:55.421-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><title type='text'>JavaScript</title><content type='html'>Para practicar la puesta en práctica de las &lt;a href="http://www.jslint.com/"&gt;recomendaciones&lt;/a&gt; de &lt;a href="http://javascript.crockford.com/"&gt;Douglas Crockford&lt;/a&gt; respecto a &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb"&gt;como programar en JavaScript&lt;/a&gt;, me decidí por hacer una demostración en &lt;a href="http://www.w3.org/TR/SVG11/"&gt;SVG&lt;/a&gt; del famoso "&lt;a href="http://en.wikipedia.org/wiki/Arnold%27s_cat_map"&gt;Arnold's Cat Map&lt;/a&gt;". Este mapeo consiste simplemente en aplicar repetidas veces a las coordenadas de un conjunto de puntos inicial la transformación&lt;br /&gt;&lt;br /&gt;(x, y) → (x + y, x + 2y) mod 1 .&lt;br /&gt;&lt;br /&gt;El "mod 1" es lo que indica que trabajamos sobre el toroide ℝ&lt;sup&gt;2&lt;/sup&gt;/ℤ&lt;sup&gt;2&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://mariano.chouza.googlepages.com/cat_map.svg" width="276" height="316"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Si bien el mapa aplicado a valores reales es caótico y mezcla fuertemente el conjunto de puntos, se observa un &lt;a href="http://en.wikipedia.org/wiki/Poincar%C3%A9_recurrence_theorem"&gt;fenómeno de recurrencia&lt;/a&gt; en las variantes discretas del problema (tal como la implementada). Para este caso particular en el que la imagen es de 32 X 32 pixels, la recurrencia se observa en el paso 24.&lt;br /&gt;&lt;br /&gt;Nota de implementación: la imagen fue &lt;a href="http://en.wikipedia.org/wiki/File:Youngkitten.JPG"&gt;tomada de Wikipedia&lt;/a&gt; y editada y transformada a formato "&lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt;" utilizando &lt;a href="http://www.pythonware.com/products/pil/#pil116"&gt;PIL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-6725305431613030398?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/6725305431613030398/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=6725305431613030398' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6725305431613030398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6725305431613030398'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/javascript.html' title='JavaScript'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-6813922031463761120</id><published>2008-12-22T18:40:00.003-02:00</published><updated>2008-12-22T19:11:16.739-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><title type='text'>Porqué los espejos intercambian derecha e izquierda?</title><content type='html'>Se cree comúnmente que los espejos "intercambian la derecha y la izquierda". Por ejemplo, la imagen especular de una persona diestra escribirá, aparentemente, con la mano izquierda. Esto nos llevaría a pensar que el espejo trata en forma diferente a las direcciones horizontales que a las direcciones verticales (porque no observamos que el espejo invierta "arriba y abajo").&lt;br /&gt;&lt;br /&gt;Pero esto no es lo que en realidad "el espejo hace". La reflexión invierte las posiciones en la dirección perpendicular al espejo. Es &lt;a href="http://math.ucr.edu/home/baez/lie/node3.html"&gt;por alguna razón psicológica&lt;/a&gt; que esto se observa como una rotación de 180° alrededor de un eje vertical compuesta con una inversión de derecha e izquierda.&lt;br /&gt;&lt;br /&gt;La razón que se me ocurre para esto es que inconsciente observamos al reflejo como otra persona física; como físicamente las personas pueden rotarse pero no reflejarse, la visualizamos como una versión rotada de nosotros mismos con sus lados derecho e izquierdo intercambiados. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esto plantea la pregunta de porqué visualizamos una reflexión derecha/izquierda pero no la reflexión adelante/atrás. Si bien no se me ocurre una respuesta directa a esta pregunta, probablemente se deba a la cuasi-simetría externa de las personas respecto al intercambio derecha/izquierda.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-6813922031463761120?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/6813922031463761120/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=6813922031463761120' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6813922031463761120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6813922031463761120'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/porqu-los-espejos-intercambian-derecha.html' title='Porqué los espejos intercambian derecha e izquierda?'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-3081279613678904547</id><published>2008-12-20T10:59:00.004-02:00</published><updated>2008-12-20T11:12:00.524-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='CFD'/><title type='text'>Lattice Boltzmann (actualización)</title><content type='html'>Todavía no encontré el tiempo para dar una breve explicación de Lattice Boltzmann, pero logré mejorar notablemnete la eficiencia de la simulación. Puede hacerse &lt;span style="font-style:italic;"&gt;checkout &lt;/span&gt;de la última "versión" hasta el momento en &lt;tt&gt;&lt;a href="http://lattice-boltzmann-sdl.googlecode.com/svn/tags/0.03/"&gt;http://lattice-boltzmann-sdl.googlecode.com/svn/tags/0.03/&lt;/a&gt;&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;A continuación muestro dos imágenes de la simulación, que está corriendo a unos 30 FPS en un solo &lt;span style="font-style:italic;"&gt;core&lt;/span&gt; de un Intel Core Duo T2600 @ 2.16 GHz. Corresponden a la colisión de dos esferas de fluido en forma ligeramente oblicua.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__CoX8jXfETc/SUzuw9PGObI/AAAAAAAAAG0/RH561N6DMzA/s1600-h/sshot_1.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 319px; height: 320px;" src="http://4.bp.blogspot.com/__CoX8jXfETc/SUzuw9PGObI/AAAAAAAAAG0/RH561N6DMzA/s320/sshot_1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5281858987837766066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__CoX8jXfETc/SUzuyWol5LI/AAAAAAAAAG8/A6eqAUOOem8/s1600-h/sshot_2.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 318px;" src="http://1.bp.blogspot.com/__CoX8jXfETc/SUzuyWol5LI/AAAAAAAAAG8/A6eqAUOOem8/s320/sshot_2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5281859011835454642" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-3081279613678904547?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/3081279613678904547/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=3081279613678904547' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3081279613678904547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3081279613678904547'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/lattice-boltzmann-actualizacin.html' title='Lattice Boltzmann (actualización)'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__CoX8jXfETc/SUzuw9PGObI/AAAAAAAAAG0/RH561N6DMzA/s72-c/sshot_1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-4230020789354468761</id><published>2008-12-17T19:54:00.005-02:00</published><updated>2008-12-20T10:58:48.190-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>The Emily Project</title><content type='html'>La calidad de los renders sigue mejorando...&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="246"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bLiX5d3rC6o&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bLiX5d3rC6o&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="246"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Actualización:&lt;/span&gt; El video normal no le hace justicia; &lt;a href="http://www.youtube.com/watch?v=bLiX5d3rC6o&amp;eurl=http://spin-foam.blogspot.com/"&gt;puede verse el video en alta definición&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-4230020789354468761?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/4230020789354468761/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=4230020789354468761' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4230020789354468761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4230020789354468761'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/emily-project.html' title='The Emily Project'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-5642897189232434208</id><published>2008-12-14T09:16:00.003-02:00</published><updated>2008-12-14T10:18:00.986-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><title type='text'>La subasta del dólar</title><content type='html'>Desde el &lt;a href="http://en.wikipedia.org/wiki/Game_theory"&gt;punto de vista formal&lt;/a&gt; se define a un juego como un conjunto de jugadores, cada uno de los cuales dispone de una serie de posibles acciones a tomar, y una forma de determinar cuanta recompensa recibe cada uno de los jugadores en base a las acciones que eligen todos ellos. Este formalismo no solo puede modelizar juegos como el &lt;a href="http://code.google.com/p/t-4/source/browse/trunk/src/ai.a51#27"&gt;ta-te-ti&lt;/a&gt; o el &lt;a href="http://en.wikipedia.org/wiki/Tablebase"&gt;ajedrez&lt;/a&gt;, sino que puede aplicarse al análisis de situaciones hipotéticas tales como el conocido &lt;a href="http://en.wikipedia.org/wiki/Prisoner_dilemma"&gt;"dilema del prisionero"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Uno de los juegos que fueron definidos de este modo es el conocido como la &lt;a href="http://www.math.toronto.edu/mpugh/Teaching/Sci199_03/dollar_auction_1.pdf"&gt;"subasta del dolar"&lt;/a&gt; y fue creado por Martin Shubik en 1971 para dar un ejemplo simple del conocido proceso de escalada en los conflictos. El juego es muy simple: se subasta un dólar entre dos jugadores pero &lt;span style="font-weight: bold;"&gt;ambos&lt;/span&gt; deben pagar sus ofertas, lo que altera radicalmente el desarrollo de la subasta.&lt;br /&gt;&lt;br /&gt;Supongamos que la oferta mínima y el incremento mínimo de las ofertas se establece en 0.05. Entonces, a primera vista, parece un excelente retorno ofrecer 0.05 a cambio del dólar; pero también lo será para el otro jugador ofrecer 0.10 y así el proceso puede seguir hasta que las ofertas hasta 0.95. Pero la fase más interesante ocurre a partir de este momento...&lt;br /&gt;&lt;br /&gt;Supongamos que el jugador "A" hizo la última oferta de 0.95 después de que "B" hubiera ofrecido 0.90. Entonces "B" tiene dos opciones: puede aceptar perder 0.90 o puede ofrecer 1.00 y "salir hecho". El mismo análisis puede hacerlo "A" en caso de realizar "B" su oferta de 1.00: puede perder 0.95 u ofrecer 1.05 y perder 0.05... Esto lleva a una competencia en la que las pérdidas son potencialmente ilimitadas.&lt;br /&gt;&lt;br /&gt;Uno podría pensar que este juego carece de relevancia práctica en si y que solo interesa como modelo de otras competencias que suceden en la realidad, pero eso &lt;a href="http://www.swoopo.com/auction/-80-cash-/129068.html"&gt;sería incorrecto&lt;/a&gt;. Pueden verse más detalles acerca de &lt;a href="http://en.wikipedia.org/wiki/Swoopo"&gt;Swoopo&lt;/a&gt; y su modelo de negocios &lt;a href="http://www.codinghorror.com/blog/archives/001196.html"&gt;en&lt;/a&gt; &lt;a href="http://technologizer.com/2008/09/17/is-swoopo-nothing-more-than-a-well-designed-gimmick/"&gt;múltiples&lt;/a&gt; &lt;a href="http://www.crunchgear.com/2008/09/24/swoopo-entertainment-shopping-or-scam/"&gt;sitios&lt;/a&gt;. Quién dice que la teoría de juegos no es redituable? :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-5642897189232434208?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/5642897189232434208/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=5642897189232434208' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5642897189232434208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5642897189232434208'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/la-subasta-del-dlar.html' title='La subasta del dólar'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-7607894581628498322</id><published>2008-12-08T23:48:00.003-02:00</published><updated>2008-12-09T00:02:43.287-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='física'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='CFD'/><title type='text'>Lattice Boltzmann (con SDL!)</title><content type='html'>Estoy trabajando en un &lt;a href="http://code.google.com/p/lattice-boltzmann-sdl/"&gt;nuevo proyecto personal&lt;/a&gt;: realizar &lt;a href="http://en.wikipedia.org/wiki/Computational_fluid_dynamics"&gt;una simulación de fluidos&lt;/a&gt; mediante el método conocido como &lt;a href="http://www.lbmethod.org/"&gt;Lattice&lt;/a&gt; &lt;a href="http://www.lbmethod.org/"&gt;Boltzmann&lt;/a&gt; y usando &lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt; para los gráficos. Si bien el objetivo último es lograr una buena performance, actualmente solo está funcionando &lt;a href="http://code.google.com/p/lattice-boltzmann-sdl/source/browse/trunk/slow_lattice2d.cpp"&gt;la implementación "lenta"&lt;/a&gt; que voy a usar con propósitos comparativos (a unos 8 FPS con simple precisión en un Core Duo @ 2.16 GHz).&lt;br /&gt;&lt;br /&gt;Hoy fue una experiencia bastante frustrante: empleé horas buscando un error en mi implementación de Lattice Boltzmann para descubrir finalmente que el problema estaba en las condiciones iniciales que estaba empleando... Más específicamente, no estaba cumpliendo con la &lt;a href="http://en.wikipedia.org/wiki/Courant%E2%80%93Friedrichs%E2%80%93Lewy_condition"&gt;condición CFL&lt;/a&gt; :-S&lt;br /&gt;&lt;br /&gt;En las próximas semanas probablemente agregue algo más acerca de Lattice Boltzmann y, con suerte, tenga nuevos avances del proyecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-7607894581628498322?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/7607894581628498322/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=7607894581628498322' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7607894581628498322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7607894581628498322'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/lattice-boltzmann-con-sdl.html' title='Lattice Boltzmann (con SDL!)'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-6456279530011942126</id><published>2008-12-03T13:25:00.010-02:00</published><updated>2008-12-03T14:19:24.341-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><title type='text'>Lissajous II</title><content type='html'>&lt;div&gt;(&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Continúa a &lt;/span&gt;&lt;a href="http://spin-foam.blogspot.com/2008/11/lissajous-i.html"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;este post&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;.&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Es bien conocido que puede escribirse a todo número real como el producto de un número real de módulo menor que 1 y una potencia entera de un número mayor que 1. Por ejemplo, tomando base 10, tenemos:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;234.435 = 0.234435 ∙ 10&lt;sup&gt;3&lt;/sup&gt;&lt;/div&gt;&lt;div&gt;3.14159... = 0.314159... ∙ 10&lt;sup&gt;1&lt;/sup&gt;&lt;/div&gt;&lt;div&gt;1024 = 0.1024 ∙ 10&lt;sup&gt;4&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Claramente podemos observar que el primer dígito del número aparece como el primer decimal en esta forma de representación. Utilizando algunas funciones tales como&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;⌊&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;⌋ = &lt;a href="http://en.wikipedia.org/wiki/Floor_function"&gt;el mayor entero menor o igual que &lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Floor_function"&gt;x&lt;/a&gt;&lt;/span&gt;,&lt;br /&gt;&lt;/div&gt;&lt;div&gt;⌈&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;⌉ = &lt;a href="http://en.wikipedia.org/wiki/Ceil_function"&gt;el menor entero mayor o igual que &lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Ceil_function"&gt;x&lt;/a&gt;&lt;/span&gt; y&lt;br /&gt;&lt;/div&gt;&lt;div&gt;{&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;} = la parte fraccionaria de &lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;, igual a &lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt; - ⌊&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;⌋,&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;podemos expresar esto como&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pd(&lt;span class="Apple-style-span" style="font-style: italic;"&gt;x&lt;/span&gt;) = ⌊10&lt;sup&gt;{log&lt;sub&gt;10 &lt;/sub&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;x&lt;/span&gt;}&lt;/sup&gt;⌋,&lt;br /&gt;&lt;br /&gt;donde pd(&lt;span class="Apple-style-span" style="font-style: italic;"&gt;x&lt;/span&gt;) es la función que devuelve el primer dígito del número (esta expresión está limitada a numeros positivos, pero son los que interesan en nuestro caso). Esto nos indica que el primer dígito será:&lt;br /&gt;&lt;br /&gt;1 si 0 ≤ {log&lt;sub&gt;10 &lt;/sub&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;} &lt;  log&lt;sub&gt;10 &lt;/sub&gt;2&lt;br /&gt;2 si  log&lt;sub&gt;10 &lt;/sub&gt;2 ≤ {log&lt;sub&gt;10 &lt;/sub&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;} &lt;  log&lt;sub&gt;10 &lt;/sub&gt;3&lt;br /&gt;...&lt;br /&gt;9 si  log&lt;sub&gt;10 &lt;/sub&gt;9 ≤ {log&lt;sub&gt;10 &lt;/sub&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;x&lt;/span&gt;} &lt;  1  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por lo tanto, la determinación de la primera cifra de la expansión decimal de un número se reduce a encontrar en cual de estos intervalos cae la parte fraccionarial de su logaritmo en base 10. Si aplicamos esto a las potencias de dos tenemos que&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; {log&lt;sub&gt;10 &lt;/sub&gt;2&lt;sup&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;n&lt;/span&gt;&lt;/sup&gt;} = {&lt;span class="Apple-style-span" style="font-style: italic;"&gt;n&lt;/span&gt; log&lt;sub&gt;10 &lt;/sub&gt;2}.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por consiguiente, la determinación de los posibles valores de los primeros dígitos de las potencias de dos se reduce a encontrar los sectores del intervalo [0, 1) donde caen las partes fraccionarias de los múltiplos de log&lt;sub&gt;10 &lt;/sub&gt;2. Encontrar cuáles son estos sectores y cuál es la conexión de todo esto con las figuras de Lissajous quedará para el próximo post por razones de tiempo :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-6456279530011942126?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/6456279530011942126/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=6456279530011942126' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6456279530011942126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6456279530011942126'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/12/lissajous-ii.html' title='Lissajous II'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-4658954882303296883</id><published>2008-11-25T23:14:00.003-02:00</published><updated>2008-11-25T23:34:01.650-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><title type='text'>Lissajous I</title><content type='html'>Es bien conocido que las representaciones decimales de las potencias de diez comienzan con un dígito '1' y terminan con un dígito '0' (exceptuando el caso trivial de 1&lt;sup&gt;0&lt;/sup&gt; = 1; se supondrán exponentes no nulos en el resto del post). Lo mismo sucederá, cualquiera sea el valor de &lt;span style="font-style: italic;"&gt;n&lt;/span&gt;, con las representaciones en base &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; de las potencias de &lt;span style="font-style: italic;"&gt;n&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Lo que no es tan claro es el comportamiento de los dígitos en una base dada, por ejemplo 10, de las potencias de un número distinto a la base. Si consideramos el caso de las &lt;a href="http://en.wikipedia.org/wiki/Power_of_two"&gt;potencias de 2&lt;/a&gt; expresadas en base 10, podemos ver que terminarán en un dígito par ya que son números pares. Pensando un poco más, podemos ver que nunca terminarán en '0', ya que para ello deberían ser múltiplos de 10 y, por lo tanto, múltiplos de 5. Pero ciertamente quedaría en duda qué otros valores particulares podrán tomar los últimos dígitos...&lt;br /&gt;&lt;br /&gt;Los que memorizamos potencias de dos como parte de nuestra actividad académica/profesional :-) podemos ver que:&lt;br /&gt;&lt;br /&gt;2&lt;sup&gt;1&lt;/sup&gt; = &lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;&lt;br /&gt;2&lt;sup&gt;2&lt;/sup&gt; = &lt;span style="font-weight: bold;"&gt;4&lt;/span&gt;&lt;br /&gt;2&lt;sup&gt;4&lt;/sup&gt; = 1&lt;span style="font-weight: bold;"&gt;6&lt;/span&gt;&lt;br /&gt;2&lt;sup&gt;3&lt;/sup&gt; = &lt;span style="font-weight: bold;"&gt;8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y que, por lo tanto, todos los otros dígitos pares aparecen al final de las potencias de dos. Pero este es un proceso de enumeración exhaustiva, claramente insatisfactorio a la hora de obtener entendimiento de un proceso.&lt;br /&gt;&lt;br /&gt;La primera incógnita que quedará planteada para el próximo post es determinar "que regla" siguen estos dígitos y, de mayor interés, qué regla siguen los dígitos más significativos; por ejemplo, puede una potencia de dos empezar con 9? El otro interrogante será ver que conexión tiene esto con las &lt;a href="http://mathworld.wolfram.com/LissajousCurve.html"&gt;figuras de Lissajous&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-4658954882303296883?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/4658954882303296883/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=4658954882303296883' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4658954882303296883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4658954882303296883'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/11/lissajous-i.html' title='Lissajous I'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-8350402701121186449</id><published>2008-11-15T19:15:00.008-02:00</published><updated>2008-11-15T20:51:46.980-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Solución y otras cosas</title><content type='html'>A continuación se muestra la solución al problema planteado en el &lt;a href="http://spin-foam.blogspot.com/2008/11/c-puzzle.html"&gt;último post&lt;/a&gt;. Para verla &lt;a href="javascript:expandcollapse('sol')"&gt;hacer click aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="posthidden" id="sol"&gt;&lt;br /&gt;El programa eventualmente se detiene, pero después de unas 2&lt;sup&gt;2040&lt;/sup&gt; iteraciones del loop externo. Por lo tanto, para fines prácticos, puede considerarse como un loop infinito...  Es claro que devuelve cero, ya que tuvo que salir del loop externo para poder terminar. A continuación se describe con algo más de detalle el funcionamiento del programa.&lt;br /&gt;&lt;br /&gt;Es claro que el único punto confuso es la acción de la línea "&lt;span style="font-family:courier new;"&gt;while (!++*p++);&lt;/span&gt;", el resto del programa es bastante normal. Para interpretarla, puede verse teniendo en cuenta la prioridad de los operadores que es equivalente a realizar "&lt;span style="font-family:courier new;"&gt;while (!(++(*(p++))));&lt;/span&gt;". Esto corresponde a:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Incrementar &lt;span style="font-family:courier new;"&gt;p&lt;/span&gt; devolviendo su valor original, que podemos llamar &lt;span style="font-family:courier new;"&gt;p'&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Incrementar el valor apuntado por &lt;span style="font-family:courier new;"&gt;p'&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Si el valor apuntado por &lt;span style="font-family:courier new;"&gt;p'&lt;/span&gt; es ahora 0, volver al paso 1. En caso contrario, salir.&lt;/li&gt;&lt;/ol&gt;Como buffer se inicializa con ceros al ser variable global y p apunta inicialmente a buffer[0], tenemos que en la primera iteración del loop externo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;(1) &lt;span style="font-family:courier new;"&gt;p&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;&amp;amp;buffer[1]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;(2) &lt;span style="font-family:courier new;"&gt;buffer[0]&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;1 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;(3) Sale porque &lt;span style="font-family:courier new;"&gt;buffer[0] != 0   &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;En la segunda iteración tendremos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;(1) &lt;span style="font-family:courier new;"&gt;p&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;&amp;amp;buffer[1] &lt;/span&gt;&lt;/li&gt;&lt;li&gt;(2) &lt;span style="font-family:courier new;"&gt;buffer[0]&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;2 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;(3) Sale porque &lt;span style="font-family:courier new;"&gt;buffer[0] != 0   &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Esto continuará hasta que &lt;span style="font-family:courier new;"&gt;buffer[0]&lt;/span&gt; sea &lt;span style="font-family:courier new;"&gt;255&lt;/span&gt;. En ese momento sucederá lo siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;(1) &lt;span style="font-family:courier new;"&gt;p&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;&amp;amp;buffer[1]&lt;/span&gt; &lt;/li&gt;&lt;li&gt;(2) &lt;span style="font-family:courier new;"&gt;buffer[0]&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;0&lt;/span&gt; &lt;/li&gt;&lt;li&gt;(3) Vuelve a "1" porque &lt;span style="font-family:courier new;"&gt;buffer[0] == 0&lt;/span&gt; &lt;/li&gt;&lt;li&gt;(1') &lt;span style="font-family:courier new;"&gt;p&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;&amp;amp;buffer[2] &lt;/span&gt;&lt;/li&gt;&lt;li&gt;(2') &lt;span style="font-family:courier new;"&gt;buffer[1]&lt;/span&gt; &lt;-- &lt;span style="font-family:courier new;"&gt;1&lt;/span&gt; &lt;/li&gt;&lt;li&gt;(3') Sale porque &lt;span style="font-family:courier new;"&gt;buffer[1] != 0   &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Si se observa el comportamiento en detalle, puede verse que tenemos un contador en el que cada posición de buffer actúa como un dígito base 256. Para salir es necesario que al finalizar el loop interno &lt;span style="font-family:courier new;"&gt;p&lt;/span&gt; sea  igual a &lt;span style="font-family:courier new;"&gt;q&lt;/span&gt;. Pero esto implicaría que se acaba de incrementar a &lt;span style="font-family:courier new;"&gt;buffer[255]&lt;/span&gt;, lo que no sucederá hasta que hayan ocurrido 256&lt;sup&gt;255&lt;/sup&gt; == 2&lt;sup&gt;8*255&lt;/sup&gt; == 2&lt;sup&gt;2040&lt;/sup&gt; iteraciones del loop externo.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En otro área completamente diferente, encontraron &lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=es&amp;amp;t=h&amp;amp;om=1&amp;amp;msa=0&amp;amp;msid=107049617370646363011.00000111f37ca4d1d522b&amp;amp;ll=27.851826,-105.565739&amp;amp;spn=0.039082,0.077248&amp;amp;z=14"&gt;en México&lt;/a&gt; una caverna llena de extraordinarios cristales de yeso hidratado (sulfato de calcio):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__CoX8jXfETc/SR9Ep7mthfI/AAAAAAAAAGk/jnwA6OQzKWY/s1600-h/cave.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 340px; height: 226px;" src="http://2.bp.blogspot.com/__CoX8jXfETc/SR9Ep7mthfI/AAAAAAAAAGk/jnwA6OQzKWY/s320/cave.jpg" alt="" id="BLOGGER_PHOTO_ID_5269005576212153842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En el &lt;a href="http://ngm.nationalgeographic.com/2008/11/crystal-giants/shea-text"&gt;sitio de National Geographic&lt;/a&gt; pueden observarse otras fotos espectaculares y más detalles sobre el descubrimiento (por ejemplo, el porqué de los trajes naranjas :-). (&lt;a href="http://www.overcomingbias.com/2008/11/whether-diamond.html"&gt;Via Robin Hanson&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-8350402701121186449?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/8350402701121186449/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=8350402701121186449' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8350402701121186449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8350402701121186449'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/11/solucin-y-otras-cosas.html' title='Solución y otras cosas'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__CoX8jXfETc/SR9Ep7mthfI/AAAAAAAAAGk/jnwA6OQzKWY/s72-c/cave.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-6566008329046428193</id><published>2008-11-10T22:57:00.007-02:00</published><updated>2008-11-10T23:28:14.142-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C Puzzle</title><content type='html'>El problema es determinar si el siguiente programa:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;termina de ejecutarse;&lt;/li&gt;&lt;li&gt;en caso de hacerlo, cuanto demora y qué devuelve al sistema operativo.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br /&gt;static unsigned char buffer[256];&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;  unsigned char *p, *q;&lt;br /&gt;  q = (p = buffer) + sizeof(buffer);&lt;br /&gt;  while (q - p)&lt;br /&gt;  {     &lt;br /&gt;      p = buffer;&lt;br /&gt;      while (!++*p++);&lt;br /&gt;  }&lt;br /&gt;  return p - q;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Las respuestas a estas preguntas en unos días... :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-6566008329046428193?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/6566008329046428193/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=6566008329046428193' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6566008329046428193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6566008329046428193'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/11/c-puzzle.html' title='C Puzzle'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-2466574722217511197</id><published>2008-11-02T10:20:00.003-02:00</published><updated>2008-11-02T11:32:55.871-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Detectando dígitos en un 8051</title><content type='html'>Uno de los problemas que aparecieron en un examen de &lt;a href="http://materias.fi.uba.ar/6609/"&gt;Labo de Micros&lt;/a&gt; reciente (que le tomaron a mi hermano) indicaba hacer una "función" en &lt;a href="http://www.8052.com/set8051.phtml"&gt;&lt;span style="font-style: italic;"&gt;assembly &lt;/span&gt;8051&lt;/a&gt; tal que detectara si el valor que se le pasaba era un dígito. Más especificamente, debían volver con C en 1 si y solo si el valor &lt;span style="font-weight: bold;"&gt;no &lt;/span&gt;era un dígito.&lt;br /&gt;&lt;br /&gt;Yo siempre había pensado el problema de la forma obvia, algo así como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;no_es_digito:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;clr C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;subb A, #'0'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jc &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;no_es_dig_end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;subb A, #10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cpl C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;no_es_dig_end:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pero a mi hermano le dijeron que podía hacerse con cinco instrucciones, lo que me hizo pensar en más detalle... hasta que vi que la resta no era la única solución. Eso me llevó al siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;no_es_digito:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;add A, #(256 - '0')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;add A, #(256 - 10)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El primer add lleva, en forma modular, el valor desde el rango ASCII &lt;span style="font-family:courier new;"&gt;'0'&lt;/span&gt; ... &lt;span style="font-family:courier new;"&gt;'9'&lt;/span&gt; al rango &lt;span style="font-family:courier new;"&gt;0x00&lt;/span&gt; ... &lt;span style="font-family:courier new;"&gt;0x09&lt;/span&gt;. En base a eso es simple ver que el segundo add dará como resultado C = 1 solo si el valor es 0x0a o mayor. Por lo tanto, solo dará C = 1 si el caracter pasado originalmente no cae en el rango &lt;span style="font-family:courier new;"&gt;'0'&lt;/span&gt; ... &lt;span style="font-family:courier new;"&gt;'9'&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;No creo que pueda hacerse con dos instrucciones, ya que las instrucciones que alteran C en base al contenido del acumulador son aritméticas (según recuerdo!) y solo pueden "detectar" valores mayores o menores a uno especificado... pero el desafío queda abierto :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-2466574722217511197?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/2466574722217511197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=2466574722217511197' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/2466574722217511197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/2466574722217511197'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/11/detectando-dgitos-en-un-8051.html' title='Detectando dígitos en un 8051'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-4751682435114705475</id><published>2008-10-18T09:15:00.005-03:00</published><updated>2008-10-18T10:54:55.444-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><title type='text'>Sistemas de ecuaciones booleanos</title><content type='html'>Hace unos días un compañero de la facultad (hola Guille!) me comentaba sobre una clase de problemas que suelen aparecer en los parciales de &lt;a href="http://materias.fi.uba.ar/6107/"&gt;Matemática Discreta&lt;/a&gt; (al menos en la &lt;a href="http://www.fi.uba.ar/"&gt;FIUBA&lt;/a&gt;). Recordaba que estos problemas consistían en encontrar una función booleana que de como resultado 1 si y solo si los valores de sus parámetros satisfacen un sistema de ecuaciones booleano y eso me hizo recordar un "método" que había desarrollado cuando la había cursado (aunque creo que no tuve ocasión de usarlo en el parcial).&lt;br /&gt;&lt;br /&gt;Nota: Las "barras" que se suelen utilizarse para indicar complemento no se expresan fácilmente en HTML. Esto puede resolverse utilizando el operador "¬". Las otras dos operaciones pueden expresarse por "∧" (AND) y "∨" (OR). Por simplicidad, podemos asumir que "∧" tiene prioridad sobre "∨".&lt;br /&gt;&lt;br /&gt;Para empezar podemos demostrar que dada una variable &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; satisfaciendo &lt;span style="font-style: italic;"&gt;x &lt;/span&gt;∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 0 y &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 sabemos que &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; (o sea la unicidad del complemento). Una forma es viendo que:&lt;br /&gt;&lt;br /&gt;(1) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 (Hipótesis)&lt;br /&gt;(2) &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ (&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ &lt;span style="font-style: italic;"&gt;y) = &lt;/span&gt;¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ 1 (Aplico la misma operación a ambos miembros)&lt;br /&gt;(3) ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ (&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ &lt;span style="font-style: italic;"&gt;y) = &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;¬&lt;span style="font-style: italic;"&gt;x &lt;/span&gt;(Definición de 1)&lt;br /&gt;(4) ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;y&lt;/span&gt; =  ¬&lt;span style="font-style: italic;"&gt;x &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;(Propiedad distributiva)&lt;br /&gt;(5) 0 ∨ ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt; (Definición de complemento)&lt;br /&gt;(6) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 0 (Hipótesis)&lt;br /&gt;(7) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; (Reemplazando 6 en 5)&lt;br /&gt;(8) (&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;) ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = ¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt; (Propiedad distributiva)&lt;br /&gt;(9) 1 ∧ &lt;span style="font-style: italic;"&gt;y = &lt;/span&gt;¬&lt;span style="font-style: italic;"&gt;x &lt;/span&gt;(Definición de complemento)&lt;br /&gt;(10) &lt;span style="font-style: italic;"&gt;y = &lt;/span&gt;¬&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;(Definición de 1)&lt;br /&gt;&lt;br /&gt;Otro "lema" que es útil indica que dados &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; tales que &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1, puede decirse que &lt;span style="font-style: italic;"&gt;x &lt;/span&gt;= 1 y que &lt;span style="font-style: italic;"&gt;y &lt;/span&gt;= 1. Una forma de demostrarlo es la siguiente:&lt;br /&gt;&lt;br /&gt;(1) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 (Hipótesis)&lt;br /&gt;(2) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; ∨  &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;¬y&lt;/span&gt; = 1 ∨  &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;¬y &lt;/span&gt;(Aplico la misma operación a ambos miembros)&lt;br /&gt;(3) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; ∨  &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;¬y&lt;/span&gt; = 1 (Propiedad absorbente)&lt;br /&gt;(4) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ (&lt;span style="font-style: italic;"&gt;y&lt;/span&gt; ∨ &lt;span style="font-style: italic;"&gt;¬y&lt;/span&gt;) = 1 (Propiedad distributiva)&lt;br /&gt;(5) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ 1 = 1 (Definición de complemento)&lt;br /&gt;(6) &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; = 1 (Definición de 1)&lt;br /&gt;&lt;br /&gt;Por simetría podemos ver que &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 y podemos evitar demostrar la propiedad absorbente para poder llegar alguna vez al tema a tratar :-)&lt;br /&gt;&lt;br /&gt;Ahora, podemos ver a todo sistema de ecuaciones  como una serie de igualdades entre funciones que requieren satisfacerse. Por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;f1&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, ...) = &lt;span style="font-style: italic;"&gt;g1&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, ...)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;f2&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, ...) = &lt;span style="font-style: italic;"&gt;g2&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, ...)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;f3&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, ...) = &lt;span style="font-style: italic;"&gt;g3&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, ...)&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Ahora, como sabemos que &lt;span style="font-style: italic;"&gt;x &lt;/span&gt;∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 0 y &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∨ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 implican &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; = ¬&lt;span style="font-style: italic;"&gt;y&lt;/span&gt; y que &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 implica que tanto  &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; como &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; son iguales a 1, podemos expresar una igualdad arbitraria &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; =&lt;span style="font-style: italic;"&gt; b&lt;/span&gt; como&lt;span style="font-style: italic;"&gt; ¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) ∧ (&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = 1 aplicando lo siguiente:&lt;br /&gt;&lt;br /&gt;Ida&lt;br /&gt;&lt;br /&gt;(1)&lt;span style="font-style: italic;"&gt; a&lt;/span&gt; = &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; (Hipótesis)&lt;br /&gt;(2) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; = ¬(¬&lt;span style="font-style: italic;"&gt;b)&lt;/span&gt; (Propiedad involutiva del complemento)&lt;br /&gt;(3) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt; = 0 (Definición de complemento)&lt;br /&gt;(4) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt; = 1 (Definición de complemento)&lt;br /&gt;(5) &lt;span style="font-style: italic;"&gt;¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = ¬0 (Aplico la misma operación a ambos miembros)&lt;br /&gt;(6) &lt;span style="font-style: italic;"&gt;¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = 1 (Aplico ¬0 = 1)&lt;br /&gt;(7) &lt;span style="font-style: italic;"&gt;¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) ∧ (&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = 1 (Aplico ∧ miembro a miembro sobre 4 y 6)&lt;br /&gt;&lt;br /&gt;Vuelta&lt;br /&gt;&lt;br /&gt;(1) &lt;span style="font-style: italic;"&gt;¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) ∧ (&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = 1 (Hipótesis)&lt;br /&gt;(2) &lt;span style="font-style: italic;"&gt;¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = 1 (Propiedad demostrada anteriormente)&lt;br /&gt;(3) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∨ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt; = 1&lt;span style="font-style: italic;"&gt;&lt;/span&gt; (De 1 por propiedad demostrada anteriormente)&lt;br /&gt;(4) ¬&lt;span style="font-style: italic;"&gt;¬&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt;) = ¬1 (Aplico la misma operación a ambos miembros)&lt;br /&gt;(5) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt; = ¬1 (Propiedad involutiva del complemento)&lt;br /&gt;(6) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; ∧ ¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt; = 0 (Aplico ¬1 = 0)&lt;br /&gt;(7) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; = ¬¬&lt;span style="font-style: italic;"&gt;b&lt;/span&gt; (Aplico otra propiedad demostrada anteriormente sobre 3 y 6)&lt;br /&gt;(8) &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; = &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; (Propiedad involutiva del complemento)&lt;br /&gt;&lt;br /&gt;Si omitimos que no demostramos ni la propiedad involutiva del complemento ni que ¬0 = 1 (las demostraciones son simples, quedan como ejercicio para el lector :-), sabemos como transformar una ecuación arbitraria en una igualada a 1. Ahora podemos aplicar que &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; ∧ &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 implica que &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; = &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; = 1 para expresar el sistema de ecuaciones anterior como:&lt;br /&gt;&lt;br /&gt;¬(&lt;span style="font-style: italic;"&gt;f1&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...) ∧ ¬&lt;span style="font-style: italic;"&gt;g1&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...)) ∧&lt;br /&gt;(&lt;span style="font-style: italic;"&gt;f1&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...) ∨ ¬&lt;span style="font-style: italic;"&gt;g1&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...)) ∧&lt;br /&gt;¬(&lt;span style="font-style: italic;"&gt;f2&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...) ∧ ¬&lt;span style="font-style: italic;"&gt;g2&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...)) ∧&lt;br /&gt;(&lt;span style="font-style: italic;"&gt;f2&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...) ∨ ¬&lt;span style="font-style: italic;"&gt;g2&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...)) ∧&lt;br /&gt;¬(&lt;span style="font-style: italic;"&gt;f3&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...) ∧ ¬&lt;span style="font-style: italic;"&gt;g3&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...)) ∧&lt;br /&gt;(&lt;span style="font-style: italic;"&gt;f3&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...) ∨ ¬&lt;span style="font-style: italic;"&gt;g3&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;y&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z&lt;/span&gt;, ...)) ∧&lt;br /&gt;... = 1&lt;br /&gt;&lt;br /&gt;Esto cumple en forma automática el objetivo del problema aunque puede ser algo tedioso...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-4751682435114705475?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/4751682435114705475/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=4751682435114705475' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4751682435114705475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4751682435114705475'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/10/sistemas-de-ecuaciones-booleanos.html' title='Sistemas de ecuaciones booleanos'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-7708233677860182505</id><published>2008-08-02T09:56:00.003-03:00</published><updated>2008-08-02T10:09:23.055-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>Me pasó otra vez...</title><content type='html'>...Google insiste en confundirme con un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;bot&lt;/span&gt;. No se que es lo que confundirá a sus algoritmos de detección, aunque sospecho de mi tendencia a abrir múltiples pestañas cuando veo una lista de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;links&lt;/span&gt; :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/__CoX8jXfETc/SJRZzwzW6xI/AAAAAAAAAFk/33zQLEVoUCQ/s1600-h/bot.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/__CoX8jXfETc/SJRZzwzW6xI/AAAAAAAAAFk/33zQLEVoUCQ/s320/bot.PNG" alt="" id="BLOGGER_PHOTO_ID_5229903813092502290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Por si fuera poco, el &lt;a href="http://en.wikipedia.org/wiki/CAPTCHA"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CAPTCHA&lt;/span&gt;&lt;/a&gt; también me clasificó como "no humano", ya que realmente me resultaba difícil ver que es lo que decía. Tengo la sospecha de que navegar por Internet en el futuro va a ser realmente interesante...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-7708233677860182505?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/7708233677860182505/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=7708233677860182505' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7708233677860182505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7708233677860182505'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/08/me-pas-otra-vez.html' title='Me pasó otra vez...'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/__CoX8jXfETc/SJRZzwzW6xI/AAAAAAAAAFk/33zQLEVoUCQ/s72-c/bot.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-8700133139221600503</id><published>2008-07-18T11:03:00.003-03:00</published><updated>2008-07-18T11:07:37.208-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spice'/><category scheme='http://www.blogger.com/atom/ns#' term='tesis'/><title type='text'>spice3f5 para Visual C++</title><content type='html'>Acabo de agregar a la página de mi proyecto de Tesis una versión de&lt;a href="http://embedded.eecs.berkeley.edu/pubs/downloads/spice/index.htm"&gt; spice3f5&lt;/a&gt; &lt;a href="http://code.google.com/p/afdgp/"&gt;compilable con Microsoft Visual C++ 2008&lt;/a&gt;. Esto permite realizar fácilmente análisis de una &lt;a href="http://en.wikipedia.org/wiki/Netlist"&gt;netlist&lt;/a&gt; cualquiera (aunque no incluye manual de uso :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-8700133139221600503?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/8700133139221600503/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=8700133139221600503' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8700133139221600503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8700133139221600503'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/07/spice3f5-para-visual-c.html' title='spice3f5 para Visual C++'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-6135666143669059550</id><published>2008-07-02T14:32:00.003-03:00</published><updated>2008-07-02T15:00:19.370-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><category scheme='http://www.blogger.com/atom/ns#' term='probabilidad'/><title type='text'>Un problema de probabilidad</title><content type='html'>&lt;span style="font-style: italic;"&gt;En un juego, se presentan a una persona dos sobres. Sabe que uno de ellos contiene una cantidad desconocida de dinero 'A', y que el otro contiene el doble de esa cantidad, pero el jugador desconoce "cuál es cual". Se le dice que puede llevarse solo uno de los sobres y que debe llevarse el último sobre que abra.&lt;br /&gt;&lt;br /&gt;La pregunta es: después de haber elegido y abierto un sobre, le conviene cambiarlo por el otro?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;La respuesta intuitiva es "no", ya que ver el contenido del sobre no nos permite discriminar entre el caso en que elegimos el sobre con la cantidad A y el caso en que elegimos el sobre con al cantidad 2A. Al no tener evidencia proveniente de ver el contenido del sobre, el intercambio nos sería indiferente.&lt;br /&gt;&lt;br /&gt;Ahora supongamos que calculamos el valor esperado del contenido del sobre no abierto, al que denominaremos "sobre 2". Si llamamos B al contenido del sobre abierto, el sobre 2 puede tener contenido B/2 o 2B. Asumiendo la indiferencia mencionada anteriormente, el valor esperado del contenido del sobre 2 sería:&lt;br /&gt;&lt;br /&gt;E(&lt;span style="font-style: italic;"&gt;contenido sobre 2&lt;/span&gt;) = 1/2 B/2 + 1/2 2B = B/4 + B = &lt;span style="font-weight: bold;"&gt;5/4 B&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto implicaría que siempre nos sería conveniente realizar el intercambio!&lt;br /&gt;&lt;br /&gt;Más detalles sobre el problema y sus implicaciones &lt;a href="http://en.wikipedia.org/wiki/Two_envelopes_problem"&gt;en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-6135666143669059550?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/6135666143669059550/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=6135666143669059550' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6135666143669059550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6135666143669059550'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/07/un-problema-de-probabilidad.html' title='Un problema de probabilidad'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-1208609617102070466</id><published>2008-04-30T12:53:00.005-03:00</published><updated>2008-04-30T15:35:56.546-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Factories en C++</title><content type='html'>Las &lt;a href="http://smart2help.com/e-books/ticpp-2nd-ed-vol-two/#_Toc53985850"&gt;implementaciones normales de factories en C++&lt;/a&gt; suelen introducir la necesidad de modificar la clase Factory o su inicialización para cada clase que se agrega. Los intentos de evadir esta centralización utilizando la inicialización estática suelen ser algo como lo que aparece en el ejemplo &lt;a href="http://mariano.chouza.googlepages.com/factory_mal.tar.bz2"&gt;factory_mal&lt;/a&gt; (es claro que hay algo mal :-) .&lt;br /&gt;&lt;br /&gt;Este ejemplo utiliza la inicialización de variables globales para realizar el registro de los &lt;span style="font-style: italic;"&gt;factory methods. &lt;/span&gt;En muchos casos esto parece funcionar, de hecho me acaba de funcionar al probarlo, pero contiene un error grave: &lt;a href="http://www.tilander.org/aurora/2007/10/static-initialization-in-c.html"&gt;asume un orden de inicialización de objetos estáticos entre distintos archivos&lt;/a&gt; (bueno, "unidades de traducción").&lt;br /&gt;&lt;br /&gt;El problema en que no puede suponerse que los distintos &lt;span style="font-family:courier new;"&gt;Registrator&lt;/span&gt;s vayan a inicializarse después que &lt;span style="font-family:courier new;"&gt;Factory::cm_&lt;/span&gt;. Si los &lt;span style="font-family:courier new;"&gt;Registrator&lt;/span&gt;s se inicializan primero, &lt;span style="font-family:courier new;"&gt;Factory::registrate()&lt;/span&gt; accederá a un map no inicializado, probablemente llevando a un &lt;span style="font-style: italic;"&gt;segmentation fault&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mariano.chouza.googlepages.com/factory_arreglado.tar.bz2"&gt;La solución&lt;/a&gt; a esto es la misma que la aplicada en el &lt;a href="http://www.aristeia.com/Papers/C++ReportColumns/marapr95.pdf"&gt;Singleton de Meyers&lt;/a&gt;: utilizar una variable estática dentro de un método. De este modo podemos garantizar que el objeto estará inicializado cuando sea utilizado.&lt;br /&gt;&lt;br /&gt;Obviamente esta solución no maneja los problemas con múltiples threads, ni arregla mágicamente los &lt;a href="http://www.adrianmccarthy.com/blog/?p=53"&gt;problemas de diseño&lt;/a&gt; &lt;a href="http://www.oreillynet.com/cs/user/view/cs_msg/23417"&gt;que puedan ser provocados&lt;/a&gt; &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=213214"&gt;por el uso indebido de singletons&lt;/a&gt;, pero soluciona el problema de la inicialización.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-1208609617102070466?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/1208609617102070466/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=1208609617102070466' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/1208609617102070466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/1208609617102070466'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/04/factories-en-c.html' title='Factories en C++'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-4117160377167639211</id><published>2008-04-05T09:42:00.003-03:00</published><updated>2008-04-05T09:57:18.878-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='física'/><title type='text'>Relatividad en 6 minutos</title><content type='html'>(Vía &lt;a href="http://www.fourmilab.ch/fourmilog/"&gt;John Walker&lt;/a&gt;)&lt;br /&gt;Sí, un video musical por &lt;a href="http://en.wikipedia.org/wiki/Max_Tegmark"&gt;Max Tegmark&lt;/a&gt;! No puedo imaginarme algo así en la FIUBA aunque, en realidad, tampoco lo imaginaba en el MIT :-D&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5PkLLXhONvQ"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/5PkLLXhONvQ" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arxiv.org/PS_cache/arxiv/pdf/0804/0804.0016v2.pdf"&gt;El paper&lt;/a&gt; con la letra...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-4117160377167639211?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/4117160377167639211/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=4117160377167639211' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4117160377167639211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4117160377167639211'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/04/relatividad-en-6-minutos.html' title='Relatividad en 6 minutos'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-892138540865016310</id><published>2008-04-03T09:24:00.004-03:00</published><updated>2008-04-03T10:01:48.781-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='futuro'/><category scheme='http://www.blogger.com/atom/ns#' term='robots'/><title type='text'>Un robot distinto</title><content type='html'>&lt;a href="http://www.bostondynamics.com/content/sec.php?section=BigDog"&gt;BigDog: un robot que parece &lt;span style="font-style: italic;"&gt;"útil"&lt;/span&gt;&lt;/a&gt;. Acostumbrado a ver la &lt;a href="http://www.youtube.com/watch?v=_CQ5AKaEi3U"&gt;forma vacilante en que suelen caminar los robots&lt;/a&gt; me impresionó mucho la estabilidad y adaptabilidad que despliega &lt;span style="font-style: italic;"&gt;BigDog&lt;/span&gt;. Tal vez hay razones para el &lt;a href="http://www.amazon.com/Robot-Mere-Machine-Transcendent-Mind/dp/0195136306/"&gt;optimismo en la robótica&lt;/a&gt; :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-892138540865016310?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/892138540865016310/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=892138540865016310' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/892138540865016310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/892138540865016310'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/04/un-robot-distinto.html' title='Un robot distinto'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-2234221920382022596</id><published>2008-03-19T07:19:00.003-03:00</published><updated>2008-03-19T07:48:56.050-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='futuro'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><title type='text'>Muere Arthur Clarke a los 90 años</title><content type='html'>Probablemente, su idea más conocida es la que apareció en &lt;a href="http://latimesblogs.latimes.com/thedailymirror/files/1946_0203_clarke01.JPG"&gt;esta tapa de diario&lt;/a&gt;, allá por el año 1946 y en &lt;a href="http://lakdiva.org/clarke/1945ww/"&gt;una revista&lt;/a&gt; en el año 1945 con más detalle. Un anticipo de &lt;a href="http://en.wikipedia.org/wiki/DirecTV"&gt;DirectTV&lt;/a&gt;... aunque con tripulaciones yendo a cambiar las válvulas :-)&lt;br /&gt;&lt;br /&gt;Probablemente esta mezcla de aciertos y desaciertos sea inherente a tratar de predecir tecnologías  futuras; como dice la frase, &lt;span style="font-style: italic;"&gt;"&lt;a href="http://www.larry.denenberg.com/predictions.html"&gt;es difícil hacer predicciones, sobre todo acerca del futuro&lt;/a&gt;"&lt;/span&gt;. Probablemente allá por el año 2200 se reirán de &lt;a href="http://www.nanotechnology.com/marketplace/"&gt;algunas de las predicciones&lt;/a&gt; que se hacen hoy día acerca de la &lt;a href="http://www.wowio.com/users/product.asp?BookId=503"&gt;nanotecnología&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-2234221920382022596?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/2234221920382022596/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=2234221920382022596' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/2234221920382022596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/2234221920382022596'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/03/muere-arthur-clarke-los-90-aos.html' title='Muere Arthur Clarke a los 90 años'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-3584791451570550838</id><published>2008-03-17T08:33:00.005-03:00</published><updated>2008-03-17T08:51:26.603-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fiuba'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Proyecto para Labo de Micros</title><content type='html'>&lt;a href="http://code.google.com/p/t-4/"&gt;Acá&lt;/a&gt; está todo el software del proyecto que hicimos (junto con Mariano Beiró) para la materia &lt;a href="http://www.fi.uba.ar/materias/6609/"&gt;Laboratorio de Microcomputadoras&lt;/a&gt;: un juego de Ta-Te-Ti capaz de conectarse a cualquier televisor (con audio incluido!). Una de las cosas más particulares que tenía el software era el &lt;a href="http://code.google.com/p/t-4/source/browse/trunk/src/ai.a51"&gt;uso de un tabla comprimida con Huffman&lt;/a&gt; para determinar que jugada realizar en base a la posición del tablero. Algunas fotos:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/__CoX8jXfETc/R95asNlBS-I/AAAAAAAAAAc/o61nEoo2I6Q/s1600-h/100_3189_sm.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/__CoX8jXfETc/R95asNlBS-I/AAAAAAAAAAc/o61nEoo2I6Q/s320/100_3189_sm.JPG" alt="" id="BLOGGER_PHOTO_ID_5178676337128328162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;La imagen proyectada sobre una PC cuando hicimos la presentación (como la salida era video compuesto la tomaba sin problemas).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/__CoX8jXfETc/R95bBNlBS_I/AAAAAAAAAAk/uyY8NEMVZ7s/s1600-h/100_3190_sm.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/__CoX8jXfETc/R95bBNlBS_I/AAAAAAAAAAk/uyY8NEMVZ7s/s320/100_3190_sm.JPG" alt="" id="BLOGGER_PHOTO_ID_5178676697905581042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Una vista de la plaqueta principal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-3584791451570550838?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/3584791451570550838/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=3584791451570550838' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3584791451570550838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3584791451570550838'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/03/proyecto-para-labo-de-micros.html' title='Proyecto para Labo de Micros'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/__CoX8jXfETc/R95asNlBS-I/AAAAAAAAAAc/o61nEoo2I6Q/s72-c/100_3189_sm.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-6950519362597293519</id><published>2008-03-16T22:55:00.011-03:00</published><updated>2008-04-03T10:07:14.327-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mathematica'/><title type='text'>Graficando funciones discontinuas con Mathematica</title><content type='html'>Mientras estaba tratando de ilustrar el comportamiento de las &lt;a href="http://en.wikipedia.org/wiki/Elliptic_rational_functions"&gt;funciones racionales elípticas&lt;/a&gt; dentro de la Tesis, me encontré con uno de los problemas del comando &lt;a href="http://documents.wolfram.com/mathematica/functions/Plot"&gt;&lt;span style="font-family:courier new;"&gt;Plot[]&lt;/span&gt;&lt;/a&gt; del Mathematica. Este comando, al ir conectando puntos donde evalúa a la función, termina dibujando una línea en donde debería haber una discontinuidad. Por ejemplo, si uno ejecuta el comando &lt;span style="font-family:courier new;"&gt;Plot[1/(x-1),{x,-3,3}]&lt;/span&gt; obtiene el siguiente resultado:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/__CoX8jXfETc/R93QltlBS8I/AAAAAAAAAAM/ad6STD1je0Y/s1600-h/plot_with_problem.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/__CoX8jXfETc/R93QltlBS8I/AAAAAAAAAAM/ad6STD1je0Y/s320/plot_with_problem.PNG" alt="" id="BLOGGER_PHOTO_ID_5178524492854545346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Puede verse claramente que hay una línea vertical en x = 1.&lt;br /&gt;&lt;br /&gt;Después de encontrar en la Web varias opciones que no me resultaban satisfactorias, tales como &lt;a href="http://reference.wolfram.com/mathematica/ref/Exclusions.html"&gt;actualizar a la versión 6&lt;/a&gt; o dividir el gráfico en segmentos con dominios donde la función es continua (estaba trabajando con una función con 4 polos), decidí acotar el valor de la función y reemplazar los valores superiores con valores indeterminados.&lt;br /&gt;&lt;br /&gt;Esta solución aplicada al problema de mostrar correctamente al gráfico anterior quedaría como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f[x_]:=1/(x-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;fp[x_]:=Module[{},&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ret=f[x];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  If[Abs[ret]&gt;30,Indeterminate,ret]];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Off[Plot::plnr];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Plot[fp[x],{x,-3,3}];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;On[Plot::plnr];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/__CoX8jXfETc/R93UYNlBS9I/AAAAAAAAAAU/lFCRe89qg4k/s1600-h/plot_without_problem.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/__CoX8jXfETc/R93UYNlBS9I/AAAAAAAAAAU/lFCRe89qg4k/s320/plot_without_problem.PNG" alt="" id="BLOGGER_PHOTO_ID_5178528658972822482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Los comandos &lt;a href="http://reference.wolfram.com/mathematica/ref/Off.html"&gt;&lt;span style="font-family:courier new;"&gt;Off[]&lt;/span&gt;&lt;/a&gt; y &lt;a href="http://reference.wolfram.com/mathematica/ref/On.html"&gt;&lt;span style="font-family:courier new;"&gt;On[]&lt;/span&gt;&lt;/a&gt; desactivan y activan respectivamente la emisión del error &lt;span style="font-family:courier new;"&gt;Plot::plnr&lt;/span&gt;, producido por la función &lt;span style="font-family:courier new;"&gt;Plot[]&lt;/span&gt; al encontrarse con valores no numéricos.&lt;br /&gt;&lt;br /&gt;En otros temas, más allá de las funciones elípticas, dos interesantes fotos de objetos de oro sólido (particularmente apropiados con el oro a más de $100000 el kg :-)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/4/46/Stringer156_nugget.jpg"&gt;Una pepita de oro&lt;/a&gt; de más de 4 kg.&lt;/li&gt;&lt;li&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/en/f/fd/DSC00710.JPG"&gt;Un ladrillo&lt;/a&gt; de 220 kg de oro (más de $22000000 en la actualidad).&lt;/li&gt;&lt;/ol&gt;Una cosa a destacar es que 220 kg de oro solo tienen un volumen de 11.4 litros, ya que el oro es &lt;a href="http://en.wikipedia.org/wiki/List_of_elements_by_density"&gt;uno de los elementos más densos&lt;/a&gt; (si, más que el plomo). O sea que podríamos meter $22000000 en un cubo de 23 cm de arista... aunque sería algo difícil de levantar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-6950519362597293519?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/6950519362597293519/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=6950519362597293519' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6950519362597293519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/6950519362597293519'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2008/03/graficando-funciones-discontinuas-con.html' title='Graficando funciones discontinuas con Mathematica'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/__CoX8jXfETc/R93QltlBS8I/AAAAAAAAAAM/ad6STD1je0Y/s72-c/plot_with_problem.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-4260997479145154971</id><published>2007-11-14T23:48:00.000-03:00</published><updated>2007-11-15T00:02:27.229-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='historia'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>Intel 4004 - 36º aniversario</title><content type='html'>Me acabo de enterar que Intel publicó el &lt;a href="http://download.intel.com/museum/archives/pdf/4004_schematic.pdf"&gt;esquema de circuitos&lt;/a&gt; del &lt;a href="http://en.wikipedia.org/wiki/Intel_4004"&gt;4004&lt;/a&gt;, que fue (más allá de un cierto debate...) el primer microprocesador. Obviamente, con 2300 transistores y 740 kHz de reloj no podía hacer mucho; de hecho consigue hacerme sentir afortunado de estar programando un &lt;a href="http://www.atmel.com/dyn/resources/prod_documents/doc1919.pdf"&gt;clon del 8051&lt;/a&gt; :-) Aunque al menos el 4004 terminaba una instrucción en 8 ciclos...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-4260997479145154971?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/4260997479145154971/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=4260997479145154971' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4260997479145154971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/4260997479145154971'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/11/intel-4004-36-aniversario.html' title='Intel 4004 - 36º aniversario'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-3332374806939015219</id><published>2007-10-11T12:12:00.000-03:00</published><updated>2007-10-11T12:18:01.130-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>Ratas topo!!</title><content type='html'>Es un &lt;a href="http://upload.wikimedia.org/wikipedia/commons/0/02/Nacktmull.jpg"&gt;animal&lt;/a&gt; &lt;a href="http://upload.wikimedia.org/wikipedia/commons/c/cf/Naked_Mole_Rat_Eating.jpg"&gt;muy particular&lt;/a&gt;, que &lt;a href="http://en.wikipedia.org/wiki/Naked_Mole"&gt;habita en Etiopía&lt;/a&gt;, del que no conocía la existencia. Ciertamente tiene un aspecto poco común.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-3332374806939015219?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/3332374806939015219/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=3332374806939015219' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3332374806939015219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3332374806939015219'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/10/ratas-topo.html' title='Ratas topo!!'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-3632952320383183067</id><published>2007-09-18T10:37:00.000-03:00</published><updated>2007-09-18T11:44:45.751-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='energía'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='ww2'/><title type='text'>Subst++</title><content type='html'>Una funcionalidad de Windows (y DOS!) poco conocida es el &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx"&gt;comando&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Subst"&gt;&lt;span style="font-style: italic;"&gt;subst&lt;/span&gt;&lt;/a&gt;, que permite asignarle una letra de unidad a un path. De ese modo, por ejemplo, &lt;span style="font-style: italic;"&gt;subst X: "C:\Documents and Settings\user\Mis Documentos\Visual Studio 2005\Projects\"&lt;/span&gt; permite acceder a lso proyectos de Visual Studio como si estuvieran en el directorio raíz de una unidad con la letra X. Esto &lt;a href="http://www.appinf.com/poco/wiki/tiki-index.php?page=FirstStepsWindows"&gt;lo vi por primera vez&lt;/a&gt; en el &lt;a href="http://www.appinf.com/poco/info/index.html"&gt;sitio de Poco&lt;/a&gt;, un framework de red para C++.&lt;br /&gt;&lt;br /&gt;Hablando ahora de algo completamente diferente,  &lt;a href="http://upload.wikimedia.org/wikipedia/en/8/89/Lowering_the_flag_on_Zuikaku.jpg"&gt;una imagen interesante&lt;/a&gt; de la Segunda Guerra: cuando retiran la bandera del &lt;a href="http://en.wikipedia.org/wiki/Japanese_aircraft_carrier_Zuikaku"&gt;portaaviones japonés Zuikaku&lt;/a&gt; (uno de los que había participado en el &lt;a href="http://en.wikipedia.org/wiki/Attack_on_Pearl_Harbor"&gt;ataque a Pearl Harbor&lt;/a&gt;), antes de que se hunda. Para el momento en que se sacó esa foto, ya era bastante notable la inclinación de la cubierta debido al ingreso de agua (escora para los que conocen terminología náutica :-). Quince minutos después, la mitad de los tripulantes (más de ochocientos) murió cuando, finalmente, el portaaviones se dio vuelta y hundió.&lt;br /&gt;&lt;br /&gt;Siguiendo con temas náuticos, &lt;a href="http://people.bath.ac.uk/ccsshb/12cyl/"&gt;este&lt;/a&gt; el motor diesel más grande del mundo, con 108,920 hp de potencia. Tiene una eficiencia de más del 50% en su régimen óptimo, ampliamente mayor que la eficiencia de los motores de automóvil que &lt;a href="http://courses.washington.edu/me341/oct22v2.htm"&gt;suele estar&lt;/a&gt; alrededor de 20%. Esta diferencia está dada fundamentalmente por la operación en un régimen menos variable, y las menores pérdidas de calor debido a la escala del motor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-3632952320383183067?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/3632952320383183067/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=3632952320383183067' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3632952320383183067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3632952320383183067'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/09/subst.html' title='Subst++'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-7093095210271401645</id><published>2007-09-16T23:13:00.000-03:00</published><updated>2007-09-16T23:15:29.955-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='topología'/><title type='text'>"Dar vuelta" una esfera</title><content type='html'>Acabo de ver un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;video&lt;/span&gt; muy interesante sobre como dar vuelta una esfera, o sea intercambiar su cara interior con la exterior.&lt;br /&gt;&lt;br /&gt;Puede verse en:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=-6626464599825291409"&gt;http://video.google.com/videoplay?docid=-6626464599825291409&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-7093095210271401645?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/7093095210271401645/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=7093095210271401645' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7093095210271401645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7093095210271401645'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/09/dar-vuelta-una-esfera.html' title='&quot;Dar vuelta&quot; una esfera'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-8303930002511036577</id><published>2007-09-09T22:48:00.000-03:00</published><updated>2007-09-09T23:03:57.996-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><title type='text'>Wikipedia en inglés: 2000000 de artículos</title><content type='html'>Hoy la versión en idioma inglés de Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Special:Statistics"&gt;superó los dos millones de artículos&lt;/a&gt;. A pesar de que ciertamente puede discutirse la calidad de algunos de los artículos, el hecho de que una enciclopedia basada en contribuciones de los usuarios funcione tan bien como lo hace es verdaderamente digno de destacarse.&lt;br /&gt;&lt;br /&gt;Me enteré hace unos meses que &lt;a href="https://wikitech.leuksman.com/view/Main_Page"&gt;existe una página&lt;/a&gt; destinada al mantenimiento de la infraestructura técnica de Wikipedia que, como podría suponerse, &lt;a href="https://wikitech.leuksman.com/view/Server_roles"&gt;es bastante grande&lt;/a&gt;. Además es especialmente interesante por la apertura respecto al funcionamiento, que nos permite ver cosas que no podemos conocer respecto a Google, por ejemplo.&lt;br /&gt;&lt;br /&gt;En curiosidades:  ¿se imaginan &lt;a href="http://en.wikipedia.org/wiki/33_Thomas_Street"&gt;un edificio&lt;/a&gt; &lt;a href="http://upload.wikimedia.org/wikipedia/en/a/a8/33_Thomas_Sidewalk_View.JPG"&gt;sin ventanas&lt;/a&gt;? ¿O qué a principios del siglo XX &lt;a href="http://upload.wikimedia.org/wikipedia/en/f/ff/Bayer_Heroin_bottle.jpg"&gt;Bayer vendía heroína&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Heroin#History"&gt;para  calmar la tos en chicos&lt;/a&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-8303930002511036577?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/8303930002511036577/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=8303930002511036577' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8303930002511036577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/8303930002511036577'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/09/wikipedia-en-ingls-2000000-de-artculos.html' title='Wikipedia en inglés: 2000000 de artículos'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-1301202140947746588</id><published>2007-09-06T08:07:00.000-03:00</published><updated>2007-09-06T08:30:33.553-03:00</updated><title type='text'>Comentarios sobre una noticia</title><content type='html'>Estaba viendo &lt;a href="http://ar.news.yahoo.com/s/26072007/43/n-world-diez-misterios-ciencia-todav-xed-pudo-develar.html"&gt;esta noticia de Yahoo&lt;/a&gt;, proveniente de Infobae que supuestamente hablaba sobre "Diez misterios que la ciencia todavía no pudo develar". Debo admitir que, si bien no esperaba ver algo así como &lt;a href="http://math.ucr.edu/home/baez/open.questions.html"&gt;las de John Baez&lt;/a&gt;, no estaba preparado para ver la lista de estupideces que aparecían... O sea, ¿hay gente que cree en "Pie Grande" y en los fantasmas?&lt;br /&gt;&lt;br /&gt;En fin, supongo que viendo &lt;a href="http://www.newscientist.com/data/images/ns/av/shawyertheory.pdf"&gt;la clase de cosas&lt;/a&gt; que se publican incluso en revistas de divulgación científica no debería extrañarme mucho. O sea, si los editores de una revista dedicada a divulgar el conocimiento científico &lt;a href="http://gregegan.customer.netspace.net.au/SCIENCE/Cavity/Cavity.html"&gt;no conocen la conservación de la cantidad de movimiento&lt;/a&gt;, que se puede esperar...&lt;br /&gt;&lt;br /&gt;Es deprimente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-1301202140947746588?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/1301202140947746588/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=1301202140947746588' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/1301202140947746588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/1301202140947746588'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/09/comentarios-sobre-una-noticia.html' title='Comentarios sobre una noticia'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-5944915082367422454</id><published>2007-09-04T07:13:00.000-03:00</published><updated>2007-09-18T11:45:36.492-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='energía'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='CO2'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Promoción de enteros en C++</title><content type='html'>Un problema particularmente molesto me ocurrió ayer mientras programaba el sistema de evaluación de individuos de la tesis. Había escrito el siguiente fragmento de código:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for (int i = 0; i &lt; reqs.size() - 1; i++)&lt;br /&gt; std::cout &lt;&lt; reqs[i].first.toString() &lt;&lt; " - ";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;cuya idea es, básicamente, imprimir todos los elementos de&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;reqs&lt;/span&gt; a excepción del último, para que no quede un guión colgando al final.&lt;br /&gt;&lt;br /&gt;Al ejecutar el código, funcionaba bien en general; pero al probarlo con un vector vacío, fallaba con un error indicando acceso a una posición inexistente. Después de un tiempo de meditación (excesivamente largo!), pude darme cuenta de lo que originaba el problema. &lt;span style="font-family:courier new;"&gt;reqs.size()&lt;/span&gt; devuelve un tamaño del tipo &lt;span style="font-family:courier new;"&gt;size_t&lt;/span&gt;, que por lo general es un &lt;span style="font-family:courier new;"&gt;typedef&lt;/span&gt; de &lt;span style="font-family:courier new;"&gt;unsigned int&lt;/span&gt;. Al restarle uno, de acuerdo a las reglas de promoción, se le resta como si fuera una resta de &lt;span style="font-family:courier new;"&gt;unsigned int&lt;/span&gt;s, por lo que la resta actuaba en forma modular y terminaba tratando de acceder a la posición 2&lt;sup&gt;32&lt;/sup&gt; - 1 (la que obviamente no existía en el vector).&lt;br /&gt;&lt;br /&gt;En otro contexto completamente diferente, &lt;a href="http://wpweb2.tepper.cmu.edu/ceic/theses/Joshuah_Stolaroff_PhD_Thesis_2006.pdf"&gt;una tesis interesante&lt;/a&gt; de un graduado de la CMU en la que calcula, en base a un diseño concreto, el costo que tomaría absorber el dióxido de carbono de la atmósfera. Yo consideraba que era algo que debía ser completamente infactible, pero parece ser que podría hacerse por un costo de U$S 200 por tonelada de CO&lt;sub&gt;2&lt;/sub&gt;. Obviamente es más costoso que secuestrarlo en una central térmica, pero podría ser una solución para la captura de fuentes distribuidas, como es el caso del transporte automotor en general.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-5944915082367422454?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/5944915082367422454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=5944915082367422454' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5944915082367422454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5944915082367422454'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/09/promocin-de-enteros-en-c.html' title='Promoción de enteros en C++'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-1402324446034999755</id><published>2007-08-21T21:28:00.001-03:00</published><updated>2008-03-17T08:52:47.051-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fiuba'/><title type='text'>Post de retorno: desarrollo de circuitos</title><content type='html'>Bueno, pasó bastante tiempo desde la última actualización y no quería llegar a un mes sin posts... Estas últimas semanas estuve ocupado terminando trabajos prácticos finales para varias materias, pero esta pude empezar nuevamente con el trabajo de la tesis. Más específicamente, comenzando a programar el módulo de evaluación.&lt;br /&gt;&lt;br /&gt;Este módulo es central para el sistema, ya que debe transformar la descripción del individuo en un circuito con objeto de que pueda obtenerse su transferencia con el SPICE y compararla con la deseada. Esta transformación,  que puede &lt;a href="http://www.genetic-programming.com/gpcircuitanimation.gif"&gt;verse animada&lt;/a&gt; en el &lt;a href="http://www.genetic-programming.com/"&gt;sitio de John Koza&lt;/a&gt;, consiste en interpretar el cromosoma como una serie de instrucciones que gobiernan el "crecimiento" de un circuito.&lt;br /&gt;&lt;br /&gt;Como en el sistema que estoy desarrollando un cromosoma es un array de bytes y debo representar con él un árbol, tenía que decidirme por una codificación. Después de pensar varias opciones, elegí utilizar una &lt;a href="http://en.wikipedia.org/wiki/Polish_notation"&gt;codificación prefija&lt;/a&gt; por la simplicidad de su &lt;a href="http://en.wikipedia.org/wiki/Side_effect_%28computer_science%29"&gt;"evaluación"&lt;/a&gt; recursiva. También evalué la posibilidad de no efectuar la recursión y reemplazarla por iteración, pero decidí seguir el &lt;a href="http://en.wikiquote.org/wiki/Donald_Knuth"&gt;precepto de Knuth&lt;/a&gt; respecto a la optimización prematura.&lt;br /&gt;&lt;br /&gt;La otra decisión de codificación era respecto al circuito: implementar mi propia representación o utilizar &lt;a href="http://www.boost.org/"&gt;Boost&lt;/a&gt;. En base a mis &lt;a href="http://www.fi.uba.ar/materias/7529/"&gt;experiencias&lt;/a&gt; &lt;a href="http://www.fi.uba.ar/materias/7570/"&gt;previas&lt;/a&gt; con grafos, elegí utilizar &lt;a href="http://www.boost.org/libs/graph/doc/adjacency_list.html"&gt;boost::adjacency_list&lt;/a&gt;; no por razones de performance, sino para evitar los posibles bugs y tiempo desperdiciado.&lt;br /&gt;&lt;br /&gt;Para terminar, &lt;a href="http://blog.wolfram.com/2007/08/the_space_of_all_possible_bridge.html"&gt;un interesante post&lt;/a&gt; de &lt;a href="http://www.stephenwolfram.com/"&gt;Stephen Wolfram&lt;/a&gt; (el creador del &lt;a href="http://www.wolfram.com/products/mathematica/index.html"&gt;Mathematica&lt;/a&gt;) sobre los diseños de puentes, a la luz de la &lt;a href="http://en.wikipedia.org/wiki/I-35W_Mississippi_River_bridge"&gt;famosa caída de uno&lt;/a&gt; en Estados Unidos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-1402324446034999755?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/1402324446034999755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=1402324446034999755' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/1402324446034999755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/1402324446034999755'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/08/post-de-retorno-desarrollo-de-circuitos.html' title='Post de retorno: desarrollo de circuitos'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-7498318715281056471</id><published>2007-07-25T07:54:00.000-03:00</published><updated>2007-07-25T08:58:32.260-03:00</updated><title type='text'>GLUT y su eventual sustitución</title><content type='html'>Estas últimas semanas estaba tratando de recordar un poco como usar &lt;a href="http://www.opengl.org/documentation/red_book/"&gt;OpenGL&lt;/a&gt; y, a diferencia de lo que había hecho en ocasiones anteriores, probé utilizar algunas bibliotecas para facilitar el trabajo (algo se aprende al pasar los años :-)&lt;br /&gt;&lt;br /&gt;Empecé utilizando &lt;a href="http://www.opengl.org/resources/libraries/glut/"&gt;GLUT&lt;/a&gt;, ya que tiene una enorme  base de ejemplos desde los que partir. Pronto me encontré con un inconveniente: yo programo normalmente esta clase de aplicaciones en C++, pero GLUT fue diseñada para utilizarse con C y, por desgracia, &lt;a href="http://www.opengl.org/resources/libraries/glut/spec3/node46.html#SECTION00081000000000000000"&gt;algunas&lt;/a&gt; de sus callbacks tienen el prototipo &lt;span style="font-family:courier new;"&gt;void callBack(void)&lt;/span&gt;. Esto me hacía imposible esconder a &lt;span style="font-family:courier new;"&gt;this&lt;/span&gt; y me obligaba a utilizar un punto de acceso central, probablemente un &lt;a href="http://en.wikipedia.org/wiki/Singleton_pattern"&gt;singleton&lt;/a&gt; (ahora que lo pienso mejor, podría haber implementado alguna clase de dispatcher pero, como verán, no era realmente necesario).&lt;br /&gt;&lt;br /&gt;Al no encontrar dicha "solución" muy satisfactoria (años de &lt;a href="http://blogs.msdn.com/scottdensmore/archive/2004/05/25/140827.aspx"&gt;propaganda&lt;/a&gt; anti-singleton rindiendo frutos), probé con varias adaptaciones o extensiones de GLUT para C++, siendo &lt;a href="http://www.nigels.com/glt/"&gt;GLT&lt;/a&gt; la que atrajo más mi atención. Sin embargo, carecía notablemente de documentación e involucraba múltiples DLLs.&lt;br /&gt;&lt;br /&gt;Me disponía a seguir probando con GLUT pero, al consultar algunos ejemplos de "procedural textures" de Sean O'Neil (lamentablemente &lt;a href="http://www.sponeil.org/"&gt;su sitio ya no funciona&lt;/a&gt;, pero pude encontrar sus ejemplos en &lt;a href="http://www.archive.org/web/web.php"&gt;The Wayback Machine&lt;/a&gt;), me encontré con &lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt;. Ya había escuchado mencionarla, pero nunca pensé que fuera tan simple de utilizar; en unos minutos tenía corriendo mi primer ejemplo y, a partir de entonces, me convertí totalmente a SDL :-)&lt;br /&gt;&lt;br /&gt;Sigue siendo C, pero su sistema de manejo de eventos, paradójicamente basado en un loop explícito al estilo Windows, es fácil de integrar con C++. Además gana en todas las otras áreas, ya que incorpora un control más directo de la resolución de la pantalla y la documentación, si bien breve, es la necesaria para empezar a utilizarla rápidamente.&lt;br /&gt;&lt;br /&gt;Cuando siga con mi ejemplo de OpenGL, veré que tan satisfactoria resulta en general...&lt;br /&gt;&lt;br /&gt;En otras áreas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Tres blogs interesantes:&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt; el de &lt;a href="http://herbsutter.spaces.live.com/"&gt;Herb Sutter&lt;/a&gt;, miembro del comité de C++;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; el de &lt;a href="http://www.ddj.com/blog/cppblog/archives/freelancer_blog/index.html"&gt;Andrew Koenig&lt;/a&gt;, otro miembro de dicho comité&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;y el de &lt;a href="http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263350&amp;amp;reply_id=3014430"&gt;Ysaneya&lt;/a&gt; (Flavien Brebion), que está trabajando en un &lt;a href="http://www.fl-tw.com/Infinity/"&gt;juego&lt;/a&gt; con &lt;a href="http://www.gamemusketeers.com/images/stories/infinity/gdnet_0.jpg"&gt;gráficos&lt;/a&gt; &lt;a href="http://www.gamemusketeers.com/images/stories/infinity/gdnet_3.jpg"&gt;muy&lt;/a&gt; &lt;a href="http://www.gamemusketeers.com/images/stories/infinity/planet_tex_new_62.jpg"&gt;impresionantes&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Una &lt;a href="http://antwrp.gsfc.nasa.gov/apod/ap070717.html"&gt;ilusión óptica&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Una &lt;a href="http://www.archive.org/iathreads/uploaded-files/tracey_pooh-petabox.jpg"&gt;imagen&lt;/a&gt; del datacenter de Internet Archive.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-7498318715281056471?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/7498318715281056471/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=7498318715281056471' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7498318715281056471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/7498318715281056471'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/07/glut-y-su-eventual-sustitucin.html' title='GLUT y su eventual sustitución'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-5901710392355737955</id><published>2007-07-20T22:12:00.000-03:00</published><updated>2007-07-20T22:30:18.485-03:00</updated><title type='text'>Dia del Amigo y otras cosas</title><content type='html'>Breves comentarios:&lt;br /&gt;&lt;br /&gt;Al ser hoy el Día del Amigo y, &lt;a href="http://en.wikipedia.org/wiki/Friend%27s_Day"&gt;por lo tanto&lt;/a&gt;, aniversario de la llegada de la misión &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Apollo&lt;/span&gt; 11 a la Luna, estaba mirando el artículo de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Wikipedia&lt;/span&gt; sobre el tema, seguro de que no podía decir nada que no conociera, ya que había &lt;a href="http://www.klabs.org/history/ech/memos_misc/"&gt;leído&lt;/a&gt; &lt;a href="http://www.hq.nasa.gov/alsj/a11/a11.html"&gt;bastante&lt;/a&gt; &lt;a href="http://history.nasa.gov/ap15fj/"&gt;sobre&lt;/a&gt; &lt;a href="http://www.apollosaturn.com/asnr/tablecon1.htm"&gt;el&lt;/a&gt; &lt;a href="http://www.apollosaturn.com/Lmnr/contents.htm"&gt;tema&lt;/a&gt;, me encontré con &lt;a href="http://www.aiaa-houston.org/horizons/jun99/#story"&gt;esto&lt;/a&gt;. Ciertamente tomaban en cuenta todas las posibilidades con antelación :-I&lt;br /&gt;&lt;br /&gt;Otro tema que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;vi&lt;/span&gt; es la interesante máquina que juega al &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Ta&lt;/span&gt;-Te-Ti hecha con "&lt;a href="http://www.hasbro.com/playskool/tinkertoy/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Tinkertoys&lt;/span&gt;&lt;/a&gt;" (con pequeñas excepciones). Puede verse en forma libre un &lt;a href="http://www.rci.rutgers.edu/%7Ecfs/472_html/Intro/TinkertoyComputer/TinkerToy.html"&gt;excelente y muy detallado artículo&lt;/a&gt; sobre ella.&lt;br /&gt;&lt;br /&gt;Para despedirme, la &lt;a href="http://www.youtube.com/watch?v=WKIVB7jHNd8"&gt;épica pelea en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Hockey&lt;/span&gt;&lt;/a&gt; entre canadienses y soviéticos (año 1987) en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;YouTube&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-5901710392355737955?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/5901710392355737955/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=5901710392355737955' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5901710392355737955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5901710392355737955'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/07/dia-del-amigo-y-otras-cosas.html' title='Dia del Amigo y otras cosas'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-3658171919324273747</id><published>2007-07-20T08:12:00.000-03:00</published><updated>2007-07-20T15:13:27.298-03:00</updated><title type='text'>Juego de las damas resuelto!</title><content type='html'>El juego de las &lt;a href="http://en.wikipedia.org/wiki/Checkers"&gt;damas&lt;/a&gt; fue &lt;a href="http://www.cs.ualberta.ca/%7Echinook/news/"&gt;resuelto&lt;/a&gt;! (Como era de esperar el resultado del juego perfecto es empate.)&lt;br /&gt;&lt;br /&gt;Es un resultado interesante porque es, por lejos, el juego más complejo que ha sido resuelto completamente. Aparentemente al ajedrez le queda &lt;a href="http://en.wikipedia.org/wiki/Computer_chess#Solving_chess"&gt;bastante tiempo&lt;/a&gt; todavía, aunque la teoría de los finales de ajedrez ha sido modificada en formas importantes por las &lt;a href="http://en.wikipedia.org/wiki/Endgame_tablebase"&gt;búsquedas exhaustivas&lt;/a&gt; realizadas por &lt;a href="http://en.wikipedia.org/wiki/Ken_Thompson"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Ken&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Thompson&lt;/span&gt;&lt;/a&gt; (el mismo del &lt;a href="http://www.bell-labs.com/history/unix/"&gt;Unix&lt;/a&gt;!), que indicaron, por ejemplo que ciertos finales de rey, dama y peón contra rey y dama (denominados &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;KQPKQ&lt;/span&gt;) requerían más de 50 movidas  para el mate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-3658171919324273747?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/3658171919324273747/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=3658171919324273747' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3658171919324273747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/3658171919324273747'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/07/juego-de-las-damas-resuelto.html' title='Juego de las damas resuelto!'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-5538319625799505154</id><published>2007-07-19T23:19:00.001-03:00</published><updated>2008-03-17T08:53:42.777-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fiuba'/><title type='text'>Descripción del tema de la tesis y otras cosas</title><content type='html'>Bueno, antes de seguir con los temas del día, voy a hablar un poco de cual es el tema de mi tesis. El tema es la "Utilización de estrategias de selección de población para el diseño de filtro analógicos pasivos utilizando programación genética", pero ¿qué significa?&lt;br /&gt;&lt;br /&gt;Bueno empecemos con la programación genética (mucha más información sobre el tema, como siempre, puede encontrarse en &lt;a href="http://en.wikipedia.org/wiki/Genetic_programming"&gt;Wikipedia&lt;/a&gt; o en &lt;a href="http://www.google.com.ar/search?q=genetic+programming"&gt;Google&lt;/a&gt;). La programación genética es una técnica para resolver problemas de optimización que se basa en realizar una "evolución artificial" de una población de programas, con el objeto de seleccionar al que dé la solución más conveniente al problema planteado. Se diferencia de los &lt;a href="http://en.wikipedia.org/wiki/Genetic_algorithm"&gt;algoritmos genéticos&lt;/a&gt; en que el genoma no se interpreta en forma estática, sino que se ejecuta con una &lt;a href="http://en.wikipedia.org/wiki/Virtual_machine"&gt;máquina virtual&lt;/a&gt; (limitada, lógicamente, no es ni &lt;a href="https://openjdk.dev.java.net/source/browse/openjdk/trunk/www/"&gt;HotSpot&lt;/a&gt; ni &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcommonlanguageruntimeoverview.asp"&gt;CLR&lt;/a&gt;! :-)  Voy a hablar más de este tema (uno de los más importantes en un sistema de programación genética) posteriormente, cuando esté implementando la mencionada VM.&lt;br /&gt;&lt;br /&gt;Los filtros analógicos pasivos son circuitos electrónicos cuyo objetivo, tal cual lo indica el nombre, es "filtrar" una señal, eliminando ciertos componentes de la misma. Se denominan &lt;a href="http://en.wikipedia.org/wiki/Analog_%28signal%29"&gt;analógicos&lt;/a&gt; porque operan con una representación continua de la señal; esto los diferencia de los &lt;a href="http://en.wikipedia.org/wiki/Digital_filter"&gt;filtros digitales&lt;/a&gt; que lo hacen con una representación en tiempo discreto. Finalmente son &lt;a href="http://en.wikipedia.org/wiki/Passive_filter#Passive_filter"&gt;pasivos&lt;/a&gt; porque solo utilizan tres clases de componentes: resistores, capacitores e inductores, ninguno de los cuales "entrega energía" a la señal (la definición estricta de pasividad &lt;a href="http://en.wikipedia.org/wiki/Passive_component"&gt;es algo compleja&lt;/a&gt;). A pesar de que no figura en el nombre, estos filtros son &lt;a href="http://en.wikipedia.org/wiki/Linear_filter"&gt;lineales&lt;/a&gt;, lo que implica que la respuesta a la suma de dos señales es al suma de las respuestas que daría a cada señal por separado.&lt;br /&gt;&lt;br /&gt;El realizar todas esas generaciones de evolución con poblaciones que pueden llegar a tamaños considerables es computacionalmente costoso. Si bien hoy día es en general ventajoso intercambiar tiempo del programador por tiempo de máquina, como lo muestra la gran popularidad de lenguajes tales como &lt;a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29"&gt;Python&lt;/a&gt;, una tarea &lt;a href="http://en.wikipedia.org/wiki/Computer_Go"&gt;suficientemente&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Ackermann_function"&gt;compleja&lt;/a&gt; puede vencer incluso al &lt;a href="http://en.wikipedia.org/wiki/Moore%27s_law"&gt;crecimiento exponencial&lt;/a&gt; del poder de cálculo. Por ello es importante tener métodos relativamente sofisticados para elegir a los circuitos de la población con mejores perspectivas de acercarnos a la solución. Más adelante hablaré sobre al naturaleza de estas estrategias.&lt;br /&gt;&lt;br /&gt;Bueno ahora a los links del día:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=314874"&gt;Brian Beckman: The Physics in Games - Real-Time Simulation Explained&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://research.microsoft.com/IVM/PhotoTours/?0sr=a"&gt;Photo Tourism: Exploring Photo Collections in 3D&lt;/a&gt; (funciona con Firefox)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;En el próximo post:&lt;/span&gt; GLUT - arcaica o práctica :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-5538319625799505154?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/5538319625799505154/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=5538319625799505154' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5538319625799505154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/5538319625799505154'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/07/descripcin-del-tema-de-la-tesis-y-otras.html' title='Descripción del tema de la tesis y otras cosas'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8141706631978818970.post-645222025616197878</id><published>2007-07-18T18:35:00.000-03:00</published><updated>2007-07-19T08:13:00.157-03:00</updated><title type='text'>Post inaugural</title><content type='html'>En este blog pienso desarrollar ideas relacionadas con el tema de mi tesis, de forma de obtener realimentación al respecto. También, lógicamente, tendrán su lugar las ideas no directamente relacionadas con la tesis.&lt;br /&gt;&lt;br /&gt;Espero que no se convierta en un "sumidero de tiempo" :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8141706631978818970-645222025616197878?l=spin-foam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spin-foam.blogspot.com/feeds/645222025616197878/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8141706631978818970&amp;postID=645222025616197878' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/645222025616197878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8141706631978818970/posts/default/645222025616197878'/><link rel='alternate' type='text/html' href='http://spin-foam.blogspot.com/2007/07/post-inaugural.html' title='Post inaugural'/><author><name>Mariano M. Chouza</name><uri>http://www.blogger.com/profile/09941320226644229083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
