Sha256: 46a7ca6cff6d889fb52616678c5cd790d26923b9dfad84c1aa48772a1cd30d4d

Contents?: true

Size: 626 Bytes

Versions: 1

Compression:

Stored size: 626 Bytes

Contents

module EulersDayOff
  class Scorer

    attr_writer :word_list

    def initialize(word_list)
      @word_list = word_list
    end

    def score(board)
      _score_board(board) + _score_board(board.transpose)
    end

    private

    def _score_board(board)
      board.inject(0) do |acc, row|
        return acc unless row.compact.length >= 3
        acc + _score_row(row)
      end
    end

    def _score_row(row)
      (3..row.compact.size).to_a.reverse.each do |length|
        row.each_cons(length) do |cons|
          return length if @word_list.include?(cons.join)
        end
      end

      0
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
eulers_day_off-0.1.0 lib/eulers_day_off/scorer.rb