Boter kaas en eieren.

Boter kaas en eieren.#

De eerste vier functies die je gaat schrijven controleren of er drie op een rij is

  • in een specifieke richting (opgenomen in de functienaam),

  • voor een specifiek karakter ch,

  • op een specifieke startrij- en kolom: r_start en c_start, en

  • in een gegeven tweedimensionale array a.

Elk van de functies moet False teruggeven

  • als er GEEN RUIMTE is voor drie op een rij vanaf de startpositie gegeven door r_start en c_start (controleer dit eerst!), of

  • als r_start of c_start buiten de grenzen van a valt, of

  • (zelfs als er ruimte binnen de grenzen is), als er GEEN drie-op-een-rij-patroon binnen a is die helemaal bestaat uit het karakter ch in de specifieke richting beginnend bij de locatie gegeven door r_start en c_start.

Elke functie moet daarentegen True teruggeven

  • alleen maar als er een drie-op-een-rij-patroon in a is die helemaal bestaat uit het element ch in de specifieke richting beginnend bij de locatie van r_start en c_start.

def in_a_row_3_east(ch, r_start, c_start, a):
    # voor de functie voor drie op een rij naar het oosten:

    rows = len(a)      # aantal rijen is len(a)
    cols = len(a[0])   # aantal kolommen is len(a[0])

    if r_start >= rows:
        return False  # buiten de grenzen van de rijen

    # andere grenscontroles...
    if c_start > cols - 3:
        return False  # buiten de grenzen van de kolommen

    # zijn alle gegevenselementen correct?
    for i in range(3):                   # lusindex is i
        if a[r_start][c_start+i] != ch:  # controleer op fouten
            return False                 # fout gevonden; geef False terug

    return True                          # geen fouten gevonden in de lus; geef True terug

def in_a_row_3_south(ch, r_start, c_start, a):
    # voor de functie voor drie op een rij naar het zuiden:

    rows = len(a)      # aantal rijen is len(a)
    cols = len(a[0])   # aantal kolommen is len(a[0])

    if c_start >= cols:
        return False  # buiten de grenzen van de kolommen

    # andere grenscontroles...
    if r_start > rows - 3:
        return False  # buiten de grenzen van de rijen

    # zijn alle gegevenselementen correct?
    for i in range(3):                   # lusindex is i
        if a[r_start+i][c_start] != ch:  # controleer op fouten
            return False                 # fout gevonden; geef False terug

    return True                          # geen fouten gevonden in de lus; geef True terug

def in_a_row_3_southeast(ch, r_start, c_start, a):
    # voor de functie voor drie op een rij naar het zuidoosten:

    rows = len(a)    
    cols = len(a[0])   

    if c_start > cols - 3:
        return False  

    
    if r_start > rows - 3:
        return False  

    
    for i in range(3):                   
        if a[r_start+i][c_start+i] != ch:  
            return False                

    return True  
def in_a_row_3_northeast(ch, r_start, c_start, a):
    # voor de functie voor drie op een rij naar het noordoosten:

    rows = len(a)    
    cols = len(a[0])   

    if c_start > cols - 3:
        return False  

    
    if r_start < rows - 3:
        return False  

    
    for i in range(3):                   
        if a[r_start-i][c_start+i] != ch:  
            return False                

    return True
def in_a_row_n_east(ch, r_start, c_start, a, n):
    # voor de functie voor drie op een rij naar het oosten:

    rows = len(a)      # aantal rijen is len(a)
    cols = len(a[0])   # aantal kolommen is len(a[0])

    if r_start >= rows:
        return False  # buiten de grenzen van de rijen

    # andere grenscontroles...
    if c_start > cols - n:
        return False  # buiten de grenzen van de kolommen

    # zijn alle gegevenselementen correct?
    for i in range(n):                   # lusindex is i
        if a[r_start][c_start+i] != ch:  # controleer op fouten
            return False                 # fout gevonden; geef False terug

    return True                          # geen fouten gevonden in de lus; geef True terug

def in_a_row_n_south(ch, r_start, c_start, a, n):
    # voor de functie voor drie op een rij naar het zuiden:

    rows = len(a)      # aantal rijen is len(a)
    cols = len(a[0])   # aantal kolommen is len(a[0])

    if c_start >= cols:
        return False  # buiten de grenzen van de kolommen

    # andere grenscontroles...
    if r_start > rows - n:
        return False  # buiten de grenzen van de rijen

    # zijn alle gegevenselementen correct?
    for i in range(n):                   # lusindex is i
        if a[r_start+i][c_start] != ch:  # controleer op fouten
            return False                 # fout gevonden; geef False terug

    return True                          # geen fouten gevonden in de lus; geef True terug

def in_a_row_n_southeast(ch, r_start, c_start, a, n):
    # voor de functie voor drie op een rij naar het zuidoosten:

    rows = len(a)    
    cols = len(a[0])   

    if c_start > cols - n:
        return False  

    
    if r_start > rows - n:
        return False  

    
    for i in range(n):                   
        if a[r_start+i][c_start+i] != ch:  
            return False                

    return True  

def in_a_row_n_northeast(ch, r_start, c_start, a, n):
    # voor de functie voor drie op een rij naar het noordoosten:

    rows = len(a)    
    cols = len(a[0])   

    if c_start > cols - n:
        return False  

    
    if r_start < rows - n:
        return False  

    
    for i in range(n):                   
        if a[r_start-i][c_start+i] != ch:  
            return False                

    return True