Ejercicios del Capítulo 16

Volver al índice.

  1. (10 pts) Empieza por el programa que se encuentra al final del Capítulo 16. Modifícalo de forma que no solo cambie el bloque sobre el que el jugador hace click, sino también los bloques de alrededor. Asegúrate que, si por error, el jugador hace click sobre algún borde, el programa no se cerrará y podrá manejar correctamente el click. Pega el código aquí debajo.
  2. (10 pts)Escribe una función que busque famosos. Empieza por una función llamada comprobar_famoso que tome como parámetro una matriz llamada grid de n por n elementos,
    donde grid[i][j] = 1 si el personaje i conoce al personaje j, y grid[i][j] = 0 en caso contrario.
    (Asume que grid[i][i] = 1 para cada i, ya que cada personaje se conoce a sí mismo/misma.)
    Un famoso es una persona conocida por todo el mundo y que no conoce a nadie más que a sí mismo.

    Escribe una función que dada la matriz grid, imprima todos los famosos.

    Por ejemplo, en la retícula siguiente, la persona 2 es un famoso:

         0  1  2  3
      --------------
    0 |  1  1  1  0
    1 |  0  1  1  0
    2 |  0  0  1  0
    3 |  1  0  1  1
    

    En el ejemplo siguiente, no hay ningún famoso:

         0  1  2  3  4
      ----------------
    0 |  1  1  1  0  1
    1 |  0  1  1  0  1
    2 |  0  0  1  0  0
    3 |  1  0  1  1  1
    4 |  1  0  0  1  1
    

    Recuerda: Una matriz puede representarse como una lista de listas, donde cada sublista es una fila de la matriz. Por ejemplo, la primera matriz podría representarse como:

    grid = [ [1, 1, 1, 0], [0, 1, 1, 0], [0, 0, 1, 0], [1, 0, 1, 1] ].
    

    O puedes usar múltiples líneas para definir la matriz:

    grid = [ [1, 1, 1, 0],
             [0, 1, 1, 0],
             [0, 0, 1, 0],
             [1, 0, 1, 1] ]
    

    Puedes probar tu función contra el código siguiente:

    print("Test 1, debería mostrar que el #2 es famoso(a).")
    grid = [ [1, 1, 1, 0],
             [0, 1, 1, 0],
             [0, 0, 1, 0],
             [1, 0, 1, 1] ]
    
    comprobar_famoso(grid)
    
    print("Test 2, debería mostrar que no hay ningún famoso(a).")
    grid = [ [1, 1, 1, 0, 1],
             [0, 1, 1, 0, 1],
             [0, 0, 1, 0, 0],
             [1, 0, 0, 1, 1],
             [1, 0, 0, 1, 1] ]
    
    comprobar_famoso(grid)
    
    print("Test 3, debería mostrar que el #2 es famoso(a).")
    grid = [ [1, 1, 1, 0, 1],
             [0, 1, 1, 0, 1],
             [0, 0, 1, 0, 0],
             [0, 0, 1, 0, 1],
             [1, 0, 1, 1, 1] ]
    
    comprobar_famoso(grid)
    
    print("Test 4, debería mostrar que no hay ningún famoso(a).")
    grid = [ [1, 1, 1, 0, 1],
             [0, 1, 1, 0, 1],
             [1, 0, 1, 0, 0],
             [0, 0, 1, 0, 1],
             [1, 0, 1, 1, 1] ]
    
    comprobar_famoso(grid)