docs: def map_sprinkler(self, sx, sy, watered_crop='^', watered_field='_', dry_field=' ', dry_crop='x'):
          """
          Return a version of the ASCII map showing reached crop cells.
          """
          # convert strings (rows) to lists of characters for easier map editing
          maplist = [list(s) for s in self.maplist]
  
          for y, row in enumerate(maplist):
              for x, cell in enumerate(row):
                  if sprinkler_reaches_cell(x, y, sx, sy, self.r):
                      if cell == 'x':
                          cell = watered_crop
                      else:
                          cell = watered_field
                  else:
                      cell = dry_crop if cell == 'x' else dry_field
  
                  maplist[y][x] = cell
  
          maplist[sy][sx] = 'O'  # sprinkler
  
          return '\n'.join([''.join(row) for row in maplist])