miércoles, 15 de enero de 2020

Pepe el pastor, una cabra, un lobo, un atillo de hierba, un río y una barca de dos plazas

ENUNCIADO. Un río divide a un prado en dos partes. Pepe —llamémosle p, de manera abreviada— está en una de las dos orillas (pongamos que en la orilla izquierda), junto con un capazo de hierba (h), una cabra (c), y un lobo (l). Para pasar a la otra orilla, Pepe tiene una barca, en la que puede llevar en cada viaje solamente el capazo, o sólo la cabra, o bien solamente al lobo. Pepe quiere cambiar de orilla, cambiando también de orilla a la cabra, al lobo, y al capazo de hierba. Ya se sabe que, si Pepe no los vigila, la cabra puede comerse la hierba del capazo, y el lobo a la cabra. ¿ Cómo diseñarías los viajes necesarios para trasladarlos a todos a la otra orilla ?

SOLUCIÓN. En cada viaje de una orilla a la otra, hay que tener en cuenta que, como Pepe tiene que dejar en la orilla (a la que ha llegado) algunos de los tres mientras vuelve a buscar otro a la orilla de partida, debe cuidar que no se queden la cabra y la hierba juntos, pues la cabra se comería la hierba; y, lo mismo en relación a la cabra y al lobo, pues el lobo se comería a la cabra. Teniendo en cuenta estas cosas, vamos a utilizar una simbología apropiada para ir pensando en la solución:

Primer paso:
    $[p,l,c,h | ]$ Están todos en la orilla izquierda, que es la situación inicial

Segundo paso:
    $[l,h | p,c]$ El lobo y la hierba se quedan en la orilla izquierda, mientras Pepe se lleva a la cabra a la orilla derecha

Tercer paso:
    $[l,h,p | c]$ Pepe vuelve (solo) a la orilla izquierda y deja a la cabra en la orilla derecha

Cuarto paso:
    $[l | c,h,p]$ Pepe se lleva la hierba a la orilla derecha y deja al lobo en la orilla izquierda

Quinto paso:
    $[l,p,c | h]$ Pepe lleva a la cabra de la orilla derecha a la izquierda y deja solamente la hierba en la orilla derecha

Sexto paso:
    $[c | h,l,p]$ Pepe lleva al lobo a la orilla derecha, en la que ya estaba la hierba, y deja a la cabra sola en la orilla izquirda

Séptimo paso:
    $[c,p | h,l]$ Pepe vuelve (solo) a la orilla izquierda a buscar a la cabra, dejando al lobo y la hierba en la orilla derecha

Octavo y último paso:
    $[ | p,c,h,l]$ Pepe lleva al lobo a la orilla derecha, quedando todos en ésta.

$\square$

En un corral hay conejos y gallinas ...

ENUNCIADO. En un corral en el que hay gallinas y conejos se contabilizan $100$ patas y $30$ cabezas. ¿ Cuántas gallinas hay ? ¿ Cuántos conejos ?

SOLUCIÓN. Denotemos por $g$ el número de gallinas. Como cada gallina tiene $2$ patas y $1$ cabeza, y cada conejo tiene $1$ cabeza y $4$ patas, podemos escribir que, según el enunciado, el número de conejos es igual a $$30-g$$ y por lo que se refiere al número de patas en total (las de las gallinas más las de los conjejos) se cumple que $$4\,(30-g)+2\,g=100$$ esto es $$120-4g+2g=100$$ luego $$20=2\,g$$ con lo cual, el número de gallinas es $$g=10\,\text{gallinas}$$ de donde deducimos que hay $30-10=20\,\text{conejos}$
$\square$

jueves, 9 de enero de 2020

Un algoritmo básico para dividir números enteros positivos n div m, donde n>=m

procedimiento dividir(n,m)
{
  c:=0; // inincializa el contador del cociente
  mientras n>=m hacer
    {
      n:=n-m; // actualiza el residuo
      c:=c+1; // actualiza el contador del cociente
    }
  escribir("cociente=",c);
  escribir("resto=",n);
}