code: def compare_report_print(sorted_list, scores, best_name):
      """
      Return compare report.
  
      :param sorted_list: sorted list of confusion matrices
      :type sorted_list: list
      :param scores: scores of confusion matrices
      :type scores: dict
      :param best_name: best confusion matrix name
      :type best_name: str
      :return: printable result as str
      """
      title_items = ["Rank", "Name", "Class-Score", "Overall-Score"]
      class_scores_len = map(
          lambda x: len(str(x["class"])), list(scores.values())
      )
      shifts = [
          "%-" + str(len(sorted_list) + 4) + "s",
          "%-"
          + str(max(map(lambda x: len(str(x)), sorted_list)) + 4)
          + "s",
          "%-" + str(max(class_scores_len) + 11) + "s",
      ]
      result = ""
      result += "Best : " + str(best_name) + "\n\n"
      result += (
          ("".join(shifts)) % tuple(title_items[:-1])
          + title_items[-1]
          + "\n"
      )
      prev_rank = 0
      for index, cm in enumerate(sorted_list):
          rank = index
          if (
              scores[sorted_list[rank]]
              == scores[sorted_list[prev_rank]]
          ):
              rank = prev_rank
          result += (
              ("".join(shifts))
              % (str(rank + 1), str(cm), str(scores[cm]["class"]))
              + str(scores[cm]["overall"])
              + "\n"
          )
          prev_rank = rank
      return result
  
imports: from __future__ import division
  from functools import partial
  from .pycm_param import *
  from .pycm_util import rounder, sort_char_num
  import webbrowser
label_desc: Use image node_id 15 for calling a global function with example usage: compare_report_print(sorted_list, scores, best_name) and returns: result