code: def _compute_hline_scores(self):
          
          M, N, L = self.M, self.N, self.L
          hline_score = {}
          for y in range(N):
              laststart = [0 if (0, y, 0, k) in self else None for k in range(L)]
              for x in range(M):
                  block = [0] * (x + 1)
                  for k in range(L):
                      if (x, y, 0, k) not in self:
                          laststart[k] = None
                      elif laststart[k] is None:
                          laststart[k] = x
                          block[x] += 1
                      elif x and (x, y, 0, k) not in self[x - 1, y, 0, k]:
                          laststart[k] = x
                      else:
                          for x1 in range(laststart[k], x + 1):
                              block[x1] += 1
                  for x1 in range(x + 1):
                      hline_score[y, x1, x] = block[x1]
          self._hline_score = hline_score
docs: Does the hard work to prepare ``hline_score``.