code: def elect(opts)
        scores = []
        @remotes.iterate(@log, farm: @farm, threads: opts['threads']) do |r|
          uri = '/'
          res = r.http(uri).get
          r.assert_code(200, res)
          json = JsonPage.new(res.body, uri).to_hash
          score = Score.parse_json(json['score'])
          r.assert_valid_score(score)
          r.assert_score_ownership(score)
          r.assert_score_strength(score) unless opts['ignore-score-weakness']
          r.assert_score_value(score, opts['min-score']) unless opts['ignore-score-value']
          if r.master? && opts['--ignore-masters']
            @log.debug("#{r} ignored, it's a master node")
            next
          end
          scores << score
        end
        scores = scores.sample(opts['max-winners'])
        if scores.empty?
          @log.info("No winners elected out of #{@remotes.all.count} remotes")
        else
          scores.each { |s| @log.info("Elected: #{s.reduced(4)}") }
        end
        scores.sort_by(&:value).reverse
      end
docs: Returns an array of Zold::Score