Tag Archives: logic

Excepciones paradójicas

Si hay una excepción para toda regla, entoces también debería haber una excepción para la regla que dice que hay una excepción para toda regla.

«Todo es relativo» se contradice a sí misma, porque si todo es relativo entonces la misma frase es relativa y no todos los casos son relativos; con lo cual se entra en un bucle bastante curioso.

Tags: ,

Torre de Hanoi

El problema de las Torres de Hanoi es curioso porque su solución es muy rápida de calcular, pero el número de pasos para resolverlo crece exponencialmente conforme aumenta el número de discos.


Resolución de la torre de cuatro discos
(imagen tomada de Wikipedia)

Es un problema que se suele plantear a menudo en ámbitos de programación, especialmente para explicar recursividad y el algoritmo para resolverlo es realmente corto:

hanoi(n, Orig, Aux, Dst)
   si (n>0) hacer
   hanoi(n-1, Orig, Dst, Aux)
   escribir(Mover Orig a Dst)
   hanoi(n-1, Aux, Orig, Dst)

A continuación se muestra una implementación Java del algoritmo. El programa se invoca de la siguiente manera:

java Hanoi n

(donde n es el numero de discos)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Hanoi
{
   public static void main(String [] args)
   {
      int numDiscs = Integer.parseInt(args[0]);
      move(numDiscs, "A", "B", "C");
   }

   protected static void move(int n, String orig, String aux, String dest)
   {
      if (n>0)
      {
         move(n-1, orig, dest, aux);
         System.out.println("Mover disco de " + orig + " a " + dest);
         move(n-1, aux, orig, dest);
      }
   }

}

Aquí pueden verse las sucesivas llamadas recursivas a la funciónmove()para el caso de 3 discos:


Read more »

Tags: , , ,

El secretario inteligente

Leo en el blog de Javier Smaldone la siguiente nota:

Aquí va otro problema lógico. Lo encontré hace mucho tiempo en un libro y la solución no estaba en él (yo encontré una, pero no se si será la única).

Una persona debe contratar un secretario y se presentan tres postulantes para el puesto. Reúne a las tres personas y les dice lo siguiente:

Voy a realizar una prueba para ver quién de ustedes es más inteligente. Los sentaré en una mesa redonda, enfrentados y les vendaré los ojos. Luego, a cada uno le haré una marca en la frente que será de color rojo o de color negro.

Cuando yo se los indique, se quitarán la venda y quien vea una marca negra en la frente de alguno de los otros dos, dará un golpe en la mesa. El primero que descubra de qué color es la marca que lleva en su frente, y pueda explicarme cómo lo hizo, obtendrá el puesto.

Acto seguido, procede a vendarles los ojos a los tres y les hace a todos una marca negra en la frente. Al recibir la orden de quitarse las vendas, todos ven al menos una marca negra (de hecho, ven dos) y los tres golpean la mesa.

Al cabo de unos instantes, uno de ellos dice tener una marca negra en la frente, explica por qué se dió cuenta y obtiene el puesto.

La pregunta es: ¿cómo lo hizo?

La respuesta:


Read more »

Tags: