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_startenc_start, enin 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_startenc_start(controleer dit eerst!), ofals
r_startofc_startbuiten de grenzen vanavalt, of(zelfs als er ruimte binnen de grenzen is), als er GEEN drie-op-een-rij-patroon binnen
ais die helemaal bestaat uit het karakterchin de specifieke richting beginnend bij de locatie gegeven doorr_startenc_start.
Elke functie moet daarentegen True teruggeven
alleen maar als er een drie-op-een-rij-patroon in
ais die helemaal bestaat uit het elementchin de specifieke richting beginnend bij de locatie vanr_startenc_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