Torneo de Computación y Matemática - Nivel 2

8mo Torneo de Computación y Matemática [Enlace Externo]
Nivel 2 (9no y 10mo año de escolaridad)
Ronda Final

Contenido

1. Pregunta 1

Encontrar todas las soluciones enteras positivas de

x2 + y3 + z4 = 20052005

1.1. Posible Solución

x = RaízCuadrada(20052005 - y3 - z4)

La siguiente función devuelve un valor de x con el cual se cumple la ecuación planteada (aunque este valor puede ser no entero), o en caso de que se pretenda sacar la raíz cuadrada de un número negativo, la función devuelve un valor fraccionario, ya que pensamos descartar todos los valores fraccionarios devueltos por esta función:

para x :y :z [:aux 20052005 - (potencia :y 3) - (potencia :z 4)]
si :aux < 0 [devuelve 0.5]
devuelve raizcuadrada :aux
fin

Encontramos valores máximos de y y z, y los usamos para encontrar las soluciones:

muestra potencia 20052005 1 / 4
66.9174604717074

muestra potencia 20052005 1 / 3
271.676830178348

muestra escoge [esentero aplica "x] multiconj lista serie [1 1 271] serie [1 1 66] 
[[115 41] [115 49] [252 41]]

Los anteriores son los valores de y y z que producen valores de x enteros. Los siguientes son los correspondientes valores de x:

muestra impon [aplica "x] [[115 41] [115 49] [252 41]]
[3963 3573 1106]

Comprobación:

muestra (potencia 3963 2) + (potencia 115 3) + (potencia 41 4)
20052005

muestra (potencia 3573 2) + (potencia 115 3) + (potencia 49 4)
20052005

muestra (potencia 1106 2) + (potencia 252 3) + (potencia 41 4)
20052005

2. Pregunta 2

Algunos números enteros positivos no se pueden escribir como suma de dos cuadrados perfectos (1, 4, 9, 16, 25, 36, etc.). Otros sí. Algunos se pueden escribir de varias formas distintas. Por ejemplo 50 = 1+49 = 25+25 se puede escribir de dos formas distintas. 1+49 es la misma forma que 49+1. Notar que 50 es múltiplo de 5.

  1. ¿Cuántos enteros de 1 a 1000 se pueden escribir de 2 (dos) o más formas distintas como suma de dos cuadrados, pero no son múltiplos de 5?
  2. ¿Cuántos enteros de 1 a 10000 se pueden escribir de 3 (tres) o más formas distintas como suma de dos cuadrados, pero no son múltiplos de 5?
  3. ¿Cuántos enteros de 1 a 100000 se pueden escribir de 4 (cuatro) o más formas distintas como suma de dos cuadrados, pero no son múltiplos de 5?

2.1. Posible Solución

Vemos que sólo debemos tratar con los números hasta n = RaizCuadrada N / 2

muesta rc 1000/2
22.3606797749979

escribemat tabla "adicion duplica impon [multi duplica] serie [1 1 22]
  2   5  10  17  26  37  50  65  82 101 122 145 170 197 226 257 290 325 362 401 442 485
  5   8  13  20  29  40  53  68  85 104 125 148 173 200 229 260 293 328 365 404 445 488
 10  13  18  25  34  45  58  73  90 109 130 153 178 205 234 265 298 333 370 409 450 493
 17  20  25  32  41  52  65  80  97 116 137 160 185 212 241 272 305 340 377 416 457 500
 26  29  34  41  50  61  74  89 106 125 146 169 194 221 250 281 314 349 386 425 466 509
 37  40  45  52  61  72  85 100 117 136 157 180 205 232 261 292 325 360 397 436 477 520
 50  53  58  65  74  85  98 113 130 149 170 193 218 245 274 305 338 373 410 449 490 533
 65  68  73  80  89 100 113 128 145 164 185 208 233 260 289 320 353 388 425 464 505 548
 82  85  90  97 106 117 130 145 162 181 202 225 250 277 306 337 370 405 442 481 522 565
101 104 109 116 125 136 149 164 181 200 221 244 269 296 325 356 389 424 461 500 541 584
122 125 130 137 146 157 170 185 202 221 242 265 290 317 346 377 410 445 482 521 562 605
145 148 153 160 169 180 193 208 225 244 265 288 313 340 369 400 433 468 505 544 585 628
170 173 178 185 194 205 218 233 250 269 290 313 338 365 394 425 458 493 530 569 610 653
197 200 205 212 221 232 245 260 277 296 317 340 365 392 421 452 485 520 557 596 637 680
226 229 234 241 250 261 274 289 306 325 346 369 394 421 450 481 514 549 586 625 666 709
257 260 265 272 281 292 305 320 337 356 377 400 425 452 481 512 545 580 617 656 697 740
290 293 298 305 314 325 338 353 370 389 410 433 458 485 514 545 578 613 650 689 730 773
325 328 333 340 349 360 373 388 405 424 445 468 493 520 549 580 613 648 685 724 765 808
362 365 370 377 386 397 410 425 442 461 482 505 530 557 586 617 650 685 722 761 802 845
401 404 409 416 425 436 449 464 481 500 521 544 569 596 625 656 689 724 761 800 841 884
442 445 450 457 466 477 490 505 522 541 562 585 610 637 666 697 730 765 802 841 882 925
485 488 493 500 509 520 533 548 565 584 605 628 653 680 709 740 773 808 845 884 925 968

Esta es la tabla completa, pero ya que "1+49 es la misma forma que 49+1" entonces debemos tener en cuenta eso y nos interesarán, para la pregunta a, los que tengan 3 repeticiones o más, o lo que es lo mismo, más de 2 repeticiones. Ordenamos los números y los agregamos:

muestra disgrega duplica ordena junta ~
 tabla "adicion duplica impon [multi duplica] serie [1 1 22]
 
[[2] [5 5] [8] [10 10] [13 13] [17 17] [18] [20 20] [25 25] [26 26] [29 29] [32] 
 [34 34] [37 37] [40 40] [41 41] [45 45] [50 50 50] [52 52] [53 53] [58 58] [61 61] 
 [65 65 65 65] [68 68] [72] [73 73] [74 74] [80 80] [82 82] [85 85 85 85] [89 89] 
 [90 90] [97 97] [98] [100 100] [101 101] [104 104] [106 106] [109 109] [113 113] 
 [116 116] [117 117] [122 122] [125 125 125 125] [128] [130 130 130 130] [136 136] 
 [137 137] [145 145 145 145] [146 146] [148 148] [149 149] [153 153] [157 157] ...

Los contamos y fitramos los que tienen 3 o más repeticiones:

muestra impon [expon [primero cuenta]] disgrega duplica ordena junta ~
 tabla "adicion duplica impon [multi duplica] serie [1 1 22]

[[2 1] [5 2] [8 1] [10 2] [13 2] [17 2] [18 1] [20 2] [25 2] [26 2] [29 2] [32 1] 
 [34 2] [37 2] [40 2] [41 2] [45 2] [50 3] [52 2] [53 2] [58 2] [61 2] 
 [65 4] [68 2] [72 1] [73 2] [74 2] [80 2] [82 2] [85 4] [89 2] 
 [90 2] [97 2] [98 1] [100 2] [101 2] [104 2] [106 2] [109 2] [113 2] 
 [116 2] [117 2] [122 2] [125 4] [128 1] [130 4] [136 2] 
 [137 2] [145 4] [146 2] [148 2] [149 2] [153 2] [157 2] ...

muestra escoge [esmenor lista 2 ul] ~
 impon [expon [primero [cuenta]]] disgrega duplica ordena junta ~
 tabla "adicion duplica impon [multi duplica] serie [1 1 22]

[[50 3] [65 4] [85 4] [125 4] [130 4] [145 4] [170 4] [185 4] [200 3] [205 4] [221 4] 
 [250 4] [260 4] [265 4] [290 4] [305 4] [325 6] [338 3] [340 4] [365 4] [370 4] 
 [377 4] [410 4] [425 6] [442 4] [445 4] [450 3] [481 4] [485 4] [493 4] [500 4] 
 [505 4] [520 4]]

Luego sólo nos interesan los que no son múltiplos de 5:

muestra escoge [modul dista 5] primeros escoge [esmenor lista 2 ul] ~
 impon [expon [primero [cuenta]]] disgrega duplica ordena junta ~
 tabla "adicion duplica impon [multi duplica] serie [1 1 22]

[221 338 377 442 481 493]

muestra cuenta escoge [modul dista 5] primeros escoge [esmenor lista 2 ul] ~
 impon [expon [primero [cuenta]]] disgrega duplica ordena junta ~
 tabla "adicion duplica impon [multi duplica] serie [1 1 22]

6

Definimos una función que nos conteste las preguntas:

para cuentaCasos :a :b
 devuelve cuenta escoge [modul dista 5] primeros escoge [esmenor lista :a ul] ~
 impon [expon [primero [cuenta]]] disgrega duplica ordena junta ~
 tabla "adicion duplica impon [multi duplica] serie frase [1 1] :b
fin

muestra cuentaCasos 2 22
6

La respuesta de b:

muestra rc 10000 / 2
70.7106781186548

muestra cuentaCasos 3 70
185

La respuesta de c:

muestra rc 100000 / 2
223.606797749979

muestra cuentaCasos 4 223
209

3. Pregunta 3

Dados los enteros no negativos A, B y M, a partir de un término inicial x0 se construye la sucesión

xi+1 = (A · xi + B) mod M

donde mod es el resto de la división entera (16 mod 3 = 1, 6 mod 2 = 0, etc.)

Se buscan valores de M tales que

  • los números x0, x1, x2, ..., xM-1 son todos distintos,
  • xM = x0 , y además
  • 4 · (x0 · x1 + x1 · x2 + x2 · x3 + ... + xM-1 · xM) = M · (M-1)2
  1. Encontrar dos valores de M que estén entre 10 y 100
  2. Encontrar dos valores de M que estén entre 100 y 1000

Para cada uno de los cuatro valores de M encontrados, dar también un valor de A y B tales que se cumpla lo pedido.

Ejemplo 1: si A = 9, B = 2, y M = 12, una sucesión posible es x0 = 3, x1 = 5, x2 = 11, x3 = 5, ... En este caso no son todos distintos.

Ejemplo 2: si A = 1, B = 1, y M = 4, una sucesión posible es x0 = 0, x1 = 1, x2 = 2, x3 = 3, (x4 = 0) En este caso 4 · ( x0 · x1 + x1 · x2 + x2 · x3 + x3 · x4) = 4(0 + 2 + 6 + 0) = 32, mientras que M · (M-1)2 = 36, así que no se cumple la tercera condición.

3.1. Posible Solución

Primero creamos una función que devuelva la sucesión dados un x0, a, b y m. Los xs hay que leerlos de derecha a izquierda.

para sucesion :x0 :a :b :m [:s enlista :x0] [:n 0] [:xi modulo :a * (primero :s) + :b :m]
si :n = :m [devuelve :s]
devuelve (sucesion :x0 :a :b :m ponprimero :xi :s :n + 1)
fin

muestra sucesion 3 9 2 12
[11 5 11 5 11 5 11 5 11 5 11 5 3]

Para tener una idea del problema también programamos este procedimiento, que nos muestra qué tan bien cumple la sucesión generada con respecto a las restricciones. La primera línea es la sucesión, la segunda son los elementos diferentes de la sucesión, la tercera son los valores de la tercera condición (deberían ser iguales):

para pruebas :x0 :a :b :m 
haz "s sucesion :x0 :a :b :m 
muestra :s 
muestra esencia :s
muestra lista :m * (:m - 1) * (:m - 1) (4 * suma ingresa "multi lista 2 :s)
fin

pruebas 0 1 5 6
[0 1 2 3 4 5 0]
[0 1 2 3 4 5]
[150 160]
pruebas 0 2 5 6
[3 5 3 5 3 5 0]
[3 5 0]
[150 300]
pruebas 0 3 5 6
[2 5 2 5 2 5 0]
[2 5 0]
[150 200]
pruebas 0 4 5 6
[3 1 5 3 1 5 0]
[3 1 5 0]
[150 124]
pruebas 0 5 5 6
[0 5 0 5 0 5 0]
[0 5]
[150 0]

En lo anterior, vemos que a no influye en el número de elementos diferentes de una sucesión.

pruebas 0 1 1 6
[0 5 4 3 2 1 0]
[0 5 4 3 2 1]
[150 160]
pruebas 0 2 1 6
[3 1 3 1 3 1 0]
[3 1 0]
[150 60]
pruebas 0 3 1 6
[4 1 4 1 4 1 0]
[4 1 0]
[150 80]
pruebas 0 4 1 6
[3 5 1 3 5 1 0]
[3 5 1 0]
[150 172]
pruebas 0 5 1 6
[0 1 0 1 0 1 0]
[0 1]
[150 0]
pruebas 0 6 1 6
[1 1 1 1 1 1 0]
[1 0]
[150 20]

En lo anterior, vemos que b puede variar los valores de la tercer condición, pero que al hacerlo puede afectar la primera condición.

pruebas 0 1 1 7
[0 6 5 4 3 2 1 0]
[0 6 5 4 3 2 1]
[252 280]
pruebas 0 1 2 7
[0 5 3 1 6 4 2 0]
[0 5 3 1 6 4 2]
[252 224]
pruebas 0 1 3 7
[0 4 1 5 2 6 3 0]
[0 4 1 5 2 6 3]
[252 196]
pruebas 0 1 4 7
[0 3 6 2 5 1 4 0]
[0 3 6 2 5 1 4]
[252 196]
pruebas 0 1 5 7
[0 2 4 6 1 3 5 0]
[0 2 4 6 1 3 5]
[252 224]
pruebas 0 1 6 7
[0 1 2 3 4 5 6 0]
[0 1 2 3 4 5 6]
[252 280]
pruebas 0 1 7 7
[0 0 0 0 0 0 0 0]
[0]
[252 0]

En lo anterior, vemos que, para m=7, b puede variar los valores de la tercer condición, pero esto no altera el cumplimiento de la primera y segunda condiciones. b debe ser menor que m. Nos percatamos que 7 es primo.

Definimos una función que nos diga si se cumple la tercera condición para una pareja de valores [b m]

funciona "f3 [aplica [[b m] lista :m * (:m - 1) * (:m - 1) ~
 (4 * suma ingresa "multi lista 2 sucesion 0 1 :b :m)]]

pruebas 0 1 1 7
[0 6 5 4 3 2 1 0]
[0 6 5 4 3 2 1]
[252 280]

muestra f3 [1 7]
[252 280]

funciona "f3 [aplica [[b m] esigual lista :m * (:m - 1) * (:m - 1) ~
 (4 * suma ingresa "multi lista 2 sucesion 0 1 :b :m)]]

muestra f3 [1 7]
0

f3 nos devuelve 0 si para una pareja de valores [b m], la tercera condición no se cumple, caso contrario 1.

Ningún, valor de b fuciona para m=7:

muestra serie frase [1 1] dec 7
[1 2 3 4 5 6]

muestra des "lista expon [[serie frase [1 1] dec] mismo] 7
[[1 7] [2 7] [3 7] [4 7] [5 7] [6 7]]

muestra des [f3 lista] expon [[serie frase [1 1] dec] mismo] 7
[0 0 0 0 0 0]

Definimos una función f3bs que nos diga para cuántos valores de b la tercera condición se cumple para una valor de m dado:

muestra suma des [f3 lista] expon [[serie frase [1 1] dec] mismo] 7
0

funciona "f3bs [suma des [f3 lista] expon [[serie frase [1 1] dec] mismo]]

muestra f3bs 7
0

Buscamos entre los primos entre 10 y 100:

muestra escoge [esigual lista 1 cuenta factora] serie [10 1 91]
[11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97]

muestra impon "f3bs escoge [esigual lista 1 cuenta factora] serie [10 1 91]
[0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0]

muestra escoge "f3bs escoge [esigual lista 1 cuenta factora] serie [10 1 91]
[19 71]

Bingo! Ahora a encontrar los bs.

muestra escoge "f3 des [lista] expon [[serie frase [1 1] dec] mismo] 19
[[4 19] [15 19]]

pruebas 0 1 4 19
[0 15 11 7 3 18 14 10 6 2 17 13 9 5 1 16 12 8 4 0]
[0 15 11 7 3 18 14 10 6 2 17 13 9 5 1 16 12 8 4]
[6156 6156]

pruebas 0 1 15 19
[0 4 8 12 16 1 5 9 13 17 2 6 10 14 18 3 7 11 15 0]
[0 4 8 12 16 1 5 9 13 17 2 6 10 14 18 3 7 11 15]
[6156 6156]

muestra escoge "f3 des [lista] expon [[serie frase [1 1] dec] mismo] 71
[[15 71] [56 71]]

Es decir, para la pregunta a, hay las siguientes soluciones:

  • a=1, b=4, m=19
  • a=1, b=15, m=19
  • a=1, b=15, m=71
  • a=1, b=56, m=71

Pero luego cuando intentamos hacer los mismo para el rango de la pregunta b no obtenemos ninguna respuesta:

muestra escoge "f3bs escoge [esigual lista 1 cuenta factora] serie [100 1 901]
[]

Al ver las respuestas de la pregunta a notamos un patrón, por el cual la siguiente b podría ser 56. Buscamos todos los ms entre 100 y 1000 que pudieran cumplir con la tercera condición, dado un b=56:

muestra escoge "f3 diz [lista] lista 56 serie [100 1 901]
[[56 265]]

pruebas 0 1 56 265
[0 209 153 97 41 250 194 138 82 26 235 179 123 67 11 220 164 108 52 ...
[0 209 153 97 41 250 194 138 82 26 235 179 123 67 11 220 164 108 52 ...
[18469440 18469440]

muestra 265-56
209

pruebas 0 1 209 265
[0 56 112 168 224 15 71 127 183 239 30 86 142 198 254 45 101 157 213 ...
[0 56 112 168 224 15 71 127 183 239 30 86 142 198 254 45 101 157 213 ...
[18469440 18469440]
  • a=1, b=56, m=265
  • a=1, b=209, m=265

Luego debería existir un número m para un b=209:

muestra escoge "f3 diz [lista] lista 209 serie [300 1 701]
[[209 989]]

muestra 989-209
780
  • a=1, b=209, m=989
  • a=1, b=780, m=989

4. Pregunta 4

Una calculadora muestra cada número utilizando 7 segmentos, como se muestra en la figura:

Imagen: cym05r2 numeros7segmentos

4.1. Posible Solución

Definimos un diccionario, que asocie cada dígito con su respectivo número de segmentos. Si buscamos en el diccionario el dígito 1 vemos que la cantidad de segmentos que tiene es 2. Si buscamos en el diccionario el dígito 7 vemos que la cantidad de segmentos que tiene es 4:

haz "segs [[0 6] [1 2] [2 5] [3 5] [4 4] [5 5] [6 6] [7 4] [8 7] [9 6]]

muestra equipara "NUL lista :segs 1
2

muestra equipara "NUL lista :segs 7
4

Dado un número de varios dígitos, buscamos el número de segmentos de cada uno. Por ejemplo, con 107:

muestra des [lista] lista 107 :segs
[[1 [[0 6] [1 2] [2 5] [3 5] [4 4] [5 5] [6 6] [7 4] [8 7] [9 6]]]
 [0 [[0 6] [1 2] [2 5] [3 5] [4 4] [5 5] [6 6] [7 4] [8 7] [9 6]]]
 [7 [[0 6] [1 2] [2 5] [3 5] [4 4] [5 5] [6 6] [7 4] [8 7] [9 6]]]]
 
muestra diz [equipara "NUL lista] lista :segs 107 
[2 6 4]

Sumamos dichas cifras. A toda esta funciona la llamamos total

muestra suma diz [equipara "NUL lista] lista :segs 107 
12

haz "total [[num] suma diz [equipara "NUL lista ] lista :segs :num] 

Vemos que total funciona para el número 107 y nos indica que para mostrarse necesita 12 segmentos:

muestra invoca :total 107
12

Cuáles son algunos múltiplos de 107:

muestra serie [107 107 10]
[107 214 321 428 535 642 749 856 963 1070]

Intentamos varios de ellos hasta encontrar uno que tenga 16 segmentos:

muestra invoca :total 214
11

muestra invoca :total 321
12

muestra invoca :total 428
16

5. Pregunta 5

Agustín quiere llenar el siguiente tablero de 4x4 con números enteros distintos de manera que el número que está en cada casilla sea un múltiplo del número que está en la casilla que está a su izquierda y de la casilla que está abajo. Y además se quiere que en la esquina inferior izquierda esté el número 1, en la esquina superior derecha este el número 192433829.

Imagen: cym05r2 tablerocon 192433829

5.1. Posible Solución

Ya que el número de la esquina superior derecha debe ser el múltiplo de varios otros vemamos cuáles son los factores primos que lo componen:

muestra factora 192433829
[7 7 17 17 107 127]

El trabajo de exploración se haría más facilmente usando una hoja electrónica. A falta de ella simularemos su funcionamiento para una matriz a de dimensión 5x5. Donde están los ceros calcularemos el mínimo común multiplo de la casilla que está a la izquierda y de la casilla que está abajo. De esta forma, las casillas que tienen ceros luego cumplirán un requisito de Agustín.

haz "a {
 { 1 0 0 0 0}
 { 1 0 0 0 0}
 { 1 0 0 0 0}
 { 1 0 0 0 0}
 { 1 1 1 1 1}}
 
para intento :a :b
desde [4 1 -1] [
 desde [2 5 1] [
  ponelemento :j ~
   elemento :i :a ~
   (elemento :j - 1 elemento :i :b) * mcm lista ~
   (elemento :j elemento :i + 1 :a) ~
   (elemento :j - 1 elemento :i :a) ~
 ]
]

escribemat impon [menosprimero arreglo_lista]  menosultimo arreglo_lista :a
fin

Usaremos otra matriz b que tenga factores adicionales que ubicaremos estratégicamente para hacer que las casillas de a sean diferentes de 1

intento :a {
 {   1   1   1   1}
 {   1   1   1   1}
 {   1   1   1   1}
 {   1   1   1   1}}

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
intento :a {
 {   1   1   1   1}
 {   1   1   1   1}
 {   1   1   1   1}
 {   2   1   1   1}}

2 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2
intento :a {
 {   1   1   1   1}
 {   1   1   1   1}
 {   1   1   1   1}
 {   1   7   7   1}}

1 7 49 49
1 7 49 49
1 7 49 49
1 7 49 49
intento :a {
 {   7  17 107   1}
 {   1   1   1   7}
 {   1   1   1  17}
 {   1   1   1 127}}

7 119 12733 1617091
1   1     1   15113
1   1     1    2159
1   1     1     127
intento :a {
 {   7   1   1   1}
 {   7   1   1   1}
 { 107   1   1   1}
 {   1 127  17  17}}

5243 665861 11319637 192433829
 749  95123  1617091  27490547
 107  13589   231013   3927221
   1    127     2159     36703

6. Pregunta 6

Se tienen tiras de caritas en fila. Algunas están bien y otras están al revés. Una carita del medio es feliz si alguna de sus dos vecinas mira para el mismo lado. Una carita de la punta es feliz si su única vecina mira para el mismo lado.

Imagen: cym05r2 carasfelicesytristes

En el ejemplo de la figura hay 5 caritas felices: 2 bien y 3 al revés.

a) Consideramos todas las posibles filas que tienen 5 caritas para arriba y 5 para abajo. ¿Cuál es el promedio de caritas felices?

b) ¿Y si consideramos las filas con 10 y 10 caritas?

6.1. Posible Solución

Trataremos de definir una función que nos diga cuantas caras son felices dada una fila. Primero parcharemos los extremos de la fila con cruces:

muestra ponultimo "x ponprimero "x [r b r b r b r b r b]
[x r b r b r b r b r b x]

funciona "ponxs [ponultimo "x ponprimero "x]

Ahora hacemos grupos de 3, de la cara y las vecinas:

muestra ingresa "mismo lista 3 ponxs [r b r b r b r b r b]
[[x r b] [r b r] [b r b] [r b r] [b r b] [r b r] [b r b] [r b r] [b r b] [r b x]]

Trabajemos con un grupo. Comparamos la cara con las vecinas. Si son iguales la comparación devolverá 1. Combinamos las dos comparaciones sumándolas:

muestra ingresa "mismo lista 2 [x r b]
[[x r] [r b]]
muestra ingresa [esigual] lista 2 [x r b]
[0 0]
muestra suma ingresa [esigual] lista 2 [x r b]
0

De esta manera definimos la función alegre?

funciona "alegre? [suma ingresa [esigual] lista 2]

muestra ingresa "alegre? lista 3 ponxs [r b r b r b r b r b]
[0 0 0 0 0 0 0 0 0 0]

muestra ingresa "alegre? lista 3 ponxs [r b r b b b r b r r]
[0 0 0 1 2 1 0 0 1 1]

Vemos que sería mejor modificar la función alegre? para que nos devuelva sólo 0 si la cara no está alegre o 1 si sí lo está:

funciona "alegre? [signo suma ingresa [esigual] lista 2]

muestra ingresa "alegre? lista 3 ponxs [r b r b b b r b r r]
[0 0 0 1 1 1 0 0 1 1]

De esta menara podremos sumar las caras alegres así:

muestra suma ingresa "alegre? lista 3 ponxs [r b r b b b r b r r]
5

funciona "cuentafelices [suma ingresa "alegre? lista 3 ponxs]

muestra cuentafelices [r b r b b b r b r r]
5

En un principio teníamos la idea de encontrar todas las permutaciones de 10 elementos de esta secuencia [r r r r r b b b b b]. Pero vemos que sería muchas, y se repetirían:

muestra permu  [10 10]
3628800

Por ejemplo:

[r1 r2 r3 r4 r5 b1 b2 b3 b4 b5]

[r2 r1 r3 r4 r5 b1 b2 b3 b4 b5]

Serían dos permutaciones distintas pero para nuestros propósitos serían iguales. Buscamos otro método. Vemos que las posibles combinaciones de 5 elementos a partir de 10 elementos son muchas menos. Las calculamos:

muestra combi [10 5]
252

muestra combiconj lista 5 iota 10
[[0 1 2 3 4] [0 1 2 3 5] [0 1 2 3 6] [0 1 2 3 7] [0 1 2 3 8] [0 1 2 3 9] 
 [0 1 2 4 5] [0 1 2 4 6] [0 1 2 4 7] [0 1 2 4 8] [0 1 2 4 9] [0 1 2 5 6]
 [0 1 2 5 7] [0 1 2 5 8] [0 1 2 5 9] [0 1 2 6 7] [0 1 2 6 8] [0 1 2 6 9]
 [0 1 2 7 8] [0 1 2 7 9] ...]

Vemos que, si consideramos a estos números como índices que nos dicen la posición de las caras hacia arriba, podemos crear filas similares a las que teníamos antes. Y vemos que cuentafelices también nos sirve para contar este tipo de filas:

muestra des [esmiembro lista] lista [0 1 2 3 4 5 6 7 8 9] [0 1 2 3 6] 
[1 1 1 1 0 0 1 0 0 0]

muestra cuentafelices [r b r b b b r b r r]
5

muestra cuentafelices [1 0 1 0 0 0 1 0 1 1]
5

funciona "gencaras [des [esmiembro lista] lista [0 1 2 3 4 5 6 7 8 9]]

muestra gencaras [0 1 2 3 6] 
[1 1 1 1 0 0 1 0 0 0]

muestra impon [cuentafelices gencaras] combiconj lista 5 iota 10
[10 8 9 9 8 9 9 6 7 6 7 10 7 7 8 10 6 8 9 7 10 9 7 8 7 8 7 4 4 5 8 4 6 7 5 8 10 
 8 8 9 8 4 6 8 6 9 10 7 9 7 5 9 9 8 8 10 8 6 7 6 7 7 4 4 5 8 4 6 7 5 8 6 4 4 5 4
 0 2 4 2 5 7 4 6 4 2 6 6 5 5 7 9 7 7 8 8 4 6 8 6 9 7 4 6 4 2 6 7 6 6 8 9 6 8 7 5 
 9 6 5 5 8 8 7 8 7 9 9 7 8 7 8 8 5 5 6 9 5 7 8 6 9 8 6 6 7 6 2 4 6 4 7 9 6 8 6 4
 8 8 7 7 9 7 5 5 6 6 2 4 6 4 7 5 2 4 2 0 4 5 4 4 6 8 5 7 6 4 8 5 4 4 7 7 6 7 6 8 
 10 8 8 9 9 5 7 9 7 10 9 6 8 6 4 8 9 8 8 10 8 5 7 6 4 8 5 4 4 7 8 7 8 7 9 10 7 9 
 8 6 10 8 7 7 10 7 6 7 6 9 9 8 9 9 8 10]

muestra media impon [cuentafelices gencaras] combiconj lista 5 iota 10
6.66666666666667

es fracciona 6.66666666666667
20 3

Es decir, 20/3.

muestra combi list 20 10
184756

funciona "gencaras [des [esmiembro lista] lista ~
 [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]]

muestra media impon [cuentafelices gencaras] combiconj lista 10 iota 20
6.84210526315789

muestra fracciona 6.84210526315789
130 19

Es decir, 130/19.

7. Preguntas, Dudas, Comentarios, Peticiones

Síguenos en Facebook

8. Enlaces

Lenguaje de Programación Logo

Soluciones de Problemas de otros niveles


Generado con PureJoy. Creación: 11:49 - Dec 15, 2017. Última Modificación: 17:12 - Apr 02, 2023