Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tree: 8cc32929a5
Fetching contributors…

Cannot retrieve contributors at this time

352 lines (236 sloc) 33.768 kB
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[El Obelisco]]></title>
<link href="http://obelis.co/atom.xml" rel="self"/>
<link href="http://obelis.co/"/>
<updated>2011-12-31T05:07:27+01:00</updated>
<id>http://obelis.co/</id>
<author>
<name><![CDATA[Alex Unleashed]]></name>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[Ni se te ocurra ser informático]]></title>
<link href="http://obelis.co/blog/2011/12/31/ni-se-te-ocurra-ser-informatico/"/>
<updated>2011-12-31T04:58:00+01:00</updated>
<id>http://obelis.co/blog/2011/12/31/ni-se-te-ocurra-ser-informatico</id>
<content type="html"><![CDATA[<p>Hoy un buen amigo informático ha renunciado a su profesión, aquella a la que ha dedicado gran parte de su vida, por pasión y vocación. <em>&#8220;Dejo esto&#8221;</em>, me dice, <em>&#8220;porque ya vale; voy a estudiar algo, quizás un master en economía. O algo de arquitectura, o derecho, o medicina&#8230;&#8221;</em>. &#8220;O mejor, sé intermediario&#8221;, le respondo yo. <em>&#8220;Mira, cualquier otra cosa, por poco que sea, y aunque no sea bueno y no me resulte interesante, porque con que sea respetado por la gente me ganaré mejor la vida, seré más feliz y se reducirán las frustraciones&#8221;</em>. Continúa: <em>&#8220;A partir de ahora el que me pregunte sobre informática se va a llevar una respuesta muy clara: ve y hazla tú, #censurado#&#8221;</em>.</p>
<p>¿Por qué? Pues porque ser informático no sólo es tener <em>&#8220;una mierda de profesión que obliga a renunciar a una vida social saludable y al tiempo libre&#8221;</em>, sino que además significa realizar un trabajo <em>&#8220;muy sacrificado y extremadamente complejo y complicado, en constante renovación, y completamente minusvalorado y despreciado&#8221;</em>, porque es una profesión sin <em>&#8220;ningún respeto ni dignidad, ni en lo social, ni en lo económico&#8221;</em>.</p>
<!--more-->
<p>Si a eso le añadimos las corruptelas, enchufismos y tejemanejes típicos de países subdesarrollados y tercermundistas como España, la cosa se agrava. <em>&#8220;En España, la profesión no tiene apenas historia, la gente piensa que un informático repara impresoras, y así es como se le valora. Y la política, como siempre, sigue siendo la de que inventen otros&#8221;</em>.</p>
<p>Mi compañero administraba, mantenía y desarrollaba sistemas de correo con varias decenas de miles de usuarios entre otras responsabilidades. Han decidido ponerle a reparar impresoras para que un enchufado sin experiencia alguna tenga plaza fija. <em>&#8220;Si algo falla, le preguntarán al de las impresoras, ¿verdad?&#8221;</em>, le digo yo. No responde su boca, pero su mirada no deja lugar a dudas. &#8220;Y luego le harán jefe&#8221;, pienso para mí. <em>&#8220;Pero esta vez, les diré que vayan y lo hagan ellos&#8221;</em>. Los dos sabemos que eso no ocurrirá.</p>
<p>&#8220;Y vendrá otro como tú, y lo hará, por orgullo, inocentemente, queriendo demostrar sus conocimientos, que vale para eso, ayudando a mantener el status quo de la profesión&#8230;&#8221;, le espeto; y sigo &#8220;&#8230;y cuando se haya quemado y se vaya, el ciclo volverá a empezar&#8221;. Sonríe. <em>&#8220;Nuestro mayor depredador somos nosotros mismos&#8221;</em>. Pone cara seria y dice: <em>&#8220;Si te gusta la informática, resérvatela para tus proyectos personales mientras los informáticos sigamos siendo considerados gente rara sin organizacion ni poder real. Y si no, al menos hazte el favor de irte a un país civilizado&#8221;</em>.</p>
<p>Realiza una pausa de unos segundos y se lamenta, reanudando el tono anterior: <em>&#8220;Yo aprendí tarde, espero que otros no cometan ese error y se rompa la cadena. Al menos ya no lo sufriré yo, hasta aquí hemos llegado&#8221;</em>. Se levanta, mete las manos en los bolsillos, pareciendo buscar algo. Quizás un pañuelo, o quizás simplemente se resigne, no lo sé. &#8220;¿Has despertado?&#8221;, le pregunto. Asiente. Se despide y se va. ¿Quién sabe si a convertirse en uno de esos economistas, o si a ser uno de esos intermediarios que aplican comisiones por el trabajo ajeno?</p>
<p>En cualquier caso, otro sueño roto que quizás sirva a quienes no han hecho más que empezar a soñar o a quienes viven una pesadilla y no pueden salir de ella&#8230; o quizás, esperemos, sirva para ayudar a impulsar el reconocimiento de esta profesión y se mejore la calidad de vida de quienes de una u otra forma hacemos posible que un montón de unos y ceros signifiquen algo para todo el mundo.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[El mapa español del #yoemigro]]></title>
<link href="http://obelis.co/blog/2011/11/21/el-mapa-espanol-del-number-yoemigro/"/>
<updated>2011-11-21T02:35:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/21/el-mapa-espanol-del-number-yoemigro</id>
<content type="html"><![CDATA[<p>Después de los resultados de las elecciones del 20N mucha gente con muy buena formación y mejor juicio está planteándose, más seriamente que nunca aunque no por primera vez, emigrar de ese país que algunos llaman España. En estos momentos el hashtag #yoemigro va camino de ser <em>trending topic</em> en Twitter con motivo de la victoria del PP.</p>
<p>A quienes aún tienen esperanzas de quedarse en España quizás les sea de utilidad para determinar el mejor destino dentro del país el siguiente mapa de la península ibérica teñido de colores según las mayorías por províncias de los diferentes partidos políticos:</p>
<center><sub><sup>(Melilla e Islas Canarias no aparecen, pero son de color azul oscuro)</sup></sub></center>
<p><img class="center" src="http://obelis.co/blog/images/mapa_electoral_20n.png" width="683" height="489" title="&#34;Mapa electoral del 20N&#34;" alt="&#34;Mapa electoral del 20N&#34;"></p>
<!--more-->
<pre><code>* Azul oscuro = PP
* Rojo = PSOE
* Naranja = CiU
* Lila = Amaiur
* Azul claro = PNV/EAJ
</code></pre>
<p>Dada la fragmentación del voto en partidos minoritarios que no han obtenido representación y la forma en que funciona la ley electoral, el vencedor del bipartidismo exacerbado, el PP, ha disfrutado de gran ventaja, y en este caso, de mayoría absoluta en el congreso, <strong>pese a no haberla obtenido en votos, apenas mejorando un 5% el resultado electoral anterior</strong>, en el que perdió.</p>
<p>En cualquier caso, en este mapa se puede observar que el PP ha ganado en todas las provincias salvo las cuatro catalanas, dos vascas y una andaluza.</p>
<p>Si consideraras emigrar a algún lugar donde no hubiera una mayoría del PP, habría que pensar en Barcelona, Lleida, Girona, Tarragona, Guipúzcoa, Vizcaya o Sevilla.</p>
<p>A <strong>Catalunya</strong>, personalmente, yo no iría. Primero, porque es el único lugar donde el PP no ha ganado en ninguna província. Segundo, porque el PP, quien va a mandar los próximos 4 años sin que nadie pueda decir nada, tiene consignas y políticas abiertamente anticatalanas. Mirando a este mapa tiene todo el sentido del mundo. Tercero, porque, realmente, en Catalunya no se vive bien, más bien lo contrario, y el precio de la vida es relativamente caro.</p>
<p><strong>Sevilla</strong> es mejor opción. El problema es que es una isla en un océano, y la presidencia de Andalucía pronto caerá. Aparte de que, aunque hay buena calidad de vida, el hecho de que el PSOE haya obtenido la mayoría no es ningún consuelo ni garantía para quienes tienen memoria, y la economía no está bien.</p>
<p><strong>Guipúzcoa</strong> o <strong>Vizcaya</strong> son mejores opciones: tienen buena calidad de vida y la economía no cae tanto como en España y la protección de los fueros les hace menos vulnerables frente a las políticas fiscales de Madrid, pero por contra el precio de la vida es más alto que en Sevilla y el tiempo es bastante más malo.</p>
<p>Lo cierto es que tras el 20N realmente no hay mucha novedad, ya que ganara quien ganara España iba a estar muy mal, pero esta mayoría absoluta realmente da que pensar&#8230; Lo único recomendable para quien busque oportunidades es <strong>salir del país</strong>. Pronto.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Bájate tus datos de Facebook y borra tu cuenta]]></title>
<link href="http://obelis.co/blog/2011/11/18/bajate-tus-datos-de-facebook-y-borra-tu-cuenta/"/>
<updated>2011-11-18T04:36:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/18/bajate-tus-datos-de-facebook-y-borra-tu-cuenta</id>
<content type="html"><![CDATA[<p><strong>Y hazlo ya</strong>: ve a las opciones de configuración de la cuenta y solicita bajar tus datos. Tardará unas horas. En cuanto te lo notifiquen, bájate los datos a toda prisa. Después, no vuelvas a usar la cuenta, te recomiendo desactivarla o borrarla. ¿Para qué? Para que no lo lamentes. Aquí tienes mi historia, y no es la primera ni la última&#8230;</p>
<p>Tras ser uno de los primeros usuarios de Facebook a este lado del Atlántico allá por el año 2006, y tras crearme una cuenta para mis amistades al año siguiente, a las que fui paulatinamente animando a registrarse, hoy no puedo más que sugerir a todo el mundo que <strong>descargue sus datos</strong> de Facebook y borre su cuenta lo antes posible, porque cuanto más pronto lo haga menos tendrá que lamentar.</p>
<p><span class='pullquote-right' data-pullquote='dado el poder que Facebook ha conseguido reunir, está en condiciones de forzar a sus usuarios a lo que sea '>
La moral de la historia es la siguiente: Facebook se declara en posesión de todos <strong>tus datos</strong> y de cuanto ocurre en su red social, así como de lo que sea que quiera juzgar hacer con sus usuarios y, dado el poder que Facebook ha conseguido reunir, está en condiciones de forzar a sus usuarios a lo que sea con tal de llevar a cabo sus tropelías hacia el derecho a la intimidad, la privacidad, y cuanto sea que hayas puesto de tu vida en ese lugar.
</span></p>
<!--more-->
<p>En mi caso, ha decidido <strong>bloquearme</strong> el acceso a mi cuenta y pone como condición que declare mi nombre verdadero (el cómo ha juzgado que mi nombre no es verdadero es tema para discusión aparte) y que adjunte fotocopia de documento de identidad acreditativo (DNI o similar) para aprobar en una revisión manual el desbloqueo de la cuenta.</p>
<p>Afortunadamente, a principios del mes de octubre decidí usar la nueva opción de bajarme una copia de mis datos en Facebook. Por si acaso pasase alguna cosa. Y poco más de un mes después, ha pasado. Premonitorio, supongo.</p>
<p>Es un &#8220;lo tomas o lo dejas&#8221;. Fijáos en cómo presentan el asunto:</p>
<p><img class="center" src="http://obelis.co/blog/images/facebook_pide_dni.png" width="569" height="566" title="Facebook exige el DNI para desbloquear tu cuenta" alt="Facebook exige el DNI para desbloquear tu cuenta"></p>
<p>Google+ no me parece una alternativa seria, ya que han declarado en alguna ocasión políticas similares y también tienen antecedentes. Ante esto sólamente me queda recomendaros <a href="http://joindiaspora.com">Diaspora*</a>, que aunque no tiene tantas funcionalidades, es un proyecto que apunta alto y tiene ya la funcionalidad suficiente, como la que tenía ese Facebook en el que me registré hace unos años, pero sin todas las lacras que arrastra.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Voxatron, el resurgir de los vóxels]]></title>
<link href="http://obelis.co/blog/2011/11/15/voxatron-el-resurgir-de-los-voxels/"/>
<updated>2011-11-15T17:10:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/15/voxatron-el-resurgir-de-los-voxels</id>
<content type="html"><![CDATA[<p>Desde los tiempos del mítico <a href="http://en.wikipedia.org/wiki/Comanche_series">Comanche: Maximum Overkill</a> a principios de los 90 hasta los de <a href="http://en.wikipedia.org/wiki/Delta_Force_%28video_game%29">Delta Force</a> (ambos de NovaLogic) apenas pasaron unos años en los que pudimos observar la adopción de una técnica de representación gráfica de terrenos, escenarios y objetos en videojuegos basada en el concepto del <a href="http://en.wikipedia.org/wiki/Voxel">vóxel</a>, consistente en representar un píxel en tres dimensiones, pasando de un cuadrado a un cubo (píxel volumétrico).</p>
<p>Esta idea simplificaba los cálculos de escenarios 3D por software, al construir objetos 3D con vóxels de la misma forma que uno construía figuras en 2D con píxels. A finales de los 90 esta tecnología fue rápidamente abandonada en favor de mundos tridimensionales mucho más detallados gracias a las capacidades de cálculo de tarjetas aceleradoras por hardware. Pero el lanzamiento una década después de un juego <em>indie</em> llamado MineCraft haciendo un uso extensivo de la tecnología vóxel parece haber dado alas a los fans de esta tecnología, especialmente por el <em>look</em> que tienen estos videojuegos.</p>
<p>Hoy os traigo un vídeo sobre un nuevo videojuego llamado <a href="http://www.voxatron.com">Voxatron</a>, un más que interesante título en pleno desarrollo que pinta muy bien. Juzgad por vosotros mismos.</p>
<iframe width="420" height="315" src="http://www.youtube.com/embed/EKdRri5jSMs" frameborder="0" allowfullscreen></iframe>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[El desvanecimiento de Troxler]]></title>
<link href="http://obelis.co/blog/2011/11/11/el-desvanecimiento-de-troxler/"/>
<updated>2011-11-11T14:05:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/11/el-desvanecimiento-de-troxler</id>
<content type="html"><![CDATA[<p>Que nuestros ojos a veces nos engañan, literalmente, es algo conocido. Pero cada vez conocemos mejor los mecanismos que producen ciertas falsas percepciones o ilusiones ópticas.</p>
<p>El desvanecimiento de Troxler es una espectacular ilusión óptica muy fácilmente observable. Se guía por el mismo principio de filtrado de estímulos que hace que dejemos de notar algo con el tacto cuando lleva un cierto tiempo sin moverse. En el caso de este efecto, vemos como donde antes veíamos una imagen a color pasamos a verlo todo blanco, por el supuesto efecto de la adaptación de las neuronas de nuestro sistema visual al estímulo (o ausencia del mismo).</p>
<p>Para observarlo, mirad la imagen fija que hay a continuación, enfocando durante unos segundos la cruz negra que hay en el centro. Por arte de magia, los ojos filtrarán el resto de la imagen dejándola en blanco. Incluso se puede parpadear o mover ligeramente la cabeza y mantener el efecto en acción.</p>
<p><img class="center" src="http://obelis.co/blog/images/troxler.jpg" width="500" height="628" title="El efecto Troxler" alt="Ilusión óptica del efecto Troxler"></p>
<!--more-->
<p>En la siguiente imagen podemos apreciar, mediante el mismo procedimiento, el mismo efecto junto con otros dos más:</p>
<p><img class="center" src="http://obelis.co/blog/images/lillac-chaser.gif" width="504" height="504" title="Lillac Chaser" alt="Ilusión óptica Lillac Chaser"></p>
<p>La imagen corresponde a la ilusión visual bautizada como <a href="http://en.wikipedia.org/wiki/Lilac_chaser">Lillac Chaser</a>, donde vemos una serie de círculos lilas que desaparecen, uno de cada vez y por orden, cada cierto tiempo, produciendo un efecto de movimiento de un hueco que se denomina <a href="http://en.wikipedia.org/wiki/Beta_movement">movimiento beta</a>.</p>
<p>Al enfocar durante unos segundos la cruz central, por el efecto del desvanecimiento de Troxler desaparecen los círculos lilas a la vez que, curiosamente, aparecen las trazas de un círculo verde -color complementario al lila- donde antes percibíamos el hueco en movimiento.</p>
<p><a href="http://en.wikipedia.org/wiki/Troxler%27s_fading">El desvanecimiento de Troxler</a> fue descubierto a principios del siglo XIX.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Cuando programar es mejor que trabajar]]></title>
<link href="http://obelis.co/blog/2011/11/08/cuando-programar-es-mejor-que-trabajar/"/>
<updated>2011-11-08T23:57:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/08/cuando-programar-es-mejor-que-trabajar</id>
<content type="html"><![CDATA[<p>Hay veces en las que me sorprendo de lo útil que es saber programar en lenguajes que te permiten hacer un prototipado rápido de una idea. Y sorprender es poco si además se trata de lenguajes generalistas.</p>
<p>Ayer, en mi habitual (por acuciante falta de tiempo) <em>rush</em> para entregar a tiempo los deberes de la <a href="http://www.ai-class.com">#aiclass</a>, me encontré con algunos viejos temas que vi en la universidad. Tenía que hacer unos ejercicios sobre lógica proposicional, y determinar si las proposiciones eran <a href="http://es.wikipedia.org/wiki/Tautolog%C3%ADa">tautologías</a> (siempre ciertas), contradicciones (siempre falsas), o su valor dependía del valor que tomaran sus predicados por separado. Aquí podéis ver la descripción del problema de ayer en particular:</p>
<iframe width="560" height="315" src="http://www.youtube.com/embed/WP_97aspqrc" frameborder="0" allowfullscreen></iframe>
<!--more-->
<p>Una vez se estudian los distintos operadores se pueden construir tablas de verdad para resolver este problema, pero lo cierto es que el papel es demasiado caro como para ir llenándolo de tablas de verdad&#8230; Añadiendo a esto que no recordaba del todo bien el tema y que no me había refrescado la memoria con los vídeos disponibles, se me ocurrió hacer&#8230; bueno, alguna trampa. Sí recordé -tras muchos años de haberla estudiado- una relación básica de lógica proposicional que se me quedó grabada en el cerebro, y que a la postre fue muy útil para resolver los problemas con mi &#8221;<em>sistema</em>&#8221; sin tener que exprimirme mucho la cabeza: si una hipótesis es falsa, se puede extraer cualquier conclusión:</p>
<blockquote><p>p -> q &lt;=> ¬p v q</p></blockquote>
<p>Esta relación indica que tanto <strong>p -> q</strong> como <strong>¬p v q</strong> son equivalentes, comparten la misma <a href="http://es.wikipedia.org/wiki/Tabla_de_verdad">tabla de verdad</a>.</p>
<p>Con esto puedo expresar el operador -> (en el vídeo se usa &#8220;=>&#8221; en lugar de &#8220;->&#8221;, y &#8220;&lt;=>&#8221; en lugar de &#8221;<->&#8221;) en sencillas operaciones <strong>not</strong>, <strong>and</strong> y <strong>or</strong> de cualquier lenguaje de programación, y así escribir fácilmente las proposiciones que necesito comprobar, sin complicarme la vida. Y con un lenguaje de programación potente no tengo que empezar a desarrollar las proposiciones ni llevar los cálculos de una tabla de verdad. En mi caso, como buen rubyist, hago las pruebas en el entorno &#8220;irb&#8221; de Ruby:</p>
<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="k">def</span> <span class="nf">tabla_de_verdad</span><span class="p">(</span><span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>
</span><span class='line'> <span class="o">[</span><span class="kp">true</span><span class="p">,</span> <span class="kp">false</span><span class="o">].</span><span class="n">repeated_permutation</span><span class="p">(</span><span class="n">block</span><span class="o">.</span><span class="n">arity</span><span class="p">)</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<p>La simplicidad y elegancia de esa línea de código se puede admirar cuando se explica que con solamente eso se puede obtener la tabla de verdad para cualquier proposición, independientemente del número de predicados que contenga, de forma sencillísima. Más se sorprende uno si se compara cuánto tiempo y esfuerzo llevaría hacer algo similar en un lenguaje como Java o C++. Especial atención merece el hecho de que este método crea permutaciones con repetición de valores booleanos para el número de variables (predicados) que espera el bloque de código que se le pasa sin que tengamos que preocuparnos de especificar nada. Así nuestra única preocupación será construir la proposición lógica, ya que los diferentes casos de pruebas necesarios para toda la tabla de verdad son generados -y sus resultados recogidos- de forma automática.</p>
<p>Ése es el tipo de características que hacen de este tipo de lenguajes herramientas ideales para estas tareas.</p>
<p>Para poder comprobar las tablas de verdad, recordé que <strong>p <-> q</strong> en realidad requería comprobar la relación <strong>p -> q</strong> y luego la relación en sentido inverso, <strong>q -> p</strong>. Cuando el resultado es una tautología, se suele usar el símbolo &#8220;&lt;=>&#8221; (si, y solo si), y cuando solamente uno de los sentidos es una tautología se suele usar el símbolo &#8220;=>&#8221; (implica).</p>
<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="k">def</span> <span class="nf">si_y_solo_si?</span><span class="p">(</span><span class="nb">p</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
</span><span class='line'> <span class="c1"># p &lt;-&gt; q</span>
</span><span class='line'> <span class="c1"># (p -&gt; q) ^ (q -&gt; p)</span>
</span><span class='line'> <span class="c1"># (¬p v q) ^ (¬q v p)</span>
</span><span class='line'> <span class="p">(</span><span class="o">!</span><span class="nb">p</span> <span class="ow">or</span> <span class="n">q</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span> <span class="ow">or</span> <span class="nb">p</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<p>La expresión <strong>p <-> q</strong> comparte la misma tabla de verdad que <strong>p = q</strong>, y por lo tanto es equivalente (es, de hecho, la igualdad lógica, ya que &#8221;<strong>p</strong> implica <strong>q</strong> y <strong>q</strong> implica <strong>p</strong>&#8221;). No es necesario definir el código anterior si disponemos de un operador de igualdad lógica, como es el caso en Ruby con &#8220;==&#8221;.</p>
<p>De esta forma pude comprobar rápidamente las tablas de verdad del ejercicio y responder sin calcular nada, tan sólo con escribir las proposiciones con sus operadores en Ruby, sustituyendo &#8220;&lt;=>&#8221; por el operador de igualdad y &#8220;->&#8221; por la expresión indicada anteriormente:</p>
<figure class='code'><figcaption><span>(smoke -> fire) <-> (smoke v ¬fire) </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">tabla_de_verdad</span> <span class="k">do</span> <span class="o">|</span><span class="n">smoke</span><span class="p">,</span> <span class="n">fire</span><span class="o">|</span>
</span><span class='line'> <span class="p">(</span><span class="o">!</span><span class="n">smoke</span> <span class="ow">or</span> <span class="n">fire</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="n">smoke</span> <span class="ow">or</span> <span class="o">!</span><span class="n">fire</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<figure class='code'><figcaption><span>(smoke -> fire) <-> (¬smoke -> ¬fire) </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">tabla_de_verdad</span> <span class="k">do</span> <span class="o">|</span><span class="n">smoke</span><span class="p">,</span> <span class="n">fire</span><span class="o">|</span>
</span><span class='line'> <span class="p">(</span><span class="o">!</span><span class="n">smoke</span> <span class="ow">or</span> <span class="n">fire</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="n">smoke</span> <span class="ow">or</span> <span class="o">!</span><span class="n">fire</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<figure class='code'><figcaption><span>(smoke -> fire) <-> (¬fire -> ¬smoke) </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">tabla_de_verdad</span> <span class="k">do</span> <span class="o">|</span><span class="n">smoke</span><span class="p">,</span> <span class="n">fire</span><span class="o">|</span>
</span><span class='line'> <span class="p">(</span><span class="o">!</span><span class="n">smoke</span> <span class="ow">or</span> <span class="n">fire</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="n">fire</span> <span class="ow">or</span> <span class="o">!</span><span class="n">smoke</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<figure class='code'><figcaption><span>big v dumb v (big -> dumb) </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">tabla_de_verdad</span> <span class="k">do</span> <span class="o">|</span><span class="n">big</span><span class="p">,</span> <span class="n">dumb</span><span class="o">|</span>
</span><span class='line'> <span class="n">big</span> <span class="ow">or</span> <span class="n">dumb</span> <span class="ow">or</span> <span class="p">(</span><span class="o">!</span><span class="n">big</span> <span class="ow">or</span> <span class="n">dumb</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<figure class='code'><figcaption><span>big ^ dumb <-> ¬(¬big v ¬dumb) </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">tabla_de_verdad</span> <span class="k">do</span> <span class="o">|</span><span class="n">big</span><span class="p">,</span> <span class="n">dumb</span><span class="o">|</span>
</span><span class='line'> <span class="p">(</span><span class="n">big</span> <span class="ow">and</span> <span class="n">dumb</span><span class="p">)</span> <span class="o">==</span> <span class="o">!</span><span class="p">(</span><span class="o">!</span><span class="n">big</span> <span class="ow">or</span> <span class="o">!</span><span class="n">dumb</span><span class="p">)</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<p>Se puede comprobar que usando el método &#8220;si_y_solo_si?&#8221; se obtienen los mismos resultados.</p>
<p>Lo importante de todo esto no es sólo el hecho de haberme ahorrado tener que andar con tablas de verdad y cálculos booleanos, cuya importancia es relativa, sino que en muy poco tiempo, debido a conocer un lenguaje que es apto para el prototipado rápido, dispongo de la capacidad de evaluar la tabla de verdad de cualquier proposición lógica, por complicada que sea con un número arbitrario de predicados.</p>
<p>Nótese que se podría mejorar fácilmente el código para asociar los valores de las variables a su resultado en la tabla y mostrar valores y resultado, como en las tablas de verdad sobre papel.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Los números del sorteo del 11/11/11]]></title>
<link href="http://obelis.co/blog/2011/11/06/los-numeros-del-sorteo-del-11-slash-11-slash-11/"/>
<updated>2011-11-06T22:55:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/06/los-numeros-del-sorteo-del-11-slash-11-slash-11</id>
<content type="html"><![CDATA[<p>Se acerca la curiosa fecha del día 11 del mes 11 del año 11 después del 2000, y la O.N.C.E. ha aprovechado para organizar un sorteo &#8220;extraordinario&#8221; en el que reparten un (1) premio suculento de 11 millones de euros y 11 premios de un (1) millón de euros cada uno.</p>
<p>Ante la atención que ha atraído este sorteo, por el hecho de que se trata de un reparto de botes acumulados de otros sorteos y, especialmente, por la publicidad que se le ha hecho, me he leído el <a href="http://www.juegosonce.com/wmx/dicadi/pub/comojugar/infoextraordinariojuego.cfm">reglamento del sorteo</a>. Como sabéis, hay algunos sorteos en los cuales, por situaciones extraordinarias, es interesante comprar los boletos.</p>
<p>¿Te compensa jugar a este sorteo?</p>
<!--more-->
<p>Os doy los datos:</p>
<p>Cupones (5 euros cada uno):</p>
<pre><code>- 100.000 números
- 135 series por cada número
</code></pre>
<p>Total: 13.500.000 cupones</p>
<p>Premios al cupón (no son acumulables, premios a cupones no vendidos no se reparten):</p>
<pre><code>- 1 premio de 11.000.000 de euros.
- 11 premios de 1.000.000 de euros.
- 134 premios de 40.000 euros.
- 1474 premios de 3.000 euros.
- 1215 premios de 1.500 euros.
- 12150 premios de 100 euros.
- 121500 premios de 10 euros.
- 1215000 reintegros de 5 euros.
</code></pre>
<p>Probabilidades:</p>
<pre><code>- Perder tu dinero: 9 de cada 10 veces (89.989%)
- Quedarte igual o peor que antes de comprar el cupón: casi todas (98.989%)
- Ganar el súper premio de 11 milloncejos: 1 de 13.500.000 (0.00000007407%)
- Ganar un premio que te haga **MUY** feliz (&gt;= 1M euros): 1 de 1.125.000 (0.0000008889%)
- Ganar un premio que al menos te haga feliz (&gt;= 40k euros): 1 de 92.466 (0.00001081%)
- Ganar al menos un premio pequeño (&gt;= 1500 euros): 1 de 4762 (0.00021%)
- Ganar para al menos irte de mariscada (&gt;= 100 euros): 1 de 901 (0.00111%)
- Ganar para al menos comer de menú barato (&gt;= 10 euros): 1 de 99 (0.01011%)
</code></pre>
<p>Datos de interés:</p>
<pre><code>- Recaudación máxima: 67.500.000 euros
- Máximo de premios repartidos: 42.109.500 euros
- Porcentaje de reparto de premios: 62.384%
- Beneficio medio de la O.N.C.E. por cupón: 1.88 euros
</code></pre>
<p>En resumen, por los datos obtenidos, comprar un cupón <strong>NO</strong> interesa. De hecho, a pesar del bote y de lo &#8220;extraordinario&#8221; del sorteo, el comprar un cupón supone una donación de 1.88 euros a la O.N.C.E., y la participación en un sorteo por valor de 3.12 euros con las probabilidades mencionadas más arriba.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[A new home for my notes]]></title>
<link href="http://obelis.co/blog/2011/11/05/a-new-home-for-my-notes/"/>
<updated>2011-11-05T04:48:00+01:00</updated>
<id>http://obelis.co/blog/2011/11/05/a-new-home-for-my-notes</id>
<content type="html"><![CDATA[<blockquote><p>Everything that has a beginning has an end</p><footer><strong>The Oracle</strong><cite>The Matrix Revolutions</cite></footer></blockquote>
<p>Once again I&#8217;m starting a new blog. This is the beginning. Last one lasted for about eight months with about five of inactivity. I probably have started <em>more</em> blogs than posts in those blogs, so it&#8217;s not that I care that much about my old rants. This time a number of things are different, and I hope those differences will&#8230; well, make a difference in my blogging and push forward in time that unavoidable end.</p>
<p>I hereby want to note that I very much do not care about visits or comments, what I <em>do</em> care about is having some sort of place where I can go to and write as much as I want on any topic. Yeah, I sometimes happen to want to write things down and make them available to others. No, it&#8217;s not really all that often, but <em>having</em> a place does matter, so here it is&#8230;</p>
<p>Welcome to my home!</p>
]]></content>
</entry>
</feed>
Jump to Line
Something went wrong with that request. Please try again.