jueves, 23 de marzo de 2017

Hoja Cartesius (2) – Variaciones condicionadas


En una entrada anterior comenzamos a usar nuestra herramienta Cartesius. Sería conveniente que la leyeras antes de iniciar el estudio de esta.

http://hojaynumeros.blogspot.com.es/2017/02/productos-cartesianos-condicionados-con.html

Variaciones condicionadas

Una gran utilidad de Cartesius es la posibilidad de añadir condiciones a las propias de un arreglo determinado. En la entrada anterior iniciamos el uso de Cartesius y procedimos a construir variaciones. Ahora las condicionaremos de diversas formas.

Explicamos condiciones nuevas con un ejemplo:

De todas las variaciones sin repetición que podemos formar con los números 1 al 7 tomados de 4 en 4, ¿cuántas presentan una suma de elementos igual a 14? ¿Cuántas de ellas contienen un 1 y un 6?

El principio de la programación es fácil:

XTOTAL=4
XT=1..7
NO REPITE

Obtendremos 840=7*6*5 variaciones. Compruébalo.

Si le añadimos la condición SUMA=14, obtendremos el desarrollo pedido:



(Se admiten mayúsculas y minúsculas y que no influyen los formatos de las  celdas)



Se obtiene un total de 96 resultados. Es interesante que, en lo posible, se justifiquen los resultados que nos ofrece Cartesius. En este caso, había cuatro formas de sumar 14: 1+2+4+7=1+2+5+6=1+3+4+6=2+3+4+5 y si multiplicamos por 24 órdenes distintos que admiten los sumandos, obtenemos 24*4=96.

Así que podemos fijar la suma de nuestros arreglos numéricos. Basta escribir SUMA= y el resultado que nos interese.

En la segunda parte de la propuesta nos preguntábamos en cuántas de esas sumas figurará un 1 y un 6. Esto se consigue con la condición CONTAR. Escribiremos CONTAR(1)=1 y CONTAR(6)=1, para exigir que sólo aparezcan una vez.



Pulsa en el botón Iniciar (o en el de Reiterar de la siguiente hoja) y obtendrás la mitad de resultados, 48. También se puede justificar: si figuran 1+6 y 6+1 en todas las sumas, los otros sumandos han de ser 2+5, 5+2, 3+4 y 4+3. En total, combinando, nos resultan 8 sumas diferentes (teniendo en cuenta el orden porque son variaciones). Cada una de estas sumas admite 6 órdenes (4!/(2!2!), luego, multiplicando, resultarán 48 variaciones.

Otro ejemplo

Disponemos de los números 1 al 5, y deseamos formar con ellos variaciones de cuatro en cuatro sin repetición. Según lo estudiado hasta ahora, vemos que bastarán estas tres condiciones:

XTOTAL=4
XT=1..5
NO REPITE

Escríbelas en Cartesius y comprueba que resultan 5*4*3*2=120 soluciones.



Con los elementos anteriores, deseamos destacar aquellos arreglos en los que aparecen el 3 y el 4, las veces que sean. Comenzamos como en el ejemplo anterior

XTOTAL=4
XT=1..5
NO REPITE

Ahora le añadimos dos condiciones nuevas:

CONTAR(3)>0
CONTAR(4)>0



Significan que al contar el 3 o el 4, el resultado ha de ser distinto de cero, o lo que es igual, que han aparecido. Iniciamos la construcción del producto cartesiano condicionado y obtenemos sólo 72 resultados, porque se han perdido los arreglos que no contenían ni 3 ni 4 simultáneamente, que suman 1*2*3*4+1*2*3*4 = 48. Esto es así porque van de cuatro en cuatro, luego al menos o el 3 o el 4 aparecerán, aunque no simultáneamente. Tenemos entonces 120-48=72.


Otra forma de verlo: Los elementos restantes producen 3*2=6 resultados. Los elementos 3 y 4 producen 2, luego ya tenemos 12 (el producto). Pero entre unos y otros se pueden ordenar, según la conocida fórmula de permutaciones con repetición, de 4!/(2!2!)=6 formas. Multiplicamos y obtenemos 12*6=72.

La función CONTAR tiene más propiedades, que veremos en otro momento. Lo importante es que vas descubriendo la flexibilidad de condiciones que permite Cartesius.

Datos como sucesiones

La condición XT=1..8 nos marca un intervalo del número 1 hasta el 8, pero podemos cambiar el valor de esos datos, 1, 2, … 8… por otros que se calculen a partir de ellos. Esto se puede lograr con la condición SUC seguida de una expresión en N válida y entre paréntesis. Por ejemplo, SUC(N^3) convertiría esos números 1..8 en sus cubos, 1, 8, 27,…512. En teoría admite cualquier expresión válida con números enteros. Si no lo es, se pueden producir errores inesperados, por lo que si se usa con alumnos, se deberá tener mucha paciencia, e iniciar el cálculo si las operaciones fallan.

Proponemos un ejemplo: Descomponer 2017 como suma de cubos de todas las formas posibles, no pudiendo pasar de cuatro cubos (para controlar un poco la explosión de resultados que podrían producir 1^3)

Como no nos indican el número de sumandos, sustituimos la condición XTOTAL=4 por XRANGO=4. La diferencia estriba en que esta última hace recorrer el número de elementos de los arreglos pedidos entre 1 y el total, lo que, aunque tarda más, nos ofrece todas las posibilidades pedidas.

Podía quedar así:

XRANGO=4
XT=1..12 (que es el mayor cubo posible)
XT=SUC(N^3)
SUMA=2017

Aunque no lo haremos, no importa incluir un comentario entre paréntesis si está bien separado de la condición por espacios en blanco.

Lo escribimos en Cartesius:


Nos resultarán 15 posibilidades:



Es buen momento para insistir en que estos cálculos pueden resultar lentos con LibreOffice Calc, por lo que se ha insertado un contador en la celda A1 de la hoja Producto como aviso de que no se ha finalizado el cálculo.

Aquí vemos que no queríamos tantas, por lo que podíamos haber añadido la condición CRECIENTE, para eliminar el orden en el resultado:



Esto nos llevaría a usar combinaciones, y será el tema de la siguiente entrada.

No hay comentarios: