def same_col(self, bag):
        """
        Select cells in this bag which are in the same
        row as a cell in the other `bag`.
        """
        # TODO: make less crap
        all_x = set()
        for cell in bag.unordered_cells:
            all_x.add(cell.x)
        return self.filter(lambda c: c.x in all_x)