Las píldoras contaminadas

Hola amigos,


Os propongo un jueguecito lógico [:)]


Tenemos cuatro botes de píldoras. Cada uno de los botes tiene un cierto peso, y un cierto número de píldoras (el mismo número en todos los botes).


Todas las píldoras pesan lo mismo (digamos “p” miligramos), excepto las píldoras de uno de los botes, que están contaminadas y pesan “p+1” cada una de ellas.


                                            


Disponemos de una báscula de laboratorio. ¿Cómo podríamos averiguar cuál de los botes es el que contiene las píldoras en mal estado? ¿Cuál sería el mínimo número de pesadas y el procedimiento a seguir para averiguarlo?


Asumimos que:



– No se puede distinguir a simple vista una píldora en buen estado de una contaminada.


– No podemos comernos las píldoras (no queremos arriesgar nuestra valiosa vida)


– Podemos abrir los botes y coger una o varias píldoras.


 


¿Cuál sería la solución óptima para nuestro problema? [:)]


Espero vuestras respuestas

Respuesta al reto de "Programancia 101"

Hola amig@s,


El lunes montado en un avión rumbo a París para hacer una entrevista de MS Internship me fijé en los botones que en cada asiento tenemos para encender una bombillita o llamar a la azafata y me acordé del reto que nos propuso Ricardo en su blog… Como no tenía nada mejor que hacer ahí arriba me dediqué a resolverlo. [:)]


 La verdad, después de mucho reflexionarlo, es que el problema no necesita ningún cálculo de tipo complejo (o eso creo).


La cosa se trata de saber qué numeros menores o iguales que el 64 tienen un número impar de divisores. Dichas bombillas son las que permanecerán encendidas al final, ya que si partimos de que están apagadas, realizaremos un número impar de pulsaciones, con lo que acabarán encendidas.


Cuales son dichos números? Bien, si nos fijamos, los divisores de un número siempre se asocian por parejas.


Por ejemplo, el 28 tiene como divisores:


28×1


14×2


7×4


De modo que tiene un número par de divisores.


Qué números son aquellos que tienen un número impar de divisores? Los CUADRADOS PERFECTOS. Es decir, los números cuya raíz cuadrada es entera (siendo dicha raíz el divisor en cuestión).


Por ejemplo, el 36:


36×1  (2 pulsaciones)


18×2  (2 pulsaciones)


12×3  (2 pulsaciones)


9×4    (2 pulsaciones)


6×6    (1 pulsación)


Para el 36, pulsaremos 9 veces el interruptor en total. Por tanto, permanecerá encendida al final.


Resumiendo, sin necesidad de cálculos de ningún tipo (salvo un cálculo de raíces cuadradas, o en su caso, un bucle que calcule los cuadrados perfectos menores o iguales q 64… es decir, 8 productos, 8 if’s y poco más) tendremos resuelto el problema.


Bombillas encendidas: 1, 4, 9, 16, 25, 36, 49 y 64.


Un saludo!!

Design patterns aplicados a la industria de los videojuegos

Buenas,


Aprovechando que soy un friki asqueroso estoy desarrollando un videojuego medianamente ambicioso con XNA, voy a contaros a grandes rasgos las principales características de la fase de diseño del mismo, así como explicaros brevemente con qué tipo de patrones nos podemos encontrar a la hora de realizar el diseño de un videojuego.


De todos es sabido que los patrones de diseño (de ahora en adelante PD) nos permiten resolver problemas concretos en el diseño software sin necesidad de reinventar la rueda. Un videojuego, grosso modo, no es más que un software con una determinada estructura que lo convierte en “algo” diferente de programas de otro tipo, aunque tampoco difiere mucho.


No obstante, los objetivos que perseguimos mediante el uso de PD en nuestros diseños también son deseables en un videojuego (diseños más flexibles, elegantes y reutilizables).


Básicamente, podemos dividir los PD en tres grandes tipos:



a) Estructurales


b) Creacionales


c) De comportamiento


Ahora que ya os he soltado el sermón he hecho una introducción al tema, podemos comenzar a identificar PD clásicos en nuestro juego:



a) Singleton:



1) Intención: Restringir una clase a una sola instancia


2) Problema: Proporcionar un lugar donde varios clientes puedan comunicarse y queramos controlar el número de instancias.


3) Ejemplos en nuestro videojuego: La clase principal de nuestro juego, la clase multimedia…


b) Composite:



1) Intención: Construir objetos complejos a partir de otros más simples y similares entre sí.


2) Problema: Necesitamos guardar figuras (círculos, cuadrados…) y agruparlas


3) Ejemplos en nuestro videojuego: Nuestra GUI


Los siguientes diagramas explican más o menos lo que intento deciros aquí…




c) State:



1) Intención: Deseamos obtener información sobre el estado del juego


2) Problema: ¿Cómo guardamos dicha información?


Pues utilizaremos algo tal que así…




d) Strategy:



1) Intención: Definir una “familia” de algoritmos y hacerlos intercambiables.


2) Problema: Queremos que un personaje del juego tenga una IA diferente, según el estado del juego…


Podemos representarlo de la siguiente forma:




e) Façade:



1) Intención: Proporcionar una interfaz unificada a un conjunto de interfaces en un sistema.


2) Problema: Queremos interactuar con nuestro motor gráfico…


Marchando el diagrama…



Por el momento, esos son los PD que he identificado en mi diseño del videojuego.


Por cierto, el videojuego en cuestión es “El Gañán 5.0”, podéis ver una preview del mismo en este enlace:



http://www.youtube.com/watch.php?v=F9aN1FqVuTc


Un saludo amigos! [:)]

Visita a Domogar 2007

Buenas,


hoy he tenido la oportunidad de acercarme a la Feria de Valencia para visitar la IV edición de Domogar (Feria de la Domótica y el Hogar Digital) en la que unas 50 empresas del sector ofrecen sus productos y servicios de muy diversa índole (sistemas de control, seguridad, teleasistencia, comunicaciones, ocio, ahorro energético….).


De esta visita extraería tres conclusiones:



a) Las azafatas de los stands son divinas (para qué engañarnos)


b) Cada año la asistencia de público “no profesional” es mayor, lo cual es una nota bastante positiva [:)]


c) La nota negativa, desde mi modesto punto de vista, ha sido que tras 3 horitas de recorrerme todos y cada uno de los stands no he visto nada que no hubiera visto antes… En cierto modo, es comprensible ya que se trata de una feria más comercial que innovadora, pero como interesado en el tema me hace temer por un cierto estancamiento del sector en cuanto a nuevas ideas…


Desde aquí, y puesto que me parece que la Domótica no es un tema frecuente en geeks, me gustaría abrir un pequeño espacio de debate sobre qué opináis de este tipo de ferias, de la innovación en temas de Domótica e Inteligencia Ambiental, del derbi de hoy Barça-Madrid… vamos, de lo que buenamente os venga en gana [:D]


Un saludo!

Curso de formación en software Microsoft

Hola,


Como coordinador del club .Net de la Universidad de Alicante y Microsoft Student Partner he organizado un curso para alumnos de la UA y para profesionales en general.


El objetivo del curso es realizar un acercamiento a Windows Vista, dar a conocer las posibilidades que ofrece y la integración de otras herramientas en este SO, partiendo desde cero y explicando todas las funcionalidades y ventajas competitivas que aportan respecto a otras tecnologías existentes.


El curso, en principio, es presencial, pero también podrá ser seguido online mediante el uso de materiales electrónicos, prácticas guiadas…


Por ir concretando, los datos del curso son:


Nombre del curso: MSDN Academic Advisor


Fecha de inicio: Semana del 26 de Marzo de 2007


Duración: 10 sesiones de 2h (20h)


Horario: Se establecen dos turnos


      1.- Martes de 17:30 a 19:30


      2.- Viernes de 17:30 a 19:30


Número de plazas: 30 plazas por turno


Lugar: Escuela Politécnica Superior de la Universidad de Alicante


Ponentes:


      – Daniel Micol Ponce (Microsoft Summer Internship en Redmond en 2006)


      – Miguel Llopis Lledó (Microsoft Student Partner)


Precio:


      1.- Alumnos UA: Gratis


      2.- Resto: 75€


Temario:


      1.- Introducción a MSDN Academic Alliance


      2.- Microsoft Windows Vista:


              a) Instalación guiada


              b) Entorno a nivel de usuario


              c) Herramientas de administrador


              d) Seguridad en Windows Vista


              e) Configuración de servicios


      3.- Introducción a Windows Live:


              a) Creación de Gadgets en Windows Vista


      4.- SQL Server 2005:


              a) Administración


              b) Integration Services


              c) Reporting Services


              d) Business Intelligence Tools


       5.- Visual Studio 2005 Professional:


              a) Configuración básica


              b) Uso de extensiones


              c) Office Tools para Visual Studio 2005


              d) Expression Tools


        6.- Visual Studio 2005 Team System:


              a) Team Suite


              b) Team Foundation Server


              c) Team Test Load Agent


              d) Team Edition


                       1) Data Base Professionals


                       2) Software Architects


                       3) Software Developers


                       4) Software Testers


       7.- Microsoft Project 2007


       8.- Sharepoint 2007


Muchas gracias por vuestra atención. Espero que os animéis.


Un saludo! [:)]