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
enc_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_start
enc_start
(controleer dit eerst!), ofals
r_start
ofc_start
buiten de grenzen vana
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 karakterch
in de specifieke richting beginnend bij de locatie gegeven doorr_start
enc_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 elementch
in de specifieke richting beginnend bij de locatie vanr_start
enc_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